From: Marcus Cooper <codekip...@gmail.com>

Tidy up of the code so that it passes checkpatch. Misplaced
spaces, tabs etc have been removed and the column width
restricted where possible to < 80 chars.

Signed-off-by: Marcus Cooper <codekip...@gmail.com>
---
 sound/soc/sunxi/spdif/sndspdif.c       |  21 +-
 sound/soc/sunxi/spdif/sunxi_sndspdif.c |  78 +++---
 sound/soc/sunxi/spdif/sunxi_spdif.c    | 491 ++++++++++++++++++---------------
 sound/soc/sunxi/spdif/sunxi_spdif.h    | 146 +++++-----
 sound/soc/sunxi/spdif/sunxi_spdma.c    | 113 ++++----
 5 files changed, 455 insertions(+), 394 deletions(-)

diff --git a/sound/soc/sunxi/spdif/sndspdif.c b/sound/soc/sunxi/spdif/sndspdif.c
index c41a06b..7bc5713 100644
--- a/sound/soc/sunxi/spdif/sndspdif.c
+++ b/sound/soc/sunxi/spdif/sndspdif.c
@@ -23,7 +23,7 @@
 #include <plat/sys_config.h>
 #include <linux/io.h>
 
-#define SNDSPDIF_RATES  (SNDRV_PCM_RATE_8000_192000|SNDRV_PCM_RATE_KNOT)
+#define SNDSPDIF_RATES (SNDRV_PCM_RATE_8000_192000 | SNDRV_PCM_RATE_KNOT)
 #define SNDSPDIF_FORMATS (SNDRV_PCM_FMTBIT_S16_LE)
 
 struct sndspdif_priv {
@@ -58,18 +58,18 @@ static int sndspdif_hw_params(struct snd_pcm_substream 
*substream,
 }
 
 static int sndspdif_set_dai_sysclk(struct snd_soc_dai *codec_dai,
-                                 int clk_id, unsigned int freq, int dir)
+                               int clk_id, unsigned int freq, int dir)
 {
        return 0;
 }
 
-static int sndspdif_set_dai_clkdiv(struct snd_soc_dai *codec_dai, int div_id, 
int div)
+static int sndspdif_set_dai_clkdiv(struct snd_soc_dai *codec_dai, int div_id,
+                                                                       int div)
 {
        return 0;
 }
 
-static int sndspdif_set_dai_fmt(struct snd_soc_dai *codec_dai,
-                              unsigned int fmt)
+static int sndspdif_set_dai_fmt(struct snd_soc_dai *codec_dai, unsigned int 
fmt)
 {
        return 0;
 }
@@ -103,8 +103,8 @@ static int sndspdif_soc_probe(struct snd_soc_codec *codec)
        struct sndspdif_priv *sndspdif;
 
        sndspdif = kzalloc(sizeof(struct sndspdif_priv), GFP_KERNEL);
-       if(sndspdif == NULL){
-               printk("%s,%d\n",__func__,__LINE__);
+       if (sndspdif == NULL) {
+               printk("%s,%d\n", __func__, __LINE__);
                return -ENOMEM;
        }
        snd_soc_codec_set_drvdata(codec, sndspdif);
@@ -123,13 +123,14 @@ static int sndspdif_soc_remove(struct snd_soc_codec 
*codec)
 }
 
 static struct snd_soc_codec_driver soc_codec_dev_sndspdif = {
-       .probe  =       sndspdif_soc_probe,
-       .remove =   sndspdif_soc_remove,
+       .probe  = sndspdif_soc_probe,
+       .remove = sndspdif_soc_remove,
 };
 
 static int __devinit sndspdif_codec_probe(struct platform_device *pdev)
 {
-       return snd_soc_register_codec(&pdev->dev, &soc_codec_dev_sndspdif, 
&sndspdif_dai, 1);
+       return snd_soc_register_codec(&pdev->dev, &soc_codec_dev_sndspdif,
+                                                       &sndspdif_dai, 1);
 }
 
 static int __devexit sndspdif_codec_remove(struct platform_device *pdev)
diff --git a/sound/soc/sunxi/spdif/sunxi_sndspdif.c 
b/sound/soc/sunxi/spdif/sunxi_sndspdif.c
index c5a8509..7cea365 100644
--- a/sound/soc/sunxi/spdif/sunxi_sndspdif.c
+++ b/sound/soc/sunxi/spdif/sunxi_sndspdif.c
@@ -41,15 +41,17 @@ static struct snd_pcm_hw_constraint_list 
hw_constraints_rates = {
 static int sunxi_sndspdif_startup(struct snd_pcm_substream *substream)
 {
        int ret = 0;
-       #ifdef ENFORCE_RATES
-               struct snd_pcm_runtime *runtime = substream->runtime;;
-       #endif
+#ifdef ENFORCE_RATES
+       struct snd_pcm_runtime *runtime = substream->runtime;
+#endif
        if (!ret) {
-       #ifdef ENFORCE_RATES
-               ret = snd_pcm_hw_constraint_list(runtime, 0, 
SNDRV_PCM_HW_PARAM_RATE, &hw_constraints_rates);
+#ifdef ENFORCE_RATES
+               ret = snd_pcm_hw_constraint_list(runtime, 0,
+                                               SNDRV_PCM_HW_PARAM_RATE,
+                                               &hw_constraints_rates);
                if (ret < 0)
                        return ret;
-       #endif
+#endif
        }
        return ret;
 }
@@ -132,27 +134,29 @@ static __mclk_set_inf MCLK_INF[] = {
        {0xffffffff, 0, 0, 0},
 };
 
-static s32 get_clock_divder(u32 sample_rate, u32 sample_width, u32 * mclk_div, 
u32* mpll, u32* bclk_div, u32* mult_fs)
+static s32 get_clock_divder(u32 sample_rate, u32 sample_width, u32 *mclk_div,
+                                       u32 *mpll, u32 *bclk_div, u32 *mult_fs)
 {
        u32 i, j, ret = -EINVAL;
 
-       for(i=0; i< 100; i++) {
-                if((MCLK_INF[i].samp_rate == sample_rate) &&
-                       ((MCLK_INF[i].mult_fs == 256) || (MCLK_INF[i].mult_fs 
== 128))) {
-                         for(j=0; j<ARRAY_SIZE(BCLK_INF); j++) {
-                                       if((BCLK_INF[j].bitpersamp == 
sample_width) &&
-                                               (BCLK_INF[j].mult_fs == 
MCLK_INF[i].mult_fs)) {
-                                                *mclk_div = 
MCLK_INF[i].clk_div;
-                                                *mpll = MCLK_INF[i].mpll;
-                                                *bclk_div = 
BCLK_INF[j].clk_div;
-                                                *mult_fs = MCLK_INF[i].mult_fs;
-                                                ret = 0;
-                                                break;
-                                       }
-                         }
-                }
-                else if(MCLK_INF[i].samp_rate == 0xffffffff)
-                       break;
+       for (i = 0; i < 100; i++) {
+               if ((MCLK_INF[i].samp_rate == sample_rate) &&
+                                       ((MCLK_INF[i].mult_fs == 256) ||
+                                       (MCLK_INF[i].mult_fs == 128))) {
+                       for (j = 0; j < ARRAY_SIZE(BCLK_INF); j++) {
+                               if ((BCLK_INF[j].bitpersamp == sample_width) &&
+                                       (BCLK_INF[j].mult_fs ==
+                                                       MCLK_INF[i].mult_fs)) {
+                                       *mclk_div = MCLK_INF[i].clk_div;
+                                       *mpll = MCLK_INF[i].mpll;
+                                       *bclk_div = BCLK_INF[j].clk_div;
+                                       *mult_fs = MCLK_INF[i].mult_fs;
+                                       ret = 0;
+                                       break;
+                               }
+                       }
+               } else if (MCLK_INF[i].samp_rate == 0xffffffff)
+                       break;
        }
 
        return ret;
@@ -166,7 +170,7 @@ static int sunxi_sndspdif_hw_params(struct 
snd_pcm_substream *substream,
        struct snd_soc_dai *cpu_dai = rtd->cpu_dai;
        int ret = 0;
        unsigned long rate = params_rate(params);
-       u32 mclk_div=0, mpll=0, bclk_div=0, mult_fs=0;
+       u32 mclk_div = 0, mpll = 0, bclk_div = 0, mult_fs = 0;
 
        get_clock_divder(rate, 32, &mclk_div, &mpll, &bclk_div, &mult_fs);
 
@@ -203,26 +207,26 @@ static int sunxi_sndspdif_hw_params(struct 
snd_pcm_substream *substream,
 }
 
 static struct snd_soc_ops sunxi_sndspdif_ops = {
-       .startup        = sunxi_sndspdif_startup,
-       .shutdown       = sunxi_sndspdif_shutdown,
-       .hw_params      = sunxi_sndspdif_hw_params,
+       .startup        = sunxi_sndspdif_startup,
+       .shutdown       = sunxi_sndspdif_shutdown,
+       .hw_params      = sunxi_sndspdif_hw_params,
 };
 
 static struct snd_soc_dai_link sunxi_sndspdif_dai_link = {
-       .name                   = "SPDIF",
-       .stream_name    = "SUNXI-SPDIF",
-       .cpu_dai_name   = "sunxi-spdif.0",
+       .name           = "SPDIF",
+       .stream_name    = "SUNXI-SPDIF",
+       .cpu_dai_name   = "sunxi-spdif.0",
        .codec_dai_name = "sndspdif",
-       .platform_name  = "sunxi-spdif-pcm-audio.0",
-       .codec_name     = "sunxi-spdif-codec.0",
-       .ops                    = &sunxi_sndspdif_ops,
+       .platform_name  = "sunxi-spdif-pcm-audio.0",
+       .codec_name     = "sunxi-spdif-codec.0",
+       .ops            = &sunxi_sndspdif_ops,
 };
 
 static struct snd_soc_card snd_soc_sunxi_sndspdif = {
-       .name           = "sunxi-sndspdif",
+       .name           = "sunxi-sndspdif",
        .owner          = THIS_MODULE,
-       .dai_link       = &sunxi_sndspdif_dai_link,
-       .num_links      = 1,
+       .dai_link       = &sunxi_sndspdif_dai_link,
+       .num_links      = 1,
 };
 
 static int __devinit sunxi_sndspdif_probe(struct platform_device *pdev)
diff --git a/sound/soc/sunxi/spdif/sunxi_spdif.c 
b/sound/soc/sunxi/spdif/sunxi_spdif.c
index 9cc6264..df53666 100644
--- a/sound/soc/sunxi/spdif/sunxi_spdif.c
+++ b/sound/soc/sunxi/spdif/sunxi_spdif.c
@@ -43,19 +43,19 @@ static struct sunxi_dma_params sunxi_spdif_stereo_out = {
 #if defined CONFIG_ARCH_SUN4I || defined CONFIG_ARCH_SUN5I
        .channel        =       DMACH_NSPDIF,
 #endif
-       .dma_addr       =       SUNXI_SPDIFBASE + SUNXI_SPDIF_TXFIFO,
+       .dma_addr       =       SUNXI_SPDIFBASE + SUNXI_SPDIF_TXFIFO,
 };
 
 static struct sunxi_dma_params sunxi_spdif_stereo_in = {
-       .client.name    =       "SPDIF out",
+       .client.name    =       "SPDIF in",
 #if defined CONFIG_ARCH_SUN4I || defined CONFIG_ARCH_SUN5I
        .channel        =       DMACH_NSPDIF,
 #endif
-       .dma_addr       =       SUNXI_SPDIFBASE + SUNXI_SPDIF_RXFIFO,
+       .dma_addr       =       SUNXI_SPDIFBASE + SUNXI_SPDIF_RXFIFO,
 };
 
 struct sunxi_spdif_info sunxi_spdif;
-static u32 spdif_handle = 0;
+static u32 spdif_handle;
 static struct clk *spdif_apbclk, *spdif_pll2clk, *spdif_pllx8, 
*spdif_moduleclk;
 
 void sunxi_snd_txctrl(struct snd_pcm_substream *substream, int on)
@@ -174,14 +174,14 @@ static int sunxi_spdif_set_fmt(struct snd_soc_dai 
*cpu_dai, unsigned int fmt)
 }
 
 static int sunxi_spdif_hw_params(struct snd_pcm_substream *substream,
-                                                                               
                                                struct snd_pcm_hw_params 
*params,
-                                                                               
                                                struct snd_soc_dai *dai)
+                                       struct snd_pcm_hw_params *params,
+                                       struct snd_soc_dai *dai)
 {
        struct snd_soc_pcm_runtime *rtd = substream->private_data;
        struct sunxi_dma_params *dma_data;
 
        /* play or record */
-       if(substream->stream == SNDRV_PCM_STREAM_PLAYBACK)
+       if (substream->stream == SNDRV_PCM_STREAM_PLAYBACK)
                dma_data = &sunxi_spdif_stereo_out;
        else
                dma_data = &sunxi_spdif_stereo_in;
@@ -192,55 +192,52 @@ static int sunxi_spdif_hw_params(struct snd_pcm_substream 
*substream,
 }
 
 static int sunxi_spdif_trigger(struct snd_pcm_substream *substream,
-                              int cmd, struct snd_soc_dai *dai)
+                                       int cmd, struct snd_soc_dai *dai)
 {
        int ret = 0;
        struct snd_soc_pcm_runtime *rtd = substream->private_data;
        struct sunxi_dma_params *dma_data =
-                                       snd_soc_dai_get_dma_data(rtd->cpu_dai, 
substream);
+                       snd_soc_dai_get_dma_data(rtd->cpu_dai, substream);
 
        switch (cmd) {
-               case SNDRV_PCM_TRIGGER_START:
-               case SNDRV_PCM_TRIGGER_RESUME:
-               case SNDRV_PCM_TRIGGER_PAUSE_RELEASE:
-                       if (substream->stream == SNDRV_PCM_STREAM_CAPTURE) {
-                               sunxi_snd_rxctrl(1);
-                       } else {
-                               sunxi_snd_txctrl(substream, 1);
-                       }
-                       sunxi_dma_started(dma_data);
-                       break;
-               case SNDRV_PCM_TRIGGER_STOP:
-               case SNDRV_PCM_TRIGGER_SUSPEND:
-               case SNDRV_PCM_TRIGGER_PAUSE_PUSH:
-                       if (substream->stream == SNDRV_PCM_STREAM_CAPTURE) {
-                               sunxi_snd_rxctrl(0);
-                       } else {
-                         sunxi_snd_txctrl(substream, 0);
-                       }
-                       break;
-               default:
-                       ret = -EINVAL;
-                       break;
+       case SNDRV_PCM_TRIGGER_START:
+       case SNDRV_PCM_TRIGGER_RESUME:
+       case SNDRV_PCM_TRIGGER_PAUSE_RELEASE:
+               if (substream->stream == SNDRV_PCM_STREAM_CAPTURE)
+                       sunxi_snd_rxctrl(1);
+               else
+                       sunxi_snd_txctrl(substream, 1);
+               sunxi_dma_started(dma_data);
+               break;
+       case SNDRV_PCM_TRIGGER_STOP:
+       case SNDRV_PCM_TRIGGER_SUSPEND:
+       case SNDRV_PCM_TRIGGER_PAUSE_PUSH:
+               if (substream->stream == SNDRV_PCM_STREAM_CAPTURE)
+                       sunxi_snd_rxctrl(0);
+               else
+                       sunxi_snd_txctrl(substream, 0);
+               break;
+       default:
+               ret = -EINVAL;
+               break;
        }
 
-               return ret;
+       return ret;
 }
 
 /* freq: 1: 22.5792MHz 0: 24.576MHz */
 static int sunxi_spdif_set_sysclk(struct snd_soc_dai *cpu_dai, int clk_id,
-                                 unsigned int freq, int dir)
+                                               unsigned int freq, int dir)
 {
-       if (!freq) {
+       if (!freq)
                clk_set_rate(spdif_pll2clk, 24576000);
-       } else {
+       else
                clk_set_rate(spdif_pll2clk, 22579200);
-       }
-
        return 0;
 }
 
-static int sunxi_spdif_set_clkdiv(struct snd_soc_dai *cpu_dai, int div_id, int 
div)
+static int sunxi_spdif_set_clkdiv(struct snd_soc_dai *cpu_dai, int div_id,
+                                                                       int div)
 {
        u32 reg_val = 0;
 
@@ -250,150 +247,200 @@ static int sunxi_spdif_set_clkdiv(struct snd_soc_dai 
*cpu_dai, int div_id, int d
 
        reg_val = readl(sunxi_spdif.regs + SUNXI_SPDIF_TXCHSTA1);
        reg_val &= ~(SUNXI_SPDIF_TXCHSTA1_ORISAMFREQ(0xf));
-       writel(reg_val, sunxi_spdif.regs + SUNXI_SPDIF_TXCHSTA1);
-
-       switch(div_id) {
-               case SUNXI_DIV_MCLK:
-               {
-                       reg_val = readl(sunxi_spdif.regs + SUNXI_SPDIF_TXCFG);
-                       reg_val &= ~SUNXI_SPDIF_TXCFG_TXRATIO(0x1F);
-                       reg_val |= SUNXI_SPDIF_TXCFG_TXRATIO(div-1);
-                       writel(reg_val, sunxi_spdif.regs + SUNXI_SPDIF_TXCFG);
-
-                       if(clk_get_rate(spdif_pll2clk) == 24576000)
-                       {
-                               switch(div)
-                               {
-                                       /* 24KHZ */
-                                       case 8:
-                                               reg_val = 
readl(sunxi_spdif.regs + SUNXI_SPDIF_TXCHSTA0);
-                                               reg_val |= 
(SUNXI_SPDIF_TXCHSTA0_SAMFREQ(0x6));
-                                               writel(reg_val, 
sunxi_spdif.regs + SUNXI_SPDIF_TXCHSTA0);
-
-                                               reg_val = 
readl(sunxi_spdif.regs + SUNXI_SPDIF_TXCHSTA1);
-                                               reg_val |= 
(SUNXI_SPDIF_TXCHSTA1_ORISAMFREQ(0x9));
-                                               writel(reg_val, 
sunxi_spdif.regs + SUNXI_SPDIF_TXCHSTA1);
-                                               break;
-
-                                       /* 32KHZ */
-                                       case 6:
-                                               reg_val = 
readl(sunxi_spdif.regs + SUNXI_SPDIF_TXCHSTA0);
-                                               reg_val |= 
(SUNXI_SPDIF_TXCHSTA0_SAMFREQ(0x3));
-                                               writel(reg_val, 
sunxi_spdif.regs + SUNXI_SPDIF_TXCHSTA0);
-
-                                               reg_val = 
readl(sunxi_spdif.regs + SUNXI_SPDIF_TXCHSTA1);
-                                               reg_val |= 
(SUNXI_SPDIF_TXCHSTA1_ORISAMFREQ(0xC));
-                                               writel(reg_val, 
sunxi_spdif.regs + SUNXI_SPDIF_TXCHSTA1);
-                                               break;
-
-                                       /* 48KHZ */
-                                       case 4:
-                                               reg_val = 
readl(sunxi_spdif.regs + SUNXI_SPDIF_TXCHSTA0);
-                                               reg_val |= 
(SUNXI_SPDIF_TXCHSTA0_SAMFREQ(0x2));
-                                               writel(reg_val, 
sunxi_spdif.regs + SUNXI_SPDIF_TXCHSTA0);
-
-                                               reg_val = 
readl(sunxi_spdif.regs + SUNXI_SPDIF_TXCHSTA1);
-                                               reg_val |= 
(SUNXI_SPDIF_TXCHSTA1_ORISAMFREQ(0xD));
-                                               writel(reg_val, 
sunxi_spdif.regs + SUNXI_SPDIF_TXCHSTA1);
-                                               break;
-
-                                       /* 96KHZ */
-                                       case 2:
-                                               reg_val = 
readl(sunxi_spdif.regs + SUNXI_SPDIF_TXCHSTA0);
-                                               reg_val |= 
(SUNXI_SPDIF_TXCHSTA0_SAMFREQ(0xA));
-                                               writel(reg_val, 
sunxi_spdif.regs + SUNXI_SPDIF_TXCHSTA0);
-
-                                               reg_val = 
readl(sunxi_spdif.regs + SUNXI_SPDIF_TXCHSTA1);
-                                               reg_val |= 
(SUNXI_SPDIF_TXCHSTA1_ORISAMFREQ(0x5));
-                                               writel(reg_val, 
sunxi_spdif.regs + SUNXI_SPDIF_TXCHSTA1);
-                                               break;
-
-                                       /* 192KHZ */
-                                       case 1:
-                                               reg_val = 
readl(sunxi_spdif.regs + SUNXI_SPDIF_TXCHSTA0);
-                                               reg_val |= 
(SUNXI_SPDIF_TXCHSTA0_SAMFREQ(0xE));
-                                               writel(reg_val, 
sunxi_spdif.regs + SUNXI_SPDIF_TXCHSTA0);
-
-                                               reg_val = 
readl(sunxi_spdif.regs + SUNXI_SPDIF_TXCHSTA1);
-                                               reg_val |= 
(SUNXI_SPDIF_TXCHSTA1_ORISAMFREQ(0x1));
-                                               writel(reg_val, 
sunxi_spdif.regs + SUNXI_SPDIF_TXCHSTA1);
-                                               break;
-
-                                       default:
-                                               reg_val = 
readl(sunxi_spdif.regs + SUNXI_SPDIF_TXCHSTA0);
-                                               reg_val |= 
(SUNXI_SPDIF_TXCHSTA0_SAMFREQ(1));
-                                               writel(reg_val, 
sunxi_spdif.regs + SUNXI_SPDIF_TXCHSTA0);
-
-                                               reg_val = 
readl(sunxi_spdif.regs + SUNXI_SPDIF_TXCHSTA1);
-                                               reg_val |= 
(SUNXI_SPDIF_TXCHSTA1_ORISAMFREQ(0));
-                                               writel(reg_val, 
sunxi_spdif.regs + SUNXI_SPDIF_TXCHSTA1);
-                                               break;
-                               }
-                       } else {  /* 22.5792MHz */
-                               switch(div)
-                               {
-                                       /* 22.05khz */
-                                       case 8:
-                                               reg_val = 
readl(sunxi_spdif.regs + SUNXI_SPDIF_TXCHSTA0);
-                                               reg_val |= 
(SUNXI_SPDIF_TXCHSTA0_SAMFREQ(0x4));
-                                               writel(reg_val, 
sunxi_spdif.regs + SUNXI_SPDIF_TXCHSTA0);
-
-                                               reg_val = 
readl(sunxi_spdif.regs + SUNXI_SPDIF_TXCHSTA1);
-                                               reg_val |= 
(SUNXI_SPDIF_TXCHSTA1_ORISAMFREQ(0xb));
-                                               writel(reg_val, 
sunxi_spdif.regs + SUNXI_SPDIF_TXCHSTA1);
-                                               break;
-
-                                       /* 44.1KHZ */
-                                       case 4:
-                                               reg_val = 
readl(sunxi_spdif.regs + SUNXI_SPDIF_TXCHSTA0);
-                                               reg_val |= 
(SUNXI_SPDIF_TXCHSTA0_SAMFREQ(0x0));
-                                               writel(reg_val, 
sunxi_spdif.regs + SUNXI_SPDIF_TXCHSTA0);
-
-                                               reg_val = 
readl(sunxi_spdif.regs + SUNXI_SPDIF_TXCHSTA1);
-                                               reg_val |= 
(SUNXI_SPDIF_TXCHSTA1_ORISAMFREQ(0xF));
-                                               writel(reg_val, 
sunxi_spdif.regs + SUNXI_SPDIF_TXCHSTA1);
-                                               break;
-
-                                       /* 88.2khz */
-                                       case 2:
-                                               reg_val = 
readl(sunxi_spdif.regs + SUNXI_SPDIF_TXCHSTA0);
-                                               reg_val |= 
(SUNXI_SPDIF_TXCHSTA0_SAMFREQ(0x8));
-                                               writel(reg_val, 
sunxi_spdif.regs + SUNXI_SPDIF_TXCHSTA0);
-
-                                               reg_val = 
readl(sunxi_spdif.regs + SUNXI_SPDIF_TXCHSTA1);
-                                               reg_val |= 
(SUNXI_SPDIF_TXCHSTA1_ORISAMFREQ(0x7));
-                                               writel(reg_val, 
sunxi_spdif.regs + SUNXI_SPDIF_TXCHSTA1);
-                                               break;
-
-                                       /* 176.4KHZ */
-                                       case 1:
-                                               reg_val = 
readl(sunxi_spdif.regs + SUNXI_SPDIF_TXCHSTA0);
-                                               reg_val |= 
(SUNXI_SPDIF_TXCHSTA0_SAMFREQ(0xC));
-                                               writel(reg_val, 
sunxi_spdif.regs + SUNXI_SPDIF_TXCHSTA0);
-
-                                               reg_val = 
readl(sunxi_spdif.regs + SUNXI_SPDIF_TXCHSTA1);
-                                               reg_val |= 
(SUNXI_SPDIF_TXCHSTA1_ORISAMFREQ(0x3));
-                                               writel(reg_val, 
sunxi_spdif.regs + SUNXI_SPDIF_TXCHSTA1);
-                                               break;
-
-                                       default:
-                                               reg_val = 
readl(sunxi_spdif.regs + SUNXI_SPDIF_TXCHSTA0);
-                                               reg_val |= 
(SUNXI_SPDIF_TXCHSTA0_SAMFREQ(1));
-                                               writel(reg_val, 
sunxi_spdif.regs + SUNXI_SPDIF_TXCHSTA0);
-
-                                               reg_val = 
readl(sunxi_spdif.regs + SUNXI_SPDIF_TXCHSTA1);
-                                               reg_val |= 
(SUNXI_SPDIF_TXCHSTA1_ORISAMFREQ(0));
-                                               writel(reg_val, 
sunxi_spdif.regs + SUNXI_SPDIF_TXCHSTA1);
-                                               break;
-                               }
+       writel(reg_val, sunxi_spdif.regs + SUNXI_SPDIF_TXCHSTA1);
+
+       switch (div_id) {
+       case SUNXI_DIV_MCLK: {
+               reg_val = readl(sunxi_spdif.regs + SUNXI_SPDIF_TXCFG);
+               reg_val &= ~SUNXI_SPDIF_TXCFG_TXRATIO(0x1F);
+               reg_val |= SUNXI_SPDIF_TXCFG_TXRATIO(div-1);
+               writel(reg_val, sunxi_spdif.regs + SUNXI_SPDIF_TXCFG);
+
+               if (clk_get_rate(spdif_pll2clk) == 24576000) {
+                       switch (div) {
+                       /* 24KHZ */
+                       case 8:
+                               reg_val = readl(sunxi_spdif.regs +
+                                                       SUNXI_SPDIF_TXCHSTA0);
+                               reg_val |= (SUNXI_SPDIF_TXCHSTA0_SAMFREQ(0x6));
+                               writel(reg_val, sunxi_spdif.regs +
+                                                       SUNXI_SPDIF_TXCHSTA0);
+
+                               reg_val = readl(sunxi_spdif.regs +
+                                                       SUNXI_SPDIF_TXCHSTA1);
+                               reg_val |=
+                                       (SUNXI_SPDIF_TXCHSTA1_ORISAMFREQ(0x9));
+                               writel(reg_val, sunxi_spdif.regs +
+                                                       SUNXI_SPDIF_TXCHSTA1);
+                               break;
+
+                       /* 32KHZ */
+                       case 6:
+                               reg_val = readl(sunxi_spdif.regs +
+                                                       SUNXI_SPDIF_TXCHSTA0);
+                               reg_val |= (SUNXI_SPDIF_TXCHSTA0_SAMFREQ(0x3));
+                               writel(reg_val, sunxi_spdif.regs +
+                                                       SUNXI_SPDIF_TXCHSTA0);
+
+                               reg_val = readl(sunxi_spdif.regs +
+                                                       SUNXI_SPDIF_TXCHSTA1);
+                               reg_val |=
+                                       (SUNXI_SPDIF_TXCHSTA1_ORISAMFREQ(0xC));
+                               writel(reg_val, sunxi_spdif.regs +
+                                                       SUNXI_SPDIF_TXCHSTA1);
+                               break;
+
+                       /* 48KHZ */
+                       case 4:
+                               reg_val = readl(sunxi_spdif.regs +
+                                                       SUNXI_SPDIF_TXCHSTA0);
+                               reg_val |= (SUNXI_SPDIF_TXCHSTA0_SAMFREQ(0x2));
+                               writel(reg_val, sunxi_spdif.regs +
+                                                       SUNXI_SPDIF_TXCHSTA0);
+
+                               reg_val = readl(sunxi_spdif.regs +
+                                                       SUNXI_SPDIF_TXCHSTA1);
+                               reg_val |=
+                                       (SUNXI_SPDIF_TXCHSTA1_ORISAMFREQ(0xD));
+                               writel(reg_val, sunxi_spdif.regs +
+                                                       SUNXI_SPDIF_TXCHSTA1);
+                               break;
+
+                       /* 96KHZ */
+                       case 2:
+                               reg_val = readl(sunxi_spdif.regs +
+                                                       SUNXI_SPDIF_TXCHSTA0);
+                               reg_val |= (SUNXI_SPDIF_TXCHSTA0_SAMFREQ(0xA));
+                               writel(reg_val, sunxi_spdif.regs +
+                                                       SUNXI_SPDIF_TXCHSTA0);
+
+                               reg_val = readl(sunxi_spdif.regs +
+                                                       SUNXI_SPDIF_TXCHSTA1);
+                               reg_val |=
+                                       (SUNXI_SPDIF_TXCHSTA1_ORISAMFREQ(0x5));
+                               writel(reg_val, sunxi_spdif.regs +
+                                                       SUNXI_SPDIF_TXCHSTA1);
+                               break;
+
+                       /* 192KHZ */
+                       case 1:
+                               reg_val = readl(sunxi_spdif.regs +
+                                                       SUNXI_SPDIF_TXCHSTA0);
+                               reg_val |= (SUNXI_SPDIF_TXCHSTA0_SAMFREQ(0xE));
+                               writel(reg_val, sunxi_spdif.regs +
+                                                       SUNXI_SPDIF_TXCHSTA0);
+
+                               reg_val = readl(sunxi_spdif.regs +
+                                                       SUNXI_SPDIF_TXCHSTA1);
+                               reg_val |=
+                                       (SUNXI_SPDIF_TXCHSTA1_ORISAMFREQ(0x1));
+                               writel(reg_val, sunxi_spdif.regs +
+                                                       SUNXI_SPDIF_TXCHSTA1);
+                               break;
+
+                       default:
+                               reg_val = readl(sunxi_spdif.regs +
+                                                       SUNXI_SPDIF_TXCHSTA0);
+                               reg_val |= (SUNXI_SPDIF_TXCHSTA0_SAMFREQ(1));
+                               writel(reg_val, sunxi_spdif.regs +
+                                                       SUNXI_SPDIF_TXCHSTA0);
+
+                               reg_val = readl(sunxi_spdif.regs +
+                                                       SUNXI_SPDIF_TXCHSTA1);
+                               reg_val |= (SUNXI_SPDIF_TXCHSTA1_ORISAMFREQ(0));
+                               writel(reg_val, sunxi_spdif.regs +
+                                                       SUNXI_SPDIF_TXCHSTA1);
+                               break;
+                       }
+               } else {
+                       /* 22.5792MHz */
+                       switch (div) {
+                       /* 22.05KHZ */
+                       case 8:
+                               reg_val = readl(sunxi_spdif.regs +
+                                                       SUNXI_SPDIF_TXCHSTA0);
+                               reg_val |= (SUNXI_SPDIF_TXCHSTA0_SAMFREQ(0x4));
+                               writel(reg_val, sunxi_spdif.regs +
+                                                       SUNXI_SPDIF_TXCHSTA0);
+
+                               reg_val = readl(sunxi_spdif.regs +
+                                                       SUNXI_SPDIF_TXCHSTA1);
+                               reg_val |=
+                                       (SUNXI_SPDIF_TXCHSTA1_ORISAMFREQ(0xb));
+                               writel(reg_val, sunxi_spdif.regs +
+                                                       SUNXI_SPDIF_TXCHSTA1);
+                               break;
+
+                       /* 44.1KHZ */
+                       case 4:
+                               reg_val = readl(sunxi_spdif.regs +
+                                                       SUNXI_SPDIF_TXCHSTA0);
+                               reg_val |= (SUNXI_SPDIF_TXCHSTA0_SAMFREQ(0x0));
+                               writel(reg_val, sunxi_spdif.regs +
+                                                       SUNXI_SPDIF_TXCHSTA0);
+
+                               reg_val = readl(sunxi_spdif.regs +
+                                                       SUNXI_SPDIF_TXCHSTA1);
+                               reg_val |=
+                                       (SUNXI_SPDIF_TXCHSTA1_ORISAMFREQ(0xF));
+                               writel(reg_val, sunxi_spdif.regs +
+                                                       SUNXI_SPDIF_TXCHSTA1);
+                               break;
+
+                       /* 88.2KHZ */
+                       case 2:
+                               reg_val = readl(sunxi_spdif.regs +
+                                                       SUNXI_SPDIF_TXCHSTA0);
+                               reg_val |= (SUNXI_SPDIF_TXCHSTA0_SAMFREQ(0x8));
+                               writel(reg_val, sunxi_spdif.regs +
+                                                       SUNXI_SPDIF_TXCHSTA0);
+
+                               reg_val = readl(sunxi_spdif.regs +
+                                                       SUNXI_SPDIF_TXCHSTA1);
+                               reg_val |=
+                                       (SUNXI_SPDIF_TXCHSTA1_ORISAMFREQ(0x7));
+                               writel(reg_val, sunxi_spdif.regs +
+                                                       SUNXI_SPDIF_TXCHSTA1);
+                               break;
+
+                       /* 176.4KHZ */
+                       case 1:
+                               reg_val = readl(sunxi_spdif.regs +
+                                                       SUNXI_SPDIF_TXCHSTA0);
+                               reg_val |= (SUNXI_SPDIF_TXCHSTA0_SAMFREQ(0xC));
+                               writel(reg_val, sunxi_spdif.regs +
+                                                       SUNXI_SPDIF_TXCHSTA0);
+
+                               reg_val = readl(sunxi_spdif.regs +
+                                                       SUNXI_SPDIF_TXCHSTA1);
+                               reg_val |=
+                                       (SUNXI_SPDIF_TXCHSTA1_ORISAMFREQ(0x3));
+                               writel(reg_val, sunxi_spdif.regs +
+                                                       SUNXI_SPDIF_TXCHSTA1);
+                               break;
+
+                       default:
+                               reg_val = readl(sunxi_spdif.regs +
+                                                       SUNXI_SPDIF_TXCHSTA0);
+                               reg_val |= (SUNXI_SPDIF_TXCHSTA0_SAMFREQ(1));
+                               writel(reg_val, sunxi_spdif.regs +
+                                                       SUNXI_SPDIF_TXCHSTA0);
+
+                               reg_val = readl(sunxi_spdif.regs +
+                                                       SUNXI_SPDIF_TXCHSTA1);
+                               reg_val |= (SUNXI_SPDIF_TXCHSTA1_ORISAMFREQ(0));
+                               writel(reg_val, sunxi_spdif.regs +
+                                                       SUNXI_SPDIF_TXCHSTA1);
+                               break;
                        }
                }
-               break;
-               case SUNXI_DIV_BCLK:
-               break;
+       }
+       break;
+       case SUNXI_DIV_BCLK:
+       break;
 
-               default:
-                       return -EINVAL;
+       default:
+               return -EINVAL;
        }
 
        return 0;
@@ -403,6 +450,7 @@ static int sunxi_spdif_dai_probe(struct snd_soc_dai *dai)
 {
        return 0;
 }
+
 static int sunxi_spdif_dai_remove(struct snd_soc_dai *dai)
 {
        return 0;
@@ -412,7 +460,7 @@ static void spdifregsave(void)
 {
        regsave[0] = readl(sunxi_spdif.regs + SUNXI_SPDIF_CTL);
        regsave[1] = readl(sunxi_spdif.regs + SUNXI_SPDIF_TXCFG);
-       regsave[2] = readl(sunxi_spdif.regs + SUNXI_SPDIF_FCTL) | (0x3<<16);
+       regsave[2] = readl(sunxi_spdif.regs + SUNXI_SPDIF_FCTL) | (0x3 << 16);
        regsave[3] = readl(sunxi_spdif.regs + SUNXI_SPDIF_INT);
        regsave[4] = readl(sunxi_spdif.regs + SUNXI_SPDIF_TXCHSTA0);
        regsave[5] = readl(sunxi_spdif.regs + SUNXI_SPDIF_TXCHSTA1);
@@ -428,7 +476,7 @@ static void spdifregrestore(void)
        writel(regsave[5], sunxi_spdif.regs + SUNXI_SPDIF_TXCHSTA1);
 }
 
-//#ifdef CONFIG_PM
+#if 1 /* def CONFIG_PM */
 static int sunxi_spdif_suspend(struct snd_soc_dai *cpu_dai)
 {
        u32 reg_val;
@@ -445,8 +493,10 @@ static int sunxi_spdif_suspend(struct snd_soc_dai *cpu_dai)
 
        clk_disable(spdif_apbclk);
 
-       printk("[SPDIF]SPECIAL CLK 0x01c20068 = %#x, line= %d\n", *(volatile 
int*)0xF1C20068, __LINE__);
-       printk("[SPDIF]SPECIAL CLK 0x01c200C0 = %#x, line= %d\n", *(volatile 
int*)0xF1C200C0, __LINE__);
+       printk("[SPDIF]SPECIAL CLK 0x01c20068 = %#x, line= %d\n",
+                                       *(volatile int *)0xF1C20068, __LINE__);
+       printk("[SPDIF]SPECIAL CLK 0x01c200C0 = %#x, line= %d\n",
+                                       *(volatile int *)0xF1C200C0, __LINE__);
 
        return 0;
 }
@@ -468,38 +518,44 @@ static int sunxi_spdif_resume(struct snd_soc_dai *cpu_dai)
        reg_val |= SUNXI_SPDIF_CTL_GEN;
        writel(reg_val, sunxi_spdif.regs + SUNXI_SPDIF_CTL);
 
-       //printk("[SPDIF]PLL2 0x01c20008 = %#x\n", *(volatile int*)0xF1C20008);
-       printk("[SPDIF]SPECIAL CLK 0x01c20068 = %#x, line= %d\n", *(volatile 
int*)0xF1C20068, __LINE__);
-       printk("[SPDIF]SPECIAL CLK 0x01c200C0 = %#x, line = %d\n", *(volatile 
int*)0xF1C200C0, __LINE__);
+       /*printk("[SPDIF]PLL2 0x01c20008 = %#x\n",*(volatile int*)0xF1C20008);*/
+       printk("[SPDIF]SPECIAL CLK 0x01c20068 = %#x, line= %d\n",
+                                       *(volatile int *)0xF1C20068, __LINE__);
+       printk("[SPDIF]SPECIAL CLK 0x01c200C0 = %#x, line = %d\n",
+                                       *(volatile int *)0xF1C200C0, __LINE__);
 
        return 0;
 }
+#endif
 
 #define SUNXI_SPDIF_RATES (SNDRV_PCM_RATE_8000_192000 | SNDRV_PCM_RATE_KNOT)
 static struct snd_soc_dai_ops sunxi_spdif_dai_ops = {
-       .trigger                = sunxi_spdif_trigger,
-       .hw_params      = sunxi_spdif_hw_params,
-       .set_fmt                = sunxi_spdif_set_fmt,
-       .set_clkdiv = sunxi_spdif_set_clkdiv,
-       .set_sysclk = sunxi_spdif_set_sysclk,
+       .trigger                = sunxi_spdif_trigger,
+       .hw_params              = sunxi_spdif_hw_params,
+       .set_fmt                = sunxi_spdif_set_fmt,
+       .set_clkdiv             = sunxi_spdif_set_clkdiv,
+       .set_sysclk             = sunxi_spdif_set_sysclk,
 };
+
 static struct snd_soc_dai_driver sunxi_spdif_dai = {
-       .probe          = sunxi_spdif_dai_probe,
-       .suspend        = sunxi_spdif_suspend,
-       .resume         = sunxi_spdif_resume,
-       .remove         = sunxi_spdif_dai_remove,
-       .playback = {
-               .channels_min = 1,
-               .channels_max = 2,
-               .rates = SUNXI_SPDIF_RATES,
-       .formats = SNDRV_PCM_FMTBIT_S16_LE,},
+       .probe                  = sunxi_spdif_dai_probe,
+       .suspend                = sunxi_spdif_suspend,
+       .resume                 = sunxi_spdif_resume,
+       .remove                 = sunxi_spdif_dai_remove,
+       .playback               = {
+               .channels_min   = 1,
+               .channels_max   = 2,
+               .rates          = SUNXI_SPDIF_RATES,
+               .formats        = SNDRV_PCM_FMTBIT_S16_LE,
+               },
        .capture = {
-               .channels_min = 1,
-               .channels_max = 2,
-               .rates = SUNXI_SPDIF_RATES,
-               .formats = SNDRV_PCM_FMTBIT_S16_LE,},
-       .symmetric_rates = 1,
-       .ops = &sunxi_spdif_dai_ops,
+               .channels_min   = 1,
+               .channels_max   = 2,
+               .rates          = SUNXI_SPDIF_RATES,
+               .formats        = SNDRV_PCM_FMTBIT_S16_LE,
+               },
+       .symmetric_rates        = 1,
+       .ops                    = &sunxi_spdif_dai_ops,
 };
 
 static int __devinit sunxi_spdif_dev_probe(struct platform_device *pdev)
@@ -508,13 +564,12 @@ static int __devinit sunxi_spdif_dev_probe(struct 
platform_device *pdev)
        int ret = 0;
 
        sunxi_spdif.regs = ioremap(SUNXI_SPDIFBASE, 0x100);
-       if(sunxi_spdif.regs == NULL)
+       if (sunxi_spdif.regs == NULL)
                return -ENXIO;
 
                spdif_apbclk = clk_get(NULL, "apb_spdif");
-               if(-1 == clk_enable(spdif_apbclk)){
+               if (-1 == clk_enable(spdif_apbclk))
                        printk("spdif_apbclk failed! line = %d\n", __LINE__);
-               }
 
                spdif_pllx8 = clk_get(NULL, "audio_pllx8");
 
@@ -522,17 +577,17 @@ static int __devinit sunxi_spdif_dev_probe(struct 
platform_device *pdev)
 
                spdif_moduleclk = clk_get(NULL, "spdif");
 
-               if(clk_set_parent(spdif_moduleclk, spdif_pll2clk)){
-                       printk("try to set parent of spdif_moduleclk to 
spdif_pll2ck failed! line = %d\n",__LINE__);
-               }
+               if (clk_set_parent(spdif_moduleclk, spdif_pll2clk))
+                       printk("try to set parent of spdif_moduleclk to "\
+                               "spdif_pll2ck failed! line = %d\n", __LINE__);
 
-               if(clk_set_rate(spdif_moduleclk, 24576000/8)){
-                       printk("set spdif_moduleclk clock freq to 24576000 
failed! line = %d\n", __LINE__);
-               }
+               if (clk_set_rate(spdif_moduleclk, 24576000/8))
+                       printk("set spdif_moduleclk clock freq to 24576000 "\
+                               "failed! line = %d\n", __LINE__);
 
-               if(-1 == clk_enable(spdif_moduleclk)){
-                       printk("open spdif_moduleclk failed! line = %d\n", 
__LINE__);
-               }
+               if (-1 == clk_enable(spdif_moduleclk))
+                       printk("open spdif_moduleclk failed! line = %d\n",
+                                                               __LINE__);
 
                /* Global enbale */
                reg_val = readl(sunxi_spdif.regs + SUNXI_SPDIF_CTL);
diff --git a/sound/soc/sunxi/spdif/sunxi_spdif.h 
b/sound/soc/sunxi/spdif/sunxi_spdif.h
index b4157f6..e1d1dd4 100644
--- a/sound/soc/sunxi/spdif/sunxi_spdif.h
+++ b/sound/soc/sunxi/spdif/sunxi_spdif.h
@@ -20,109 +20,109 @@
 #define SUNXI_SPDIFBASE 0x01C21000
 
 #define        SUNXI_SPDIF_CTL (0x00)
-       #define SUNXI_SPDIF_CTL_MCLKDIV(v)              ((v)<<4)                
//v even
-       #define SUNXI_SPDIF_CTL_MCLKOUTEN                       (1<<2)
-       #define SUNXI_SPDIF_CTL_GEN                                             
(1<<1)
-       #define SUNXI_SPDIF_CTL_RESET                                   (1<<0)
+       #define SUNXI_SPDIF_CTL_MCLKDIV(v)              ((v) << 4) /* v even */
+       #define SUNXI_SPDIF_CTL_MCLKOUTEN               (1 << 2)
+       #define SUNXI_SPDIF_CTL_GEN                     (1 << 1)
+       #define SUNXI_SPDIF_CTL_RESET                   (1 << 0)
 
 #define SUNXI_SPDIF_TXCFG (0x04)
-       #define SUNXI_SPDIF_TXCFG_SINGLEMOD             (1<<31)
-       #define SUNXI_SPDIF_TXCFG_ASS                                   (1<<17)
-       #define SUNXI_SPDIF_TXCFG_NONAUDIO              (1<<16)
-       #define SUNXI_SPDIF_TXCFG_TXRATIO(v)    ((v)<<4)
-       #define SUNXI_SPDIF_TXCFG_FMTRVD                        (3<<2)
-       #define SUNXI_SPDIF_TXCFG_FMT16BIT              (0<<2)
-       #define SUNXI_SPDIF_TXCFG_FMT20BIT              (1<<2)
-       #define SUNXI_SPDIF_TXCFG_FMT24BIT              (2<<2)
-       #define SUNXI_SPDIF_TXCFG_CHSTMODE              (1<<1)
-       #define SUNXI_SPDIF_TXCFG_TXEN                          (1<<0)
+       #define SUNXI_SPDIF_TXCFG_SINGLEMOD             (1 << 31)
+       #define SUNXI_SPDIF_TXCFG_ASS                   (1 << 17)
+       #define SUNXI_SPDIF_TXCFG_NONAUDIO              (1 << 16)
+       #define SUNXI_SPDIF_TXCFG_TXRATIO(v)            ((v) << 4)
+       #define SUNXI_SPDIF_TXCFG_FMTRVD                (3 << 2)
+       #define SUNXI_SPDIF_TXCFG_FMT16BIT              (0 << 2)
+       #define SUNXI_SPDIF_TXCFG_FMT20BIT              (1 << 2)
+       #define SUNXI_SPDIF_TXCFG_FMT24BIT              (2 << 2)
+       #define SUNXI_SPDIF_TXCFG_CHSTMODE              (1 << 1)
+       #define SUNXI_SPDIF_TXCFG_TXEN                  (1 << 0)
 
 #define SUNXI_SPDIF_RXCFG (0x08)
-       #define SUNXI_SPDIF_RXCFG_LOCKFLAG              (1<<4)
-       #define SUNXI_SPDIF_RXCFG_CHSTSRC                       (1<<3)
-       #define SUNXI_SPDIF_RXCFG_CHSTCP                        (1<<1)
-       #define SUNXI_SPDIF_RXCFG_RXEN                          (1<<0)
+       #define SUNXI_SPDIF_RXCFG_LOCKFLAG              (1 << 4)
+       #define SUNXI_SPDIF_RXCFG_CHSTSRC               (1 << 3)
+       #define SUNXI_SPDIF_RXCFG_CHSTCP                (1 << 1)
+       #define SUNXI_SPDIF_RXCFG_RXEN                  (1 << 0)
 
 #define SUNXI_SPDIF_TXFIFO (0x0C)
 
 #define SUNXI_SPDIF_RXFIFO (0x10)
 
 #define SUNXI_SPDIF_FCTL (0x14)
-       #define SUNXI_SPDIF_FCTL_FIFOSRC                        (1<<31)
-       #define SUNXI_SPDIF_FCTL_FTX                                    (1<<17)
-       #define SUNXI_SPDIF_FCTL_FRX                                    (1<<16)
-       #define SUNXI_SPDIF_FCTL_TXTL(v)                        ((v)<<8)
-       #define SUNXI_SPDIF_FCTL_RXTL(v)                        (((v))<<3)
-       #define SUNXI_SPDIF_FCTL_TXIM(v)                        ((v)<<2)
-       #define SUNXI_SPDIF_FCTL_RXOM(v)                        ((v)<<0)
+       #define SUNXI_SPDIF_FCTL_FIFOSRC                (1 << 31)
+       #define SUNXI_SPDIF_FCTL_FTX                    (1 << 17)
+       #define SUNXI_SPDIF_FCTL_FRX                    (1 << 16)
+       #define SUNXI_SPDIF_FCTL_TXTL(v)                ((v) << 8)
+       #define SUNXI_SPDIF_FCTL_RXTL(v)                ((v) << 3)
+       #define SUNXI_SPDIF_FCTL_TXIM(v)                ((v) << 2)
+       #define SUNXI_SPDIF_FCTL_RXOM(v)                ((v) << 0)
 
 #define SUNXI_SPDIF_FSTA (0x18)
-       #define SUNXI_SPDIF_FSTA_TXE                                    (1<<14)
+       #define SUNXI_SPDIF_FSTA_TXE                    (1 << 14)
        #define SUNXI_SPDIF_FSTA_TXECNTSHT              (8)
-       #define SUNXI_SPDIF_FSTA_RXA                                    (1<<6)
+       #define SUNXI_SPDIF_FSTA_RXA                    (1 << 6)
        #define SUNXI_SPDIF_FSTA_RXACNTSHT              (0)
 
 #define SUNXI_SPDIF_INT (0x1C)
-       #define SUNXI_SPDIF_INT_RXLOCKEN                        (1<<18)
-       #define SUNXI_SPDIF_INT_RXUNLOCKEN              (1<<17)
-       #define SUNXI_SPDIF_INT_RXPARERREN              (1<<16)
-       #define SUNXI_SPDIF_INT_TXDRQEN                         (1<<7)
-       #define SUNXI_SPDIF_INT_TXUIEN                          (1<<6)
-       #define SUNXI_SPDIF_INT_TXOIEN                          (1<<5)
-       #define SUNXI_SPDIF_INT_TXEIEN                          (1<<4)
-       #define SUNXI_SPDIF_INT_RXDRQEN                         (1<<2)
-       #define SUNXI_SPDIF_INT_RXOIEN                          (1<<1)
-       #define SUNXI_SPDIF_INT_RXAIEN                          (1<<0)
+       #define SUNXI_SPDIF_INT_RXLOCKEN                (1 << 18)
+       #define SUNXI_SPDIF_INT_RXUNLOCKEN              (1 << 17)
+       #define SUNXI_SPDIF_INT_RXPARERREN              (1 << 16)
+       #define SUNXI_SPDIF_INT_TXDRQEN                 (1 << 7)
+       #define SUNXI_SPDIF_INT_TXUIEN                  (1 << 6)
+       #define SUNXI_SPDIF_INT_TXOIEN                  (1 << 5)
+       #define SUNXI_SPDIF_INT_TXEIEN                  (1 << 4)
+       #define SUNXI_SPDIF_INT_RXDRQEN                 (1 << 2)
+       #define SUNXI_SPDIF_INT_RXOIEN                  (1 << 1)
+       #define SUNXI_SPDIF_INT_RXAIEN                  (1 << 0)
 
 #define SUNXI_SPDIF_ISTA (0x20)
-       #define SUNXI_SPDIF_ISTA_RXLOCKSTA              (1<<18)
-       #define SUNXI_SPDIF_ISTA_RXUNLOCKSTA    (1<<17)
-       #define SUNXI_SPDIF_ISTA_RXPARERRSTA    (1<<16)
-       #define SUNXI_SPDIF_ISTA_TXUSTA                         (1<<6)
-       #define SUNXI_SPDIF_ISTA_TXOSTA                         (1<<5)
-       #define SUNXI_SPDIF_ISTA_TXESTA                         (1<<4)
-       #define SUNXI_SPDIF_ISTA_RXOSTA                         (1<<1)
-       #define SUNXI_SPDIF_ISTA_RXASTA                         (1<<0)
+       #define SUNXI_SPDIF_ISTA_RXLOCKSTA              (1 << 18)
+       #define SUNXI_SPDIF_ISTA_RXUNLOCKSTA            (1 << 17)
+       #define SUNXI_SPDIF_ISTA_RXPARERRSTA            (1 << 16)
+       #define SUNXI_SPDIF_ISTA_TXUSTA                 (1 << 6)
+       #define SUNXI_SPDIF_ISTA_TXOSTA                 (1 << 5)
+       #define SUNXI_SPDIF_ISTA_TXESTA                 (1 << 4)
+       #define SUNXI_SPDIF_ISTA_RXOSTA                 (1 << 1)
+       #define SUNXI_SPDIF_ISTA_RXASTA                 (1 << 0)
 
 #define SUNXI_SPDIF_TXCNT      (0x24)
 
 #define SUNXI_SPDIF_RXCNT      (0x28)
 
 #define SUNXI_SPDIF_TXCHSTA0 (0x2C)
-       #define SUNXI_SPDIF_TXCHSTA0_CLK(v)                                     
((v)<<28)
-       #define SUNXI_SPDIF_TXCHSTA0_SAMFREQ(v)                 ((v)<<24)
-       #define SUNXI_SPDIF_TXCHSTA0_CHNUM(v)                           
((v)<<20)
-       #define SUNXI_SPDIF_TXCHSTA0_SRCNUM(v)                  ((v)<<16)
-       #define SUNXI_SPDIF_TXCHSTA0_CATACOD(v)                 ((v)<<8)
-       #define SUNXI_SPDIF_TXCHSTA0_MODE(v)                            ((v)<<6)
-       #define SUNXI_SPDIF_TXCHSTA0_EMPHASIS(v)          ((v)<<3)
-       #define SUNXI_SPDIF_TXCHSTA0_CP                                         
        (1<<2)
-       #define SUNXI_SPDIF_TXCHSTA0_AUDIO                                      
(1<<1)
-       #define SUNXI_SPDIF_TXCHSTA0_PRO                                        
        (1<<0)
+       #define SUNXI_SPDIF_TXCHSTA0_CLK(v)             ((v) << 28)
+       #define SUNXI_SPDIF_TXCHSTA0_SAMFREQ(v)         ((v) << 24)
+       #define SUNXI_SPDIF_TXCHSTA0_CHNUM(v)           ((v) << 20)
+       #define SUNXI_SPDIF_TXCHSTA0_SRCNUM(v)          ((v) << 16)
+       #define SUNXI_SPDIF_TXCHSTA0_CATACOD(v)         ((v) << 8)
+       #define SUNXI_SPDIF_TXCHSTA0_MODE(v)            ((v) << 6)
+       #define SUNXI_SPDIF_TXCHSTA0_EMPHASIS(v)        ((v) << 3)
+       #define SUNXI_SPDIF_TXCHSTA0_CP                 (1 << 2)
+       #define SUNXI_SPDIF_TXCHSTA0_AUDIO              (1 << 1)
+       #define SUNXI_SPDIF_TXCHSTA0_PRO                (1 << 0)
 
 #define SUNXI_SPDIF_TXCHSTA1 (0x30)
-       #define SUNXI_SPDIF_TXCHSTA1_CGMSA(v)                           ((v)<<8)
-       #define SUNXI_SPDIF_TXCHSTA1_ORISAMFREQ(v)      ((v)<<4)
-       #define SUNXI_SPDIF_TXCHSTA1_SAMWORDLEN(v)      ((v)<<1)
-       #define SUNXI_SPDIF_TXCHSTA1_MAXWORDLEN                 (1<<0)
+       #define SUNXI_SPDIF_TXCHSTA1_CGMSA(v)           ((v) << 8)
+       #define SUNXI_SPDIF_TXCHSTA1_ORISAMFREQ(v)      ((v) << 4)
+       #define SUNXI_SPDIF_TXCHSTA1_SAMWORDLEN(v)      ((v) << 1)
+       #define SUNXI_SPDIF_TXCHSTA1_MAXWORDLEN         (1 << 0)
 
 #define SUNXI_SPDIF_RXCHSTA0 (0x34)
-       #define SUNXI_SPDIF_RXCHSTA0_CLK(v)                                     
((v)<<28)
-       #define SUNXI_SPDIF_RXCHSTA0_SAMFREQ(v)                 ((v)<<24)
-       #define SUNXI_SPDIF_RXCHSTA0_CHNUM(v)                           
((v)<<20)
-       #define SUNXI_SPDIF_RXCHSTA0_SRCNUM(v)                  ((v)<<16)
-       #define SUNXI_SPDIF_RXCHSTA0_CATACOD(v)                 ((v)<<8)
-       #define SUNXI_SPDIF_RXCHSTA0_MODE(v)                            ((v)<<6)
-       #define SUNXI_SPDIF_RXCHSTA0_EMPHASIS(v)          ((v)<<3)
-       #define SUNXI_SPDIF_RXCHSTA0_CP                                         
        (1<<2)
-       #define SUNXI_SPDIF_RXCHSTA0_AUDIO                                      
(1<<1)
-       #define SUNXI_SPDIF_RXCHSTA0_PRO                                        
        (1<<0)
+       #define SUNXI_SPDIF_RXCHSTA0_CLK(v)             ((v) << 28)
+       #define SUNXI_SPDIF_RXCHSTA0_SAMFREQ(v)         ((v) << 24)
+       #define SUNXI_SPDIF_RXCHSTA0_CHNUM(v)           ((v) << 20)
+       #define SUNXI_SPDIF_RXCHSTA0_SRCNUM(v)          ((v) << 16)
+       #define SUNXI_SPDIF_RXCHSTA0_CATACOD(v)         ((v) << 8)
+       #define SUNXI_SPDIF_RXCHSTA0_MODE(v)            ((v) << 6)
+       #define SUNXI_SPDIF_RXCHSTA0_EMPHASIS(v)        ((v) << 3)
+       #define SUNXI_SPDIF_RXCHSTA0_CP                 (1 << 2)
+       #define SUNXI_SPDIF_RXCHSTA0_AUDIO              (1 << 1)
+       #define SUNXI_SPDIF_RXCHSTA0_PRO                (1 << 0)
 
 #define SUNXI_SPDIF_RXCHSTA1 (0x38)
-       #define SUNXI_SPDIF_RXCHSTA1_CGMSA(v)                           ((v)<<8)
-       #define SUNXI_SPDIF_RXCHSTA1_ORISAMFREQ(v)      ((v)<<4)
-       #define SUNXI_SPDIF_RXCHSTA1_SAMWORDLEN(v)      ((v)<<1)
-       #define SUNXI_SPDIF_RXCHSTA1_MAXWORDLEN                 (1<<0)
+       #define SUNXI_SPDIF_RXCHSTA1_CGMSA(v)           ((v) << 8)
+       #define SUNXI_SPDIF_RXCHSTA1_ORISAMFREQ(v)      ((v) << 4)
+       #define SUNXI_SPDIF_RXCHSTA1_SAMWORDLEN(v)      ((v) << 1)
+       #define SUNXI_SPDIF_RXCHSTA1_MAXWORDLEN         (1 << 0)
 
 /* Clock dividers */
 #define SUNXI_DIV_MCLK 0
diff --git a/sound/soc/sunxi/spdif/sunxi_spdma.c 
b/sound/soc/sunxi/spdif/sunxi_spdma.c
index 7a37174..5db8f62 100644
--- a/sound/soc/sunxi/spdif/sunxi_spdma.c
+++ b/sound/soc/sunxi/spdif/sunxi_spdma.c
@@ -33,15 +33,19 @@
 
 #include "sunxi_spdif.h"
 
-static volatile unsigned int dmasrc = 0;
-static volatile unsigned int dmadst = 0;
+static volatile unsigned int dmasrc;
+static volatile unsigned int dmadst;
 
 static const struct snd_pcm_hardware sunxi_pcm_hardware = {
-       .info                   = SNDRV_PCM_INFO_INTERLEAVED | 
SNDRV_PCM_INFO_BLOCK_TRANSFER |
-                                     SNDRV_PCM_INFO_MMAP | 
SNDRV_PCM_INFO_MMAP_VALID |
-                                     SNDRV_PCM_INFO_PAUSE | 
SNDRV_PCM_INFO_RESUME,
+       .info                   = SNDRV_PCM_INFO_INTERLEAVED |
+                                       SNDRV_PCM_INFO_BLOCK_TRANSFER |
+                                       SNDRV_PCM_INFO_MMAP |
+                                       SNDRV_PCM_INFO_MMAP_VALID |
+                                       SNDRV_PCM_INFO_PAUSE |
+                                       SNDRV_PCM_INFO_RESUME,
        .formats                = SNDRV_PCM_FMTBIT_S16_LE,
-       .rates                  = SNDRV_PCM_RATE_8000_192000 | 
SNDRV_PCM_RATE_KNOT,
+       .rates                  = SNDRV_PCM_RATE_8000_192000 |
+                                       SNDRV_PCM_RATE_KNOT,
        .rate_min               = 8000,
        .rate_max               = 192000,
        .channels_min           = 1,
@@ -75,21 +79,19 @@ static void sunxi_pcm_enqueue(struct snd_pcm_substream 
*substream)
 
        unsigned long len = prtd->dma_period;
 
-       limit = prtd->dma_limit;
-       while(prtd->dma_loaded < limit){
-               if((pos + len) > prtd->dma_end){
-                       len  = prtd->dma_end - pos;
-               }
+       limit = prtd->dma_limit;
+       while (prtd->dma_loaded < limit) {
+               if ((pos + len) > prtd->dma_end)
+                       len = prtd->dma_end - pos;
 
                ret = sunxi_dma_enqueue(prtd->params, pos, len, 0);
                if (ret == 0) {
                        prtd->dma_loaded++;
                        pos += prtd->dma_period;
-                       if(pos >= prtd->dma_end)
+                       if (pos >= prtd->dma_end)
                                pos = prtd->dma_start;
-               } else {
+               } else
                        break;
-                 }
        }
        prtd->dma_pos = pos;
 }
@@ -100,9 +102,8 @@ static void sunxi_audio_buffdone(struct sunxi_dma_params 
*dma, void *dev_id)
        struct snd_pcm_substream *substream = dev_id;
 
        prtd = substream->runtime->private_data;
-               if (substream) {
-                       snd_pcm_period_elapsed(substream);
-               }
+       if (substream)
+               snd_pcm_period_elapsed(substream);
 
        spin_lock(&prtd->lock);
        {
@@ -119,8 +120,8 @@ static int sunxi_pcm_hw_params(struct snd_pcm_substream 
*substream,
        struct sunxi_runtime_data *prtd = runtime->private_data;
        struct snd_soc_pcm_runtime *rtd = substream->private_data;
        unsigned long totbytes = params_buffer_bytes(params);
-       struct sunxi_dma_params *dma =
-                                       snd_soc_dai_get_dma_data(rtd->cpu_dai, 
substream);
+       struct sunxi_dma_params *dma = snd_soc_dai_get_dma_data(rtd->cpu_dai,
+                                                               substream);
        int ret = 0;
        if (!dma)
                return 0;
@@ -128,13 +129,12 @@ static int sunxi_pcm_hw_params(struct snd_pcm_substream 
*substream,
        if (prtd->params == NULL) {
                prtd->params = dma;
                ret = sunxi_dma_request(prtd->params, 0);
-               if (ret < 0) {
-                               return ret;
-               }
+               if (ret < 0)
+                       return ret;
        }
 
        if (sunxi_dma_set_callback(prtd->params, sunxi_audio_buffdone,
-                                                           substream) != 0) {
+                                                       substream) != 0) {
                sunxi_dma_release(prtd->params);
                prtd->params = NULL;
                return -EINVAL;
@@ -181,18 +181,18 @@ static int sunxi_pcm_prepare(struct snd_pcm_substream 
*substream)
        if (!prtd->params)
                return 0;
 
-       if (substream->stream == SNDRV_PCM_STREAM_PLAYBACK){
+       if (substream->stream == SNDRV_PCM_STREAM_PLAYBACK) {
 #if defined CONFIG_ARCH_SUN4I || defined CONFIG_ARCH_SUN5I
                struct dma_hw_conf spdif_dma_conf;
-               spdif_dma_conf.drqsrc_type  = DRQ_TYPE_SDRAM;
-               spdif_dma_conf.drqdst_type  = DRQ_TYPE_SPDIF;
-               spdif_dma_conf.xfer_type    = DMAXFER_D_BHALF_S_BHALF;
-               spdif_dma_conf.address_type = DMAADDRT_D_FIX_S_INC;
-               spdif_dma_conf.dir          = SW_DMA_WDEV;
-               spdif_dma_conf.reload       = 0;
-               spdif_dma_conf.hf_irq       = SW_DMA_IRQ_FULL;
-               spdif_dma_conf.from         = prtd->dma_start;
-               spdif_dma_conf.to           = prtd->params->dma_addr;
+               spdif_dma_conf.drqsrc_type      = DRQ_TYPE_SDRAM;
+               spdif_dma_conf.drqdst_type      = DRQ_TYPE_SPDIF;
+               spdif_dma_conf.xfer_type        = DMAXFER_D_BHALF_S_BHALF;
+               spdif_dma_conf.address_type     = DMAADDRT_D_FIX_S_INC;
+               spdif_dma_conf.dir              = SW_DMA_WDEV;
+               spdif_dma_conf.reload           = 0;
+               spdif_dma_conf.hf_irq           = SW_DMA_IRQ_FULL;
+               spdif_dma_conf.from             = prtd->dma_start;
+               spdif_dma_conf.to               = prtd->params->dma_addr;
 #else
                dma_config_t spdif_dma_conf;
                memset(&spdif_dma_conf, 0, sizeof(spdif_dma_conf));
@@ -205,21 +205,22 @@ static int sunxi_pcm_prepare(struct snd_pcm_substream 
*substream)
                spdif_dma_conf.bconti_mode = false;
                spdif_dma_conf.irq_spt = CHAN_IRQ_FD;
                spdif_dma_conf.src_drq_type = N_SRC_SDRAM;
-               spdif_dma_conf.dst_drq_type = N_DST_SPDIF_TX;//DRQDST_SPDIFTX;
+               spdif_dma_conf.dst_drq_type = N_DST_SPDIF_TX;
 #endif
                ret = sunxi_dma_config(prtd->params, &spdif_dma_conf, 0);
        } else {
 #if defined CONFIG_ARCH_SUN4I || defined CONFIG_ARCH_SUN5I
                struct dma_hw_conf spdif_dma_conf;
-               spdif_dma_conf.drqsrc_type  = DRQ_TYPE_SDRAM;
-               spdif_dma_conf.drqdst_type  = DRQ_TYPE_SPDIF;
-               spdif_dma_conf.xfer_type    = DMAXFER_D_BWORD_S_BWORD;
-               spdif_dma_conf.address_type = DMAADDRT_D_INC_S_FIX;
-               spdif_dma_conf.dir          = SW_DMA_RDEV;
-               spdif_dma_conf.reload       = 1;
-               spdif_dma_conf.hf_irq       = SW_DMA_IRQ_FULL|SW_DMA_IRQ_HALF;
-               spdif_dma_conf.from         = prtd->params->dma_addr;
-               spdif_dma_conf.to           = prtd->dma_start;
+               spdif_dma_conf.drqsrc_type      = DRQ_TYPE_SDRAM;
+               spdif_dma_conf.drqdst_type      = DRQ_TYPE_SPDIF;
+               spdif_dma_conf.xfer_type        = DMAXFER_D_BWORD_S_BWORD;
+               spdif_dma_conf.address_type     = DMAADDRT_D_INC_S_FIX;
+               spdif_dma_conf.dir              = SW_DMA_RDEV;
+               spdif_dma_conf.reload           = 1;
+               spdif_dma_conf.hf_irq           = SW_DMA_IRQ_FULL |
+                                                       SW_DMA_IRQ_HALF;
+               spdif_dma_conf.from             = prtd->params->dma_addr;
+               spdif_dma_conf.to               = prtd->dma_start;
                ret = sunxi_dma_config(prtd->params, &spdif_dma_conf, 0);
 #else
                return -EINVAL;
@@ -273,18 +274,18 @@ static snd_pcm_uframes_t sunxi_pcm_pointer(struct 
snd_pcm_substream *substream)
 
        spin_lock(&prtd->lock);
        sunxi_dma_getcurposition(prtd->params,
-                                (dma_addr_t*)&dmasrc, (dma_addr_t*)&dmadst);
+                               (dma_addr_t *)&dmasrc, (dma_addr_t *)&dmadst);
 
-       if (substream->stream == SNDRV_PCM_STREAM_CAPTURE){
+       if (substream->stream == SNDRV_PCM_STREAM_CAPTURE)
                res = dmadst - prtd->dma_start;
-       } else {
-               offset = bytes_to_frames(runtime, dmasrc + prtd->dma_period - 
runtime->dma_addr);
-       }
+       else
+               offset = bytes_to_frames(runtime, dmasrc +
+                                       prtd->dma_period - runtime->dma_addr);
        spin_unlock(&prtd->lock);
 
-       if(offset >= runtime->buffer_size)
+       if (offset >= runtime->buffer_size)
                offset = 0;
-               return offset;
+       return offset;
 }
 
 static int sunxi_pcm_open(struct snd_pcm_substream *substream)
@@ -320,9 +321,9 @@ static int sunxi_pcm_mmap(struct snd_pcm_substream 
*substream,
        struct snd_pcm_runtime *runtime = substream->runtime;
 
        return dma_mmap_writecombine(substream->pcm->card->dev, vma,
-                                    runtime->dma_area,
-                                    runtime->dma_addr,
-                                    runtime->dma_bytes);
+                                               runtime->dma_area,
+                                               runtime->dma_addr,
+                                               runtime->dma_bytes);
 }
 
 static struct snd_pcm_ops sunxi_pcm_ops = {
@@ -347,7 +348,7 @@ static int sunxi_pcm_preallocate_dma_buffer(struct snd_pcm 
*pcm, int stream)
        buf->dev.dev = pcm->card->dev;
        buf->private_data = NULL;
        buf->area = dma_alloc_writecombine(pcm->card->dev, size,
-                                          &buf->addr, GFP_KERNEL);
+                                                       &buf->addr, GFP_KERNEL);
        if (!buf->area)
                return -ENOMEM;
        buf->bytes = size;
@@ -370,7 +371,7 @@ static void sunxi_pcm_free_dma_buffers(struct snd_pcm *pcm)
                        continue;
 
                dma_free_writecombine(pcm->card->dev, buf->bytes,
-                                     buf->area, buf->addr);
+                                                       buf->area, buf->addr);
                buf->area = NULL;
        }
 }
@@ -406,7 +407,7 @@ static int sunxi_pcm_new(struct snd_soc_pcm_runtime *rtd)
 }
 
 static struct snd_soc_platform_driver sunxi_soc_platform = {
-       .ops            =   &sunxi_pcm_ops,
+       .ops            =       &sunxi_pcm_ops,
        .pcm_new        =       sunxi_pcm_new,
        .pcm_free       =       sunxi_pcm_free_dma_buffers,
 };
-- 
1.9.1

-- 
You received this message because you are subscribed to the Google Groups 
"linux-sunxi" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to linux-sunxi+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to