ASoC: omap-mcbsp: Merge the omap_mcbsp_data into omap_mcbsp structure
authorPeter Ujfalusi <peter.ujfalusi@ti.com>
Tue, 14 Feb 2012 13:23:15 +0000 (15:23 +0200)
committerLiam Girdwood <lrg@ti.com>
Mon, 12 Mar 2012 13:34:22 +0000 (13:34 +0000)
Since the drivers has been merged, merge the two structures together.

Signed-off-by: Peter Ujfalusi <peter.ujfalusi@ti.com>
Tested-by: Grazvydas Ignotas <notasas@gmail.com>
Tested-by: Janusz Krzysztofik <jkrzyszt@tis.icnet.pl>
Acked-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
Acked-by: Jarkko Nikula <jarkko.nikula@bitmer.com>
Signed-off-by: Liam Girdwood <lrg@ti.com>
sound/soc/omap/mcbsp.h
sound/soc/omap/omap-mcbsp.c

index ac90c1a4a489af9991f297a1405b26ed4f016c19..d250bcc952d272f2239943819ba2fab638a64ef8 100644 (file)
@@ -269,27 +269,20 @@ struct omap_mcbsp_st_data {
        s16 ch1gain;
 };
 
-struct omap_mcbsp_data {
-       struct omap_mcbsp_reg_cfg       regs;
-       struct omap_pcm_dma_data        dma_data[2];
-       unsigned int                    fmt;
-       /*
-        * Flags indicating is the bus already activated and configured by
-        * another substream
-        */
-       int                             active;
-       int                             configured;
-       unsigned int                    in_freq;
-       int                             clk_div;
-       int                             wlen;
-};
-
 struct omap_mcbsp {
        struct device *dev;
+       struct clk *fclk;
+       spinlock_t lock;
        unsigned long phys_base;
        unsigned long phys_dma_base;
        void __iomem *io_base;
        u8 id;
+       /*
+        * Flags indicating is the bus already activated and configured by
+        * another substream
+        */
+       int active;
+       int configured;
        u8 free;
 
        int rx_irq;
@@ -300,16 +293,20 @@ struct omap_mcbsp {
        u8 dma_tx_sync;
 
        /* Protect the field .free, while checking if the mcbsp is in use */
-       spinlock_t lock;
        struct omap_mcbsp_platform_data *pdata;
-       struct clk *fclk;
        struct omap_mcbsp_st_data *st_data;
-       struct omap_mcbsp_data mcbsp_data;
+       struct omap_mcbsp_reg_cfg cfg_regs;
+       struct omap_pcm_dma_data dma_data[2];
        int dma_op_mode;
        u16 max_tx_thres;
        u16 max_rx_thres;
        void *reg_cache;
        int reg_cache_size;
+
+       unsigned int fmt;
+       unsigned int in_freq;
+       int clk_div;
+       int wlen;
 };
 
 void omap_mcbsp_config(struct omap_mcbsp *mcbsp,
index 69a44aa4eeae0cbb96b4a88a9e323101c08bd441..4cd7af883de947ba08b5bd1904b4a1de5352fae9 100644 (file)
@@ -66,7 +66,6 @@ static void omap_mcbsp_set_threshold(struct snd_pcm_substream *substream)
        struct snd_soc_pcm_runtime *rtd = substream->private_data;
        struct snd_soc_dai *cpu_dai = rtd->cpu_dai;
        struct omap_mcbsp *mcbsp = snd_soc_dai_get_drvdata(cpu_dai);
-       struct omap_mcbsp_data *mcbsp_data = &mcbsp->mcbsp_data;
        struct omap_pcm_dma_data *dma_data;
        int words;
 
@@ -83,7 +82,7 @@ static void omap_mcbsp_set_threshold(struct snd_pcm_substream *substream)
                        words = dma_data->packet_size;
                else
                        words = snd_pcm_lib_period_bytes(substream) /
-                                                       (mcbsp_data->wlen / 8);
+                                                       (mcbsp->wlen / 8);
        else
                words = 1;
 
@@ -160,11 +159,10 @@ static void omap_mcbsp_dai_shutdown(struct snd_pcm_substream *substream,
                                    struct snd_soc_dai *cpu_dai)
 {
        struct omap_mcbsp *mcbsp = snd_soc_dai_get_drvdata(cpu_dai);
-       struct omap_mcbsp_data *mcbsp_data = &mcbsp->mcbsp_data;
 
        if (!cpu_dai->active) {
                omap_mcbsp_free(mcbsp);
-               mcbsp_data->configured = 0;
+               mcbsp->configured = 0;
        }
 }
 
@@ -172,14 +170,13 @@ static int omap_mcbsp_dai_trigger(struct snd_pcm_substream *substream, int cmd,
                                  struct snd_soc_dai *cpu_dai)
 {
        struct omap_mcbsp *mcbsp = snd_soc_dai_get_drvdata(cpu_dai);
-       struct omap_mcbsp_data *mcbsp_data = &mcbsp->mcbsp_data;
        int err = 0, play = (substream->stream == SNDRV_PCM_STREAM_PLAYBACK);
 
        switch (cmd) {
        case SNDRV_PCM_TRIGGER_START:
        case SNDRV_PCM_TRIGGER_RESUME:
        case SNDRV_PCM_TRIGGER_PAUSE_RELEASE:
-               mcbsp_data->active++;
+               mcbsp->active++;
                omap_mcbsp_start(mcbsp, play, !play);
                break;
 
@@ -187,7 +184,7 @@ static int omap_mcbsp_dai_trigger(struct snd_pcm_substream *substream, int cmd,
        case SNDRV_PCM_TRIGGER_SUSPEND:
        case SNDRV_PCM_TRIGGER_PAUSE_PUSH:
                omap_mcbsp_stop(mcbsp, play, !play);
-               mcbsp_data->active--;
+               mcbsp->active--;
                break;
        default:
                err = -EINVAL;
@@ -226,8 +223,7 @@ static int omap_mcbsp_dai_hw_params(struct snd_pcm_substream *substream,
                                    struct snd_soc_dai *cpu_dai)
 {
        struct omap_mcbsp *mcbsp = snd_soc_dai_get_drvdata(cpu_dai);
-       struct omap_mcbsp_data *mcbsp_data = &mcbsp->mcbsp_data;
-       struct omap_mcbsp_reg_cfg *regs = &mcbsp_data->regs;
+       struct omap_mcbsp_reg_cfg *regs = &mcbsp->cfg_regs;
        struct omap_pcm_dma_data *dma_data;
        int dma;
        int wlen, channels, wpf, sync_mode = OMAP_DMA_SYNC_ELEMENT;
@@ -235,7 +231,7 @@ static int omap_mcbsp_dai_hw_params(struct snd_pcm_substream *substream,
        unsigned long port;
        unsigned int format, div, framesize, master;
 
-       dma_data = &mcbsp_data->dma_data[substream->stream];
+       dma_data = &mcbsp->dma_data[substream->stream];
 
        dma = omap_mcbsp_dma_ch_params(mcbsp, substream->stream);
        port = omap_mcbsp_dma_reg_params(mcbsp, substream->stream);
@@ -303,7 +299,7 @@ static int omap_mcbsp_dai_hw_params(struct snd_pcm_substream *substream,
 
        snd_soc_dai_set_dma_data(cpu_dai, substream, dma_data);
 
-       if (mcbsp_data->configured) {
+       if (mcbsp->configured) {
                /* McBSP already configured by another stream */
                return 0;
        }
@@ -312,7 +308,7 @@ static int omap_mcbsp_dai_hw_params(struct snd_pcm_substream *substream,
        regs->xcr2      &= ~(RPHASE | XFRLEN2(0x7f) | XWDLEN2(7));
        regs->rcr1      &= ~(RFRLEN1(0x7f) | RWDLEN1(7));
        regs->xcr1      &= ~(XFRLEN1(0x7f) | XWDLEN1(7));
-       format = mcbsp_data->fmt & SND_SOC_DAIFMT_FORMAT_MASK;
+       format = mcbsp->fmt & SND_SOC_DAIFMT_FORMAT_MASK;
        wpf = channels = params_channels(params);
        if (channels == 2 && (format == SND_SOC_DAIFMT_I2S ||
                              format == SND_SOC_DAIFMT_LEFT_J)) {
@@ -350,10 +346,10 @@ static int omap_mcbsp_dai_hw_params(struct snd_pcm_substream *substream,
 
        /* In McBSP master modes, FRAME (i.e. sample rate) is generated
         * by _counting_ BCLKs. Calculate frame size in BCLKs */
-       master = mcbsp_data->fmt & SND_SOC_DAIFMT_MASTER_MASK;
+       master = mcbsp->fmt & SND_SOC_DAIFMT_MASTER_MASK;
        if (master ==   SND_SOC_DAIFMT_CBS_CFS) {
-               div = mcbsp_data->clk_div ? mcbsp_data->clk_div : 1;
-               framesize = (mcbsp_data->in_freq / div) / params_rate(params);
+               div = mcbsp->clk_div ? mcbsp->clk_div : 1;
+               framesize = (mcbsp->in_freq / div) / params_rate(params);
 
                if (framesize < wlen * channels) {
                        printk(KERN_ERR "%s: not enough bandwidth for desired rate and "
@@ -379,9 +375,9 @@ static int omap_mcbsp_dai_hw_params(struct snd_pcm_substream *substream,
                break;
        }
 
-       omap_mcbsp_config(mcbsp, &mcbsp_data->regs);
-       mcbsp_data->wlen = wlen;
-       mcbsp_data->configured = 1;
+       omap_mcbsp_config(mcbsp, &mcbsp->cfg_regs);
+       mcbsp->wlen = wlen;
+       mcbsp->configured = 1;
 
        return 0;
 }
@@ -394,14 +390,13 @@ static int omap_mcbsp_dai_set_dai_fmt(struct snd_soc_dai *cpu_dai,
                                      unsigned int fmt)
 {
        struct omap_mcbsp *mcbsp = snd_soc_dai_get_drvdata(cpu_dai);
-       struct omap_mcbsp_data *mcbsp_data = &mcbsp->mcbsp_data;
-       struct omap_mcbsp_reg_cfg *regs = &mcbsp_data->regs;
+       struct omap_mcbsp_reg_cfg *regs = &mcbsp->cfg_regs;
        bool inv_fs = false;
 
-       if (mcbsp_data->configured)
+       if (mcbsp->configured)
                return 0;
 
-       mcbsp_data->fmt = fmt;
+       mcbsp->fmt = fmt;
        memset(regs, 0, sizeof(*regs));
        /* Generic McBSP register settings */
        regs->spcr2     |= XINTM(3) | FREE;
@@ -497,13 +492,12 @@ static int omap_mcbsp_dai_set_clkdiv(struct snd_soc_dai *cpu_dai,
                                     int div_id, int div)
 {
        struct omap_mcbsp *mcbsp = snd_soc_dai_get_drvdata(cpu_dai);
-       struct omap_mcbsp_data *mcbsp_data = &mcbsp->mcbsp_data;
-       struct omap_mcbsp_reg_cfg *regs = &mcbsp_data->regs;
+       struct omap_mcbsp_reg_cfg *regs = &mcbsp->cfg_regs;
 
        if (div_id != OMAP_MCBSP_CLKGDV)
                return -ENODEV;
 
-       mcbsp_data->clk_div = div;
+       mcbsp->clk_div = div;
        regs->srgr1     &= ~CLKGDV(0xff);
        regs->srgr1     |= CLKGDV(div - 1);
 
@@ -515,12 +509,11 @@ static int omap_mcbsp_dai_set_dai_sysclk(struct snd_soc_dai *cpu_dai,
                                         int dir)
 {
        struct omap_mcbsp *mcbsp = snd_soc_dai_get_drvdata(cpu_dai);
-       struct omap_mcbsp_data *mcbsp_data = &mcbsp->mcbsp_data;
-       struct omap_mcbsp_reg_cfg *regs = &mcbsp_data->regs;
+       struct omap_mcbsp_reg_cfg *regs = &mcbsp->cfg_regs;
        int err = 0;
 
-       if (mcbsp_data->active) {
-               if (freq == mcbsp_data->in_freq)
+       if (mcbsp->active) {
+               if (freq == mcbsp->in_freq)
                        return 0;
                else
                        return -EBUSY;
@@ -534,7 +527,7 @@ static int omap_mcbsp_dai_set_dai_sysclk(struct snd_soc_dai *cpu_dai,
                if (cpu_class_is_omap1() || cpu_dai->id != 1)
                        return -EINVAL;
 
-       mcbsp_data->in_freq = freq;
+       mcbsp->in_freq = freq;
        regs->srgr2     &= ~CLKSM;
        regs->pcr0      &= ~SCLKME;