On Sat, May 13, 2017 at 02:11:31AM -0300, Paulo Sergio wrote:
Remarks:
- setting pll/fll using snd_soc_dai_set_pll didn't work. I had to map
the codec member from snd_soc_dai struct and use snd_soc_codec_set_pll instead (used the same constants used on Lenovo source code)
Yes this is correct you will need to call snd_soc_codec_set_pll to configure the FLLs on the chip. As the FLLs are not tied to a particular DAI it doesn't really make sense to configure them from dai_set_pll.
- Had also to set sysclk to codecs, not only to dai's using
snd_soc_codec_set_sysclk
Again this also makes sense snd_soc_codec_set_sysclk is how you configure the sysclk on this device. Again here the sysclk is chip wide.
- This device (Lenovo Yoga 2 1051F) is a bytcr device. However bios
status returned by iosf_mbi_read is 1000000001000000000000101000000 (bits 26:27 disabled). Had to force bytcr flag to be true in order to apply correct MCLK frequency (25Mhz) and use SSP0
- Used commands from rt5640 UCM file, removing 5640 specifics and
using Wolfson ones (thanks to Charles for point this out previously): cset name='HPOUT1L Input 1' AIF1RX1 cset name='HPOUT1R Input 1' AIF1RX2 cset name='HPOUT1 Digital Switch' on
cset name='Headphone Switch' on
- Used some patches to enable wm5102 ACPI detection (credits to
Christian Hartmann)
- Added a voltage supplier needed to wm5102 (added to arizona-ldo
directly - Lenovo and rpi register a platform with these)
Should probably look at splitting that out into its own regulator and making it the supply for the LDO.
- hardcoded ldoena, reset and irq_gpio on arizona-core (tried to get
those from gpio, but they didn't give me the correct values. Lack of knowledge... )
Not sure on this front I am afraid.
- The codec chip uses SPI, not IC2 like 5640 (don't know if this is
relevant for machine driver code)
This should not matter from the machine driver it should all be hidden behing regmap at that level.
Thanks, Charles