#ifndef __IPQ_AVM_H__ #define __IPQ_AVM_H__ /* Backport defines used in linux-3.14 */ #define ADSS_AUDIO_PLL_CONFIG_REG 0x38 #define AUDIO_PLL_CONFIG_REFDIV(x) (x << 0) #define AUDIO_PLL_CONFIG_REFDIV_MASK (0x7 << 0) #define AUDIO_PLL_CONFIG_PLLPWD (1 << 5) #define AUDIO_PLL_CONFIG_POSTPLLDIV(x) (x << 7) #define AUDIO_PLL_CONFIG_POSTPLLDIV_MASK (0x7 << 7) #define ADSS_AUDIO_PLL_MODULATION_REG 0x3C #define AUDIO_PLL_MODULATION_TGT_DIV_INT(x) (x << 1) #define AUDIO_PLL_MODULATION_TGT_DIV_MASK (0x1FFFFFFE) #define AUDIO_PLL_MODULATION_TGT_DIV_FRAC(x) (x << 11) #define ADSS_AUDIO_PLL_MOD_STEP_REG 0x40 #define ADSS_CURRENT_AUDIO_PLL_MODULATION_REG 0x44 #define ADSS_AUDIO_PLL_CONFIG1_REG 0x48 #define AUDIO_PLL_CONFIG1_SRESET_L(x) (x << 0) #define ADSS_AUDIO_ATB_SETTING_REG 0x4C #define ADSS_GLB_AUDIO_MODE2_REG 0x34 #define ADSS_AUDIO_RXB_CFG_MUXR_REG 0x104 #define ADSS_AUDIO_RXB_MISC_REG 0x108 #define ADSS_AUDIO_RXB_CBCR_REG 0x10C #define ADSS_AUDIO_RXM_CMD_RCGR_REG 0x120 #define ADSS_AUDIO_RXM_CFG_RCGR_REG 0x124 #define ADSS_AUDIO_RXM_MISC_REG 0x128 #define ADSS_AUDIO_RXM_CBCR_REG 0x12C #define ADSS_AUDIO_TXB_CFG_MUXR_REG 0x144 #define ADSS_AUDIO_TXB_MISC_REG 0x148 #define ADSS_AUDIO_TXB_CBCR_REG 0x14C #define ADSS_AUDIO_TXM_CMD_RCGR_REG 0x160 #define ADSS_AUDIO_TXM_CFG_RCGR_REG 0x164 #define ADSS_AUDIO_TXM_MISC_REG 0x168 #define ADSS_AUDIO_TXM_CBCR_REG 0x16C #define ADSS_AUDIO_SAMPLE_CBCR_REG 0x18C /** * ipq-adss-avm.c */ int is_IPQ807x(void); int is_IPQ4019(void); void tdm_if_adss_print_status(const char *prefix, char *txt, unsigned int txt_size); int tdm_if_adss_config_init(unsigned int slots, unsigned int rxdelay, unsigned int txdelay, unsigned int master); void tdm_if_adss_config_exit(void); int tdm_if_adss_dma_init(void *refhandle, int (*TxData)(void *refhandle, void *buf), int (*RxData)(void *refhandle, void *buf), unsigned int cpu, unsigned int only_rxirq, unsigned int slots, unsigned int fs_per_dma, unsigned int desc_num); void tdm_if_adss_dma_start(void); void tdm_if_adss_dma_stop(void); void tdm_if_adss_dma_irqcnt(unsigned long *rx_irqcnt, unsigned long *tx_irqcnt); void tdm_if_adss_dma_irqcnt_reset(void); void tdm_if_adss_dma_exit(void); /** * ipq-lpass-avm.c */ int is_IPQ5018(void); void tdm_if_lpass_print_status(const char *prefix, char *txt, unsigned int txt_size); int tdm_if_lpass_config_init(unsigned int slots, unsigned int rxdelay, unsigned int txdelay, unsigned int bit_width, unsigned int master); void tdm_if_lpass_config_exit(void); int tdm_if_lpass_dma_init(void *refhandle, int (*TxData)(void *refhandle, void *buf), int (*RxData)(void *refhandle, void *buf), unsigned int cpu, unsigned int only_rxirq, unsigned int slots, unsigned int fs_per_dma); void tdm_if_lpass_dma_start(void); void tdm_if_lpass_dma_stop(void); void tdm_if_lpass_dma_irqcnt(unsigned long *rx_irqcnt, unsigned long *tx_irqcnt); void tdm_if_lpass_dma_irqcnt_reset(void); void tdm_if_lpass_dma_exit(void); /** * ipq-avm-common.c */ char *snprint_register_bitformat(char *erg, int erg_len, unsigned int value, const char *bitformat); int debugcmd_scan_args(const char *buf, unsigned int args[], int argc, int as_hex); struct _debugcmd_profile { const char *cmd; const char *help; int type; int argc; int ashex; }; unsigned char debugcmd_get_param(const struct _debugcmd_profile *pcmd_table, const char **_p, unsigned int args[], unsigned int max_args, unsigned int *scanned); #define SKIP_SPACE(a) { while (*(a) && (*(a) == ' ' || *(a) == '\t')) (a)++; } /** * ptxt == NULL: use printk */ #define snprintf_add(ptxt, txtlen, args...) \ do { \ if (ptxt) { \ int local_add_len = snprintf(ptxt, txtlen, args); \ if (local_add_len > 0) { \ int tail = min_t(int, txtlen, local_add_len); \ (ptxt) += tail, (txtlen) -= tail; \ } \ } else \ pr_err(args); \ } while (0) #endif /* __IPQ_AVM_H__ */