cachepc-linux

Fork of AMDESE/linux with modifications for CachePC side-channel attack
git clone https://git.sinitax.com/sinitax/cachepc-linux
Log | Files | Refs | README | LICENSE | sfeed.txt

mtk-base-afe.h (3303B)


      1/* SPDX-License-Identifier: GPL-2.0 */
      2/*
      3 * mtk-base-afe.h  --  Mediatek base afe structure
      4 *
      5 * Copyright (c) 2016 MediaTek Inc.
      6 * Author: Garlic Tseng <garlic.tseng@mediatek.com>
      7 */
      8
      9#ifndef _MTK_BASE_AFE_H_
     10#define _MTK_BASE_AFE_H_
     11
     12#define MTK_STREAM_NUM (SNDRV_PCM_STREAM_LAST + 1)
     13
     14struct mtk_base_memif_data {
     15	int id;
     16	const char *name;
     17	int reg_ofs_base;
     18	int reg_ofs_cur;
     19	int reg_ofs_end;
     20	int reg_ofs_base_msb;
     21	int reg_ofs_cur_msb;
     22	int reg_ofs_end_msb;
     23	int fs_reg;
     24	int fs_shift;
     25	int fs_maskbit;
     26	int mono_reg;
     27	int mono_shift;
     28	int mono_invert;
     29	int quad_ch_reg;
     30	int quad_ch_mask;
     31	int quad_ch_shift;
     32	int int_odd_flag_reg;
     33	int int_odd_flag_shift;
     34	int enable_reg;
     35	int enable_shift;
     36	int hd_reg;
     37	int hd_shift;
     38	int hd_align_reg;
     39	int hd_align_mshift;
     40	int msb_reg;
     41	int msb_shift;
     42	int msb_end_reg;
     43	int msb_end_shift;
     44	int agent_disable_reg;
     45	int agent_disable_shift;
     46	int ch_num_reg;
     47	int ch_num_shift;
     48	int ch_num_maskbit;
     49	/* playback memif only */
     50	int pbuf_reg;
     51	int pbuf_mask;
     52	int pbuf_shift;
     53	int minlen_reg;
     54	int minlen_mask;
     55	int minlen_shift;
     56};
     57
     58struct mtk_base_irq_data {
     59	int id;
     60	int irq_cnt_reg;
     61	int irq_cnt_shift;
     62	int irq_cnt_maskbit;
     63	int irq_fs_reg;
     64	int irq_fs_shift;
     65	int irq_fs_maskbit;
     66	int irq_en_reg;
     67	int irq_en_shift;
     68	int irq_clr_reg;
     69	int irq_clr_shift;
     70	int irq_status_shift;
     71};
     72
     73struct device;
     74struct list_head;
     75struct mtk_base_afe_memif;
     76struct mtk_base_afe_irq;
     77struct mtk_base_afe_dai;
     78struct regmap;
     79struct snd_pcm_substream;
     80struct snd_soc_dai;
     81
     82struct mtk_base_afe {
     83	void __iomem *base_addr;
     84	struct device *dev;
     85	struct regmap *regmap;
     86	struct mutex irq_alloc_lock; /* dynamic alloc irq lock */
     87
     88	unsigned int const *reg_back_up_list;
     89	unsigned int *reg_back_up;
     90	unsigned int reg_back_up_list_num;
     91
     92	int (*runtime_suspend)(struct device *dev);
     93	int (*runtime_resume)(struct device *dev);
     94	bool suspended;
     95
     96	struct mtk_base_afe_memif *memif;
     97	int memif_size;
     98	struct mtk_base_afe_irq *irqs;
     99	int irqs_size;
    100	int memif_32bit_supported;
    101
    102	struct list_head sub_dais;
    103	struct snd_soc_dai_driver *dai_drivers;
    104	unsigned int num_dai_drivers;
    105
    106	const struct snd_pcm_hardware *mtk_afe_hardware;
    107	int (*memif_fs)(struct snd_pcm_substream *substream,
    108			unsigned int rate);
    109	int (*irq_fs)(struct snd_pcm_substream *substream,
    110		      unsigned int rate);
    111	int (*get_dai_fs)(struct mtk_base_afe *afe,
    112			  int dai_id, unsigned int rate);
    113	int (*get_memif_pbuf_size)(struct snd_pcm_substream *substream);
    114
    115	int (*request_dram_resource)(struct device *dev);
    116	int (*release_dram_resource)(struct device *dev);
    117
    118	void *platform_priv;
    119};
    120
    121struct mtk_base_afe_memif {
    122	unsigned int phys_buf_addr;
    123	int buffer_size;
    124	struct snd_pcm_substream *substream;
    125	const struct mtk_base_memif_data *data;
    126	int irq_usage;
    127	int const_irq;
    128	unsigned char *dma_area;
    129	dma_addr_t dma_addr;
    130	size_t dma_bytes;
    131};
    132
    133struct mtk_base_afe_irq {
    134	const struct mtk_base_irq_data *irq_data;
    135	int irq_occupyed;
    136};
    137
    138struct mtk_base_afe_dai {
    139	struct snd_soc_dai_driver *dai_drivers;
    140	unsigned int num_dai_drivers;
    141
    142	const struct snd_kcontrol_new *controls;
    143	unsigned int num_controls;
    144	const struct snd_soc_dapm_widget *dapm_widgets;
    145	unsigned int num_dapm_widgets;
    146	const struct snd_soc_dapm_route *dapm_routes;
    147	unsigned int num_dapm_routes;
    148
    149	struct list_head list;
    150};
    151
    152#endif
    153