2023-08-30 16:21:18 +08:00
|
|
|
/*
|
2024-09-03 11:16:08 +08:00
|
|
|
* Copyright (c) 2022-2024, ArtInChip Technology Co., Ltd
|
2023-08-30 16:21:18 +08:00
|
|
|
*
|
|
|
|
|
* SPDX-License-Identifier: Apache-2.0
|
|
|
|
|
*
|
|
|
|
|
* Authors: matteo <duanmt@artinchip.com>
|
|
|
|
|
*/
|
|
|
|
|
|
|
|
|
|
#ifndef _ARTINCHIP_HAL_PWMCS_H_
|
|
|
|
|
#define _ARTINCHIP_HAL_PWMCS_H_
|
|
|
|
|
|
|
|
|
|
#include "aic_common.h"
|
|
|
|
|
|
|
|
|
|
#ifdef CONFIG_FPGA_BOARD_ARTINCHIP
|
|
|
|
|
#define PWMCS_CLK_RATE 24000000 /* 24 MHz */
|
|
|
|
|
#else
|
|
|
|
|
#define PWMCS_CLK_RATE 200000000 /* 200 MHz */
|
|
|
|
|
#endif
|
|
|
|
|
|
|
|
|
|
#define CAP_MAX_FREQ 1000000 /* 1MHz */
|
|
|
|
|
|
2024-01-27 08:47:24 +08:00
|
|
|
#ifdef AIC_HRTIMER_DRV
|
|
|
|
|
#define AIC_CAP_CH_NUM AIC_HRTIMER_CH_NUM
|
|
|
|
|
#endif
|
|
|
|
|
|
|
|
|
|
#ifdef AIC_CAP_DRV
|
|
|
|
|
#define AIC_CAP_CH_NUM AIC_CAPS_CH_NUM
|
|
|
|
|
#endif
|
|
|
|
|
|
|
|
|
|
#define CAP_EVENT3_FLG BIT(4)
|
|
|
|
|
|
|
|
|
|
struct aic_cap_data {
|
|
|
|
|
u8 id;
|
2024-09-03 11:16:08 +08:00
|
|
|
u8 flt_sel;
|
2024-01-27 08:47:24 +08:00
|
|
|
u32 freq;
|
|
|
|
|
float duty;
|
|
|
|
|
};
|
|
|
|
|
|
2023-08-30 16:21:18 +08:00
|
|
|
void hal_cap_ch_init(u32 ch);
|
|
|
|
|
void hal_cap_ch_deinit(u32 ch);
|
|
|
|
|
|
|
|
|
|
void hal_cap_int_enable(u32 ch, int enable);
|
2024-01-27 08:47:24 +08:00
|
|
|
u32 hal_cap_int_sta(void);
|
2023-08-30 16:21:18 +08:00
|
|
|
u32 hal_cap_is_pending(u32 ch);
|
|
|
|
|
int hal_cap_set_freq(u32 ch, u32 freq);
|
|
|
|
|
int hal_cap_set_cnt(u32 ch, u32 cnt);
|
|
|
|
|
int hal_cap_get(u32 ch);
|
2024-09-03 11:16:08 +08:00
|
|
|
void hal_cap_in_flt_sel(u32 ch, u8 flt_sel);
|
2024-01-27 08:47:24 +08:00
|
|
|
int hal_cap_in_config(u32 ch);
|
|
|
|
|
u32 hal_cap_reg0(u32 ch);
|
|
|
|
|
u32 hal_cap_reg1(u32 ch);
|
|
|
|
|
u32 hal_cap_reg2(u32 ch);
|
|
|
|
|
u32 hal_cap_int_flg(u32 ch);
|
|
|
|
|
void hal_cap_clr_flg(u32 ch, u32 stat);
|
2023-08-30 16:21:18 +08:00
|
|
|
int hal_cap_enable(u32 ch);
|
|
|
|
|
int hal_cap_disable(u32 ch);
|
|
|
|
|
void hal_cap_cnt_start(u32 ch);
|
|
|
|
|
void hal_cap_cnt_stop(u32 ch);
|
|
|
|
|
|
|
|
|
|
int hal_cap_init(void);
|
|
|
|
|
int hal_cap_deinit(void);
|
|
|
|
|
|
|
|
|
|
void hal_cap_status_show(void);
|
|
|
|
|
|
|
|
|
|
#endif // end of _ARTINCHIP_HAL_PWMCS_H_
|