[alsa-devel] ASOC, master clock direction

Jon Smirl jonsmirl at gmail.com
Sat Jul 19 00:30:34 CEST 2008


On 7/18/08, Mark Brown <broonie at opensource.wolfsonmicro.com> wrote:
> On Fri, Jul 18, 2008 at 03:44:37PM -0400, Jon Smirl wrote:
>  > On 7/18/08, Jon Smirl <jonsmirl at gmail.com> wrote:
>
>
> > >  3) Something Freescale calls cellphone slave but it is more like clock
>  > >  distribution.
>
>  > >  In cellslave mode one i2s port is in normal slave mode. The clock from
>  > >  this port is used to drive up to three other i2s ports in master mode.
>
>
> ...
>
>
>  > >  When the clock frequency changes I need to notify the i2s drivers for
>  > >  the dependent channels. Do we need a third choice,
>  > >  SND_SOC_CLOCK_SLAVE? Alternatively I can use another clock id value.
>
>
> Without having looked at how this works in hardware I'd probably
>  implement this by using a different clock id for the slave ports if I
>  wanted to use set_sysclk() to configure cell slave mode.  It sounds like
>  you've got to choose between two sources within the SoC, one being that
>  clocked in from the external source and the other regular clocks.  From
>  what you're saying as far as the individual I2S port is concerned it is
>  the master in both cases.

That might work better. Currently I was setting cellslave mode at boot
time from the device tree. But by using different clock ids it can be
set dynamically.

>  >       switch (dir) {
>  >       case SND_SOC_CLOCK_IN:
>  >               return 0;
>  >       case SND_SOC_CLOCK_OUT:
>  >       default:
>  >               if (!(psc_i2s->sicr & MPC52xx_PSC_SICR_CELLSLAVE)) {
>  >                       /* implement me */
>  >                       /* compute and set the needed dividers for the internal clock */
>  >                       return -EINVAL;
>  >               }
>  >               psc_i2s->sysclk = freq;
>  >               return -EINVAL;
>  >       }
>  > }
>
>
> If you did use a separate clock id then you could set or clear
>  MPC52xx_PSC_SICR_CELLSLAVE as appropriate here which might be a bit
>  easier to write.  It depends on what's clearer and what work is needed
>  to configure the slave mode - I guess there may be other configuration
>  required?
>
>  Having said that the important thing here is that what you do is
>  sensible and idiomatic for people working on the platform so it may be
>  that what you've got already is the most expressive thing.  The clock
>  configuration is done by machine drivers which will obviously be
>  platform specific.
>


-- 
Jon Smirl
jonsmirl at gmail.com


More information about the Alsa-devel mailing list