[alsa-devel] WM5102 - Help to make baytrail machine driver work
Paulo Sergio
pstglia at gmail.com
Tue May 9 02:57:34 CEST 2017
Adding alsa list + intel devs (Sorry for that )
Inline answers for Charles Keepax questions bellow:
2017-05-08 5:24 GMT-03:00 Charles Keepax <ckeepax at opensource.wolfsonmicro.com>:
> On Sun, May 07, 2017 at 10:42:31PM -0300, Paulo Sergio wrote:
>> Hi,
>>
>>
>> I'm trying to make wm5102 work on Lenovo Yoga 2 1051F (Baytrail) again
>> and would like some tips.
>>
>> With a revised machine driver code [1] ( based on bytcr_rt5640 and
>> some ports from Lenovo kernel [2]) I can initialize
>> and setting routes with alsa mixer [3], I still don't have sound.
>>
>> However now if I connect 'HPOUT1' to 'Tone Generator 1' I can hear the 1k tone.
>> Question: When I do this association, it is using my route? (in my
>> case CODEC OUT -> SSP0 TX -> AIF1RX)
>> Or this internal tone generator has a direct link to HPOUTs?
>>
>> Here's some lines from my dmesg output while attemptig to play
>> something (complete dmesg - see [4]):
>>
>> [ 211.801176] arizona spi-WM510204:00: FLL1: Fref=25000000 Fout=49152000
>> [ 211.801184] arizona spi-WM510204:00: FLL1: Fvco=98304000Hz
>> [ 211.801190] arizona spi-WM510204:00: FLL1: GCD=4000
>> [ 211.801195] arizona spi-WM510204:00: FLL1: N=7 THETA=a8d LAMBDA=c35
>> [ 211.801200] arizona spi-WM510204:00: FLL1: FRATIO=0(0) OUTDIV=2 REFCLK_DIV=1
>> [ 211.801204] arizona spi-WM510204:00: FLL1: GAIN=4
>> [ 211.801210] arizona spi-WM510204:00: 173 <= a8d
>> [ 211.801227] arizona spi-WM510204:00: 174 <= c35
>> [ 211.801234] arizona spi-WM510204:00: 176 <= 40
>> [ 211.801241] arizona spi-WM510204:00: 179 <= 10
>> [ 211.813301] arizona spi-WM510204:00: 172 <= 8007
>> [ 211.813353] arizona spi-WM510204:00: 171 <= 1
>> [ 211.813366] arizona spi-WM510204:00: FLL1: Waiting for FLL lock...
>> [ 211.814098] arizona spi-WM510204:00: d23 => 100
>> [ 211.814641] arizona spi-WM510204:00: d23 => 101
>> [ 211.814651] arizona spi-WM510204:00: FLL1: FLL locked (1 polls)
>> [ 211.814660] arizona spi-WM510204:00: SYSCLK set to 49152000Hz
>> [ 211.814668] arizona spi-WM510204:00: SYSCLK set to 49152000Hz
>> [ 211.814675] arizona spi-WM510204:00: 101 <= 300
>> [ 211.814882] wm5102-codec wm5102-codec: AIF1: BCLK 1536000Hz LRCLK 48000Hz
>> [ 211.814892] arizona spi-WM510204:00: 80 <= 3
>> [ 211.815191] arizona spi-WM510204:00: 4dc <= 0
>> [ 211.815339] arizona spi-WM510204:00: 4dd <= 0
>> [ 211.815460] arizona spi-WM510204:00: 80 <= 0
>> [ 211.815662] sst-mfld-platform sst-mfld-platform: Enter: enable=1
>> port_name=ssp0-port
>> [ 211.816833] wm5102-codec wm5102-codec: AIF1: BCLK 1536000Hz LRCLK 48000Hz
>> [ 211.816845] arizona spi-WM510204:00: 80 <= 3
>> [ 211.817030] arizona spi-WM510204:00: 4dc <= 0
>> [ 211.817287] arizona spi-WM510204:00: 4dd <= 0
>>
>> Thanks in advance!
>>
>>
>> [1] - https://github.com/pstglia/linux/tree/lenovo_yoga2_returns
>> [2] - https://github.com/lenovo-yt2-dev/android_kernel_lenovo_baytrail/blob/cm-12.1/sound/soc/intel/board/byt_bl_wm5102.c
>> [3] - https://drive.google.com/file/d/0BxO6THtB865fQnQyZkx6c05Nbjg/view?usp=sharing
>> [4] - https://drive.google.com/file/d/0BxO6THtB865fRy0xV3F0elRrUHM/view?usp=sharing
>
> OK good news you are getting sound from the Tone generator, that
> likely implies things are setup sensibly on the CODEC side. My
> suspicion would be that data is not making it over the I2S.
> Probalby worth copying the Intel guys on the email, as I don't
> know know much about that side of things.
Copied alsa list and Intel guys (hit reply instead of reply all - my apologies)
>
> How are you setting up the I2S? As in which side is master, what
> format are you using? Also do you see any over/underflow error,
> does the system complain with "Error playing sample".
The only part where I2S is explicity used on machine driver is this
setting on backend DAI (SSP0-Codec)
dai_fmt = SND_SOC_DAIFMT_I2S | SND_SOC_DAIFMT_NB_NF
| SND_SOC_DAIFMT_CBS_CFS,
And after setting the routes using routes mentioned on [3], I have no
errors, but no sound
Note: Based on Lenovo code, I concluded this device uses ssp0, so I'm
using a fw file "fw_sst_0f28_ssp0.bin" posted another thread.
Could use the hacks used on kernel 4.11, but as I'm still testing with
kernel 4.4, using this fw would make things easier
x86_64:/data # alsa_aplay -v TNT.mp3
Playing raw data 'TNT.mp3' : Unsigned 8 bit, Rate 8000 Hz, Mono
Plug PCM: Rate conversion PCM (48000, sformat=U8)
Converter: linear-interpolation
Protocol version: 10002
Its setup is:
stream : PLAYBACK
access : RW_INTERLEAVED
format : U8
subformat : STD
channels : 1
rate : 8000
exact rate : 8000 (8000/1)
msbits : 8
buffer_size : 4000
period_size : 1000
period_time : 125000
tstamp_mode : NONE
period_step : 1
avail_min : 1000
period_event : 0
start_threshold : 4000
stop_threshold : 4000
silence_threshold: 0
silence_size : 0
boundary : 262144000
Slave: Route conversion PCM (sformat=S16_LE)
Transformation table:
0 <- 0
1 <- 0
Its setup is:
stream : PLAYBACK
access : MMAP_INTERLEAVED
format : U8
subformat : STD
channels : 1
rate : 48000
exact rate : 48000 (48000/1)
msbits : 8
buffer_size : 24000
period_size : 6000
period_time : 125000
tstamp_mode : NONE
period_step : 1
avail_min : 6000
period_event : 0
start_threshold : 24000
stop_threshold : 24000
silence_threshold: 0
silence_size : 0
boundary : 1572864000
Slave: Hardware PCM card 0 'baytrailcraudio' device 0 subdevice 0
Its setup is:
stream : PLAYBACK
access : MMAP_INTERLEAVED
format : S16_LE
subformat : STD
channels : 2
rate : 48000
exact rate : 48000 (48000/1)
msbits : 16
buffer_size : 24000
period_size : 6000
period_time : 125000
tstamp_mode : NONE
period_step : 1
avail_min : 6000
period_event : 0
start_threshold : 24000
stop_threshold : 24000
silence_threshold: 0
silence_size : 0
boundary : 1572864000
appl_ptr : 0
hw_ptr : 0
Regards,
Pstglia
More information about the Alsa-devel
mailing list