Files
luban-lite-t3e-pro/bsp/artinchip/include/hal/hal_psadc.h

58 lines
1.3 KiB
C
Raw Normal View History

2023-08-30 16:21:18 +08:00
/*
* Copyright (c) 2022-2023, ArtInChip Technology Co., Ltd
*
* SPDX-License-Identifier: Apache-2.0
*
* Authors: Li Siyao <siyao.li@artinchip.com>
*/
#ifndef _ARTINCHIP_HAL_PSADC_H_
#define _ARTINCHIP_HAL_PSADC_H_
#include "aic_osal.h"
2024-04-03 16:40:57 +08:00
#define AIC_PSADC_FIFO1_NUM_BITS 20
#define AIC_PSADC_FIFO2_NUM_BITS 12
#define AIC_PSADC_TIMEOUT 1000 /* 1000 ms */
#define AIC_PSADC_POLL_READ_TIMEOUT 1000 /* 1000 times */
#define AIC_PSADC_QUEUE_LENGTH 8
2023-08-30 16:21:18 +08:00
enum aic_psadc_mode {
AIC_PSADC_MODE_SINGLE = 0,
AIC_PSADC_MODE_PERIOD = 1
};
2024-04-03 16:40:57 +08:00
enum aic_psadc_queue_type {
AIC_PSADC_QC = 0,
AIC_PSADC_Q1 = 1,
AIC_PSADC_Q2 = 2
};
2023-08-30 16:21:18 +08:00
struct aic_psadc_ch {
u8 id;
u8 available;
enum aic_psadc_mode mode;
u8 fifo_depth;
2024-04-03 16:40:57 +08:00
};
2023-08-30 16:21:18 +08:00
2024-04-03 16:40:57 +08:00
struct aic_psadc_queue {
u8 id;
int type;
u8 nodes_num;
2023-08-30 16:21:18 +08:00
aicos_sem_t complete;
};
2024-01-27 08:47:24 +08:00
void hal_psadc_enable(int enable);
void hal_psadc_single_queue_mode(int enable);
void hal_psadc_qc_irq_enable(int enable);
2024-04-03 16:40:57 +08:00
int hal_psadc_ch_init();
2024-01-27 08:47:24 +08:00
irqreturn_t hal_psadc_isr(int irq, void *arg);
2024-04-03 16:40:57 +08:00
int hal_psadc_read(u32 *val, u32 timeout);
int hal_psadc_read_poll(u32 *val, u32 timeout);
2023-08-30 16:21:18 +08:00
struct aic_psadc_ch *hal_psadc_ch_is_valid(u32 ch);
void hal_psadc_set_ch_num(u32 num);
2024-04-03 16:40:57 +08:00
void aich_psadc_status_show(void);
int hal_psadc_set_queue_node(int queue, int ch, int node_ordinal);
2023-08-30 16:21:18 +08:00
#endif