On Wed, Mar 11, 2009 at 07:10:28PM +0100, pHilipp Zabel wrote: > > Philipp, could you test that again on your board, please? > > Applies on top of the other one ("pxa-ssp: don't touch ssp registers > > ...") I just posted. > > Tested-by me. Of course this still doesn't help me to enable 16-bit > DMA transfers for stereo, but it doesn't hurt either. Ok, but good to know this does not break your config. > > struct ssp_priv { > > struct ssp_dev dev; > > unsigned int sysclk; > > + unsigned int scr_div; > > Really needed? Or could we just check SSCR0 below? Well, SSCR0_SerClkDiv() is defined as follows: #define SSCR0_SCR (0x000fff00) /* Serial Clock Rate (mask) */ #define SSCR0_SerClkDiv(x) (((x) - 1) << 8) /* Divisor [1..4096] */ I thought about adding a reverse macro just for that case, but that seemed a lot more intrusive. > > switch (priv->dai_fmt & SND_SOC_DAIFMT_FORMAT_MASK) { > > case SND_SOC_DAIFMT_I2S: > > - /* Cleared when the DAI format is set */ > > - sspsp = ssp_read_reg(ssp, SSPSP) | SSPSP_SFRMWDTH(width); > > + sspsp = ssp_read_reg(ssp, SSPSP); > > + > > + if ((priv->scr_div == 4) && (width == 16)) { > > sscr0 & SSCR0_SCR == SSCR0_SerClkDiv(4) instead? Yes, could do that, but I doubt it is more readable? But we would save one entry in the priv struct, so I'll do it. > > - /* We always use a network mode so we always require TDM slots > > - * - complain loudly and fail if they've not been set up yet. > > - */ > > - if (!(ssp_read_reg(ssp, SSTSA) & 0xf)) { > > - dev_err(&ssp->pdev->dev, "No TDM timeslot configured\n"); > > - return -EINVAL; > > - } > > - > > I wonder if this check was useful in some case? If so, we could > replace it with something like this: Yep, we didn't kill the network mode entirely, you're right. Will fix this in a follow-up. Thanks, Daniel _______________________________________________ Alsa-devel mailing list Alsa-devel@xxxxxxxxxxxxxxxx http://mailman.alsa-project.org/mailman/listinfo/alsa-devel