]> Git Repo - linux.git/commitdiff
Merge remote-tracking branch 'asoc/fix/fsl-ssi' into asoc-linus
authorMark Brown <[email protected]>
Wed, 4 Mar 2015 20:42:38 +0000 (20:42 +0000)
committerMark Brown <[email protected]>
Wed, 4 Mar 2015 20:42:38 +0000 (20:42 +0000)
1  2 
sound/soc/fsl/fsl_ssi.c

diff --combined sound/soc/fsl/fsl_ssi.c
index 2595611e8a6ded3876345767bde2ce51e079c9ee,d7365c5d7ec0b42dc276b45e2296b55725484df1..b9fabbf69db6c9830ebf0de211f62735a24297b8
@@@ -160,7 -160,7 +160,7 @@@ struct fsl_ssi_soc_data 
   */
  struct fsl_ssi_private {
        struct regmap *regs;
 -      unsigned int irq;
 +      int irq;
        struct snd_soc_dai_driver cpu_dai_drv;
  
        unsigned int dai_fmt;
@@@ -603,10 -603,6 +603,6 @@@ static int fsl_ssi_set_bclk(struct snd_
        factor = (div2 + 1) * (7 * psr + 1) * 2;
  
        for (i = 0; i < 255; i++) {
-               /* The bclk rate must be smaller than 1/5 sysclk rate */
-               if (factor * (i + 1) < 5)
-                       continue;
                tmprate = freq * factor * (i + 2);
  
                if (baudclk_is_used)
                else
                        clkrate = clk_round_rate(ssi_private->baudclk, tmprate);
  
+               /*
+                * Hardware limitation: The bclk rate must be
+                * never greater than 1/5 IPG clock rate
+                */
+               if (clkrate * 5 > clk_get_rate(ssi_private->clk))
+                       continue;
                clkrate /= factor;
                afreq = clkrate / (i + 1);
  
@@@ -992,8 -995,8 +995,8 @@@ static int fsl_ssi_set_dai_tdm_slot(str
        regmap_update_bits(regs, CCSR_SSI_SCR, CCSR_SSI_SCR_SSIEN,
                        CCSR_SSI_SCR_SSIEN);
  
 -      regmap_write(regs, CCSR_SSI_STMSK, tx_mask);
 -      regmap_write(regs, CCSR_SSI_SRMSK, rx_mask);
 +      regmap_write(regs, CCSR_SSI_STMSK, ~tx_mask);
 +      regmap_write(regs, CCSR_SSI_SRMSK, ~rx_mask);
  
        regmap_update_bits(regs, CCSR_SSI_SCR, CCSR_SSI_SCR_SSIEN, val);
  
@@@ -1362,8 -1365,8 +1365,8 @@@ static int fsl_ssi_probe(struct platfor
        }
  
        ssi_private->irq = platform_get_irq(pdev, 0);
 -      if (ssi_private->irq < 0) {
 -              dev_err(&pdev->dev, "no irq for node %s\n", np->full_name);
 +      if (!ssi_private->irq) {
 +              dev_err(&pdev->dev, "no irq for node %s\n", pdev->name);
                return ssi_private->irq;
        }
  
This page took 0.063632 seconds and 4 git commands to generate.