root/sound/soc/mediatek/common/mtk-base-afe.h

/* [<][>][^][v][top][bottom][index][help] */

INCLUDED FROM


   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 
  14 struct mtk_base_memif_data {
  15         int id;
  16         const char *name;
  17         int reg_ofs_base;
  18         int reg_ofs_cur;
  19         int fs_reg;
  20         int fs_shift;
  21         int fs_maskbit;
  22         int mono_reg;
  23         int mono_shift;
  24         int enable_reg;
  25         int enable_shift;
  26         int hd_reg;
  27         int hd_align_reg;
  28         int hd_shift;
  29         int hd_align_mshift;
  30         int msb_reg;
  31         int msb_shift;
  32         int agent_disable_reg;
  33         int agent_disable_shift;
  34 };
  35 
  36 struct mtk_base_irq_data {
  37         int id;
  38         int irq_cnt_reg;
  39         int irq_cnt_shift;
  40         int irq_cnt_maskbit;
  41         int irq_fs_reg;
  42         int irq_fs_shift;
  43         int irq_fs_maskbit;
  44         int irq_en_reg;
  45         int irq_en_shift;
  46         int irq_clr_reg;
  47         int irq_clr_shift;
  48 };
  49 
  50 struct device;
  51 struct list_head;
  52 struct mtk_base_afe_memif;
  53 struct mtk_base_afe_irq;
  54 struct mtk_base_afe_dai;
  55 struct regmap;
  56 struct snd_pcm_substream;
  57 struct snd_soc_dai;
  58 
  59 struct mtk_base_afe {
  60         void __iomem *base_addr;
  61         struct device *dev;
  62         struct regmap *regmap;
  63         struct mutex irq_alloc_lock; /* dynamic alloc irq lock */
  64 
  65         unsigned int const *reg_back_up_list;
  66         unsigned int *reg_back_up;
  67         unsigned int reg_back_up_list_num;
  68 
  69         int (*runtime_suspend)(struct device *dev);
  70         int (*runtime_resume)(struct device *dev);
  71         bool suspended;
  72 
  73         struct mtk_base_afe_memif *memif;
  74         int memif_size;
  75         struct mtk_base_afe_irq *irqs;
  76         int irqs_size;
  77 
  78         struct list_head sub_dais;
  79         struct snd_soc_dai_driver *dai_drivers;
  80         unsigned int num_dai_drivers;
  81 
  82         const struct snd_pcm_hardware *mtk_afe_hardware;
  83         int (*memif_fs)(struct snd_pcm_substream *substream,
  84                         unsigned int rate);
  85         int (*irq_fs)(struct snd_pcm_substream *substream,
  86                       unsigned int rate);
  87 
  88         void *platform_priv;
  89 };
  90 
  91 struct mtk_base_afe_memif {
  92         unsigned int phys_buf_addr;
  93         int buffer_size;
  94         struct snd_pcm_substream *substream;
  95         const struct mtk_base_memif_data *data;
  96         int irq_usage;
  97         int const_irq;
  98 };
  99 
 100 struct mtk_base_afe_irq {
 101         const struct mtk_base_irq_data *irq_data;
 102         int irq_occupyed;
 103 };
 104 
 105 struct mtk_base_afe_dai {
 106         struct snd_soc_dai_driver *dai_drivers;
 107         unsigned int num_dai_drivers;
 108 
 109         const struct snd_kcontrol_new *controls;
 110         unsigned int num_controls;
 111         const struct snd_soc_dapm_widget *dapm_widgets;
 112         unsigned int num_dapm_widgets;
 113         const struct snd_soc_dapm_route *dapm_routes;
 114         unsigned int num_dapm_routes;
 115 
 116         struct list_head list;
 117 };
 118 
 119 #endif
 120 

/* [<][>][^][v][top][bottom][index][help] */