]> git.proxmox.com Git - mirror_ubuntu-zesty-kernel.git/blobdiff - sound/soc/fsl/fsl_asrc.h
ASoC: fsl_asrc: sound is wrong after suspend/resume
[mirror_ubuntu-zesty-kernel.git] / sound / soc / fsl / fsl_asrc.h
index 4aed63c4b431b519f3bccaa8f138bfabd1dcb6bf..0f163abe4ba37d93bec022afd0842b20423f2361 100644 (file)
 #define ASRCFG_INIRQi                  (1 << ASRCFG_INIRQi_SHIFT(i))
 #define ASRCFG_NDPRi_SHIFT(i)          (18 + i)
 #define ASRCFG_NDPRi_MASK(i)           (1 << ASRCFG_NDPRi_SHIFT(i))
+#define ASRCFG_NDPRi_ALL_SHIFT         18
+#define ASRCFG_NDPRi_ALL_MASK          (7 << ASRCFG_NDPRi_ALL_SHIFT)
 #define ASRCFG_NDPRi                   (1 << ASRCFG_NDPRi_SHIFT(i))
 #define ASRCFG_POSTMODi_SHIFT(i)       (8 + (i << 2))
 #define ASRCFG_POSTMODi_WIDTH          2
 #define ASRCFG_POSTMODi_MASK(i)                (((1 << ASRCFG_POSTMODi_WIDTH) - 1) << ASRCFG_POSTMODi_SHIFT(i))
+#define ASRCFG_POSTMODi_ALL_MASK       (ASRCFG_POSTMODi_MASK(0) | ASRCFG_POSTMODi_MASK(1) | ASRCFG_POSTMODi_MASK(2))
 #define ASRCFG_POSTMOD(i, v)           ((v) << ASRCFG_POSTMODi_SHIFT(i))
 #define ASRCFG_POSTMODi_UP(i)          (0 << ASRCFG_POSTMODi_SHIFT(i))
 #define ASRCFG_POSTMODi_DCON(i)                (1 << ASRCFG_POSTMODi_SHIFT(i))
 #define ASRCFG_PREMODi_SHIFT(i)                (6 + (i << 2))
 #define ASRCFG_PREMODi_WIDTH           2
 #define ASRCFG_PREMODi_MASK(i)         (((1 << ASRCFG_PREMODi_WIDTH) - 1) << ASRCFG_PREMODi_SHIFT(i))
+#define ASRCFG_PREMODi_ALL_MASK                (ASRCFG_PREMODi_MASK(0) | ASRCFG_PREMODi_MASK(1) | ASRCFG_PREMODi_MASK(2))
 #define ASRCFG_PREMOD(i, v)            ((v) << ASRCFG_PREMODi_SHIFT(i))
 #define ASRCFG_PREMODi_UP(i)           (0 << ASRCFG_PREMODi_SHIFT(i))
 #define ASRCFG_PREMODi_DCON(i)         (1 << ASRCFG_PREMODi_SHIFT(i))
@@ -426,6 +430,7 @@ struct fsl_asrc_pair {
  * @paddr: physical address to the base address of registers
  * @mem_clk: clock source to access register
  * @ipg_clk: clock source to drive peripheral
+ * @spba_clk: SPBA clock (optional, depending on SoC design)
  * @asrck_clk: clock sources to driver ASRC internal logic
  * @lock: spin lock for resource protection
  * @pair: pair pointers
@@ -433,6 +438,7 @@ struct fsl_asrc_pair {
  * @channel_avail: non-occupied channel numbers
  * @asrc_rate: default sample rate for ASoC Back-Ends
  * @asrc_width: default sample width for ASoC Back-Ends
+ * @regcache_cfg: store register value of REG_ASRCFG
  */
 struct fsl_asrc {
        struct snd_dmaengine_dai_dma_data dma_params_rx;
@@ -442,6 +448,7 @@ struct fsl_asrc {
        unsigned long paddr;
        struct clk *mem_clk;
        struct clk *ipg_clk;
+       struct clk *spba_clk;
        struct clk *asrck_clk[ASRC_CLK_MAX_NUM];
        spinlock_t lock;
 
@@ -451,6 +458,8 @@ struct fsl_asrc {
 
        int asrc_rate;
        int asrc_width;
+
+       u32 regcache_cfg;
 };
 
 extern struct snd_soc_platform_driver fsl_asrc_platform;