[alsa-devel] [PATCH 03/12] add a mc13783 codec driver

Sascha Hauer s.hauer at pengutronix.de
Wed Nov 25 08:46:31 CET 2009


Hi Mark,

> > +static int mc13783_set_tdm_slot_codec(struct snd_soc_dai *dai,
> > +	unsigned int tx_mask, unsigned int rx_mask, int slots, int slot_width)
> > +{
> > +	struct snd_soc_codec *codec = dai->codec;
> > +	unsigned int reg;
> > +
> > +	if (slots != 4)
> > +		return -EINVAL;
> > +
> > +	reg = mc13783_read(codec, PMIC_SSI_NETWORK);
> > +
> > +	reg &= ~(0xfff << 0);
> > +	reg |= (0x00 << 2);	/* primary timeslot RX/TX(?) is 0 */
> > +	reg |= (0x01 << 4);	/* secondary timeslot TX is 1 */
> > +	reg |= (0x01 << 6);	/* secondary timeslot RX is 1 */
> 
> This appears to be pretty much ignoring the supplied arguments and using
> a fixed configuration?
> 

The problem here is that I don't really understand what arguments I
should supply to this function and how to parse them to archieve what I
want.

The MC13783 Voice Codec always uses a network mode to send data. It has
a fixed width of four slots.

PMIC_SSI_NETWORK[2:3] defines the slot for primary transmit/receive
PMIC_SSI_NETWORK[4:5] defines the secondary transmit timeslot
PMIC_SSI_NETWORK[6:7] defines the secondary receive timeslot

The Codec has two channels and it's not primarily desgined to do stereo
Audio. I want to put the primary channel into the first timeslot and
the secondary channel into the second timeslot.

Any idea how to do this correctly?

Sascha


-- 
Pengutronix e.K.                           |                             |
Industrial Linux Solutions                 | http://www.pengutronix.de/  |
Peiner Str. 6-8, 31137 Hildesheim, Germany | Phone: +49-5121-206917-0    |
Amtsgericht Hildesheim, HRA 2686           | Fax:   +49-5121-206917-5555 |


More information about the Alsa-devel mailing list