[alsa-devel] CS8409 Macbook Pro 2016 2017

Takashi Iwai tiwai at suse.de
Fri Nov 16 18:31:41 CET 2018


On Fri, 16 Nov 2018 17:50:24 +0100,
David Ulricht wrote:
> 
>     The stuff in sound/i2c/* are mostly for the i2c bus on a PCI sound
>     cards, an implementation independent from the standard i2c stuff.
>    
>     And, in your case, it's hard to know how the i2c bus is connected.
>     If it's controlled over HD-audio GPIO pin (one for clk and one for
>     data), then some stuff in sound/i2c can be re-used.  Or, if it's on
>     another i2c bus, the story will be completely different...
> 
> I have the schematics of the CS8409. the i2c is connected to the GPIO of the
> HDA.
> 
> MAX98374 has a Reset Low pin which is connected to GPIO 5 on the HDA
> controller CS8409.  This must
> be driven high, then wait for 1.5 ms.  Only then will the amps be out of
> device shutdown.
> GPIO6 is  8409_I2C_SCL
> GPIO7 is  8409_I2C_SDA
> 
> GPIO5 is AUD_SPKRAMP_RESET_L
> 
> Knowing GPIO6 is the clock and GPIO7 is the data, how can I use them?
> Can I use hda-verb /dev/snd/hwC0D0 0x01 XXX YYY ? what XXX YYY would be ?

You need to set GPIO mask, direction then data.
  0x01 SET_GPIO_MASK 0xXX
  0x01 SET_GPIO_DIR 0xXX
  0x01 SET_GPIO_DATA 0xXX

The value to be pass is the bits.  GPIO0=0x01, GPIO1=0x02, GPIO3=0x04,
...

You can read the data after setting mask and dir by 0x01
GET_GPIO_DATA.  Pass 0 for the value, and you'll get a byte value as a
read result.


Takashi


More information about the Alsa-devel mailing list