> -----Original Message----- > From: Hans de Goede [mailto:hdegoede@xxxxxxxxxx] > Sent: Thursday, October 26, 2017 11:09 PM > To: Bard Liao; Pierre-Louis Bossart > Cc: alsa-devel@xxxxxxxxxxxxxxxx > Subject: Re: Cherry Trail + RT5645 devices with a mono speaker ? > > Hi, > > On 16-10-17 13:31, Bard Liao wrote: > >> -----Original Message----- > >> From: Hans de Goede [mailto:hdegoede@xxxxxxxxxx] > >> Sent: Sunday, October 15, 2017 2:12 AM > >> To: Pierre-Louis Bossart; Bard Liao > >> Cc: alsa-devel@xxxxxxxxxxxxxxxx > >> Subject: Cherry Trail + RT5645 devices with a mono speaker ? > >> > >> Hi Pierre-Louis, Bard, > >> > >> I've been looking into getting some Cherry Trail + RT5645 > >> devices with a mono speaker I have to work properly. > >> > >> Specifically the goal is to mix the right channel into > >> the left output, so that sounds which are only played > >> over the right channel do not get lost. > >> > >> I'm using this UCM file: > >> https://github.com/plbossart/UCM/blob/master/byt-rt5640/HiFi > >> > >> Looking at the rtl5640 UCM file, getting the mono speaker > >> to work (in a first simple attempt) should be as simple > >> as replacing: > >> > >> cset "name='SPOR MIX SPKVOL R Switch' on" > >> > >> With > >> > >> cset "name='SPOL MIX SPKVOL R Switch' on" > >> > >> But this does not work, the speaker test sound for the > >> right speaker is still silent (works with headphones). > >> > >> I've also looked into directly poking the > >> RT5645_SPO_MIXER i2c register for testing, but when > >> checking its value with the original unmodified UCM > >> file: > >> > >> [root@localhost ~]# i2cget -y -f 1 0x1a 0x48 w > >> 0x06c8 > >> > >> That is: 0xc806 as the output of i2cget "w" mode > >> needs byteswapping. Note that both the > >> RT5645_M_SV_L_SPM_L and RT5645_M_SV_R_SPM_L bits > >> are already cleared, which is weird as this is > >> before I've modified anything. Also the > >> RT5645_M_SV_R_SPM_R bit is cleared, but that is > >> expected. > >> > >> Even if I manually set reg 0x48 to 0x07c8 which AFAIK > >> should enable output of both left and right channels > >> on the left speaker I still only get sounds played > >> on the left channel. > >> > >> Any insights / help with this would be very much > >> welcome. > > > > Could you dump all registers for us? > > Here you go: > > 0,8 1,9 2,a 3,b 4,c 5,d 6,e 7,f > 00: 0000 0808 c8c8 c8c8 0ac8 0000 0000 0000 > 08: 0000 0000 0200 2738 00e0 0000 0000 0000 > 10: 0000 0000 0000 0000 3333 0000 004b 0000 > 18: 8b01 afaf afaf 1100 3f3f 7f7f 00f0 0000 > 20: 00a0 0000 0000 0000 0000 0000 0000 2038 > 28: 3030 8080 1616 4444 a0aa 0000 0000 0210 > 30: 0000 0050 0000 0000 0000 0000 0000 0000 > 38: 0000 0000 0000 0000 7d00 0000 7d00 0000 > 40: 1c00 0000 1c00 0000 0000 0050 3800 3800 > 48: 06c8 0000 0400 0000 1f03 0000 0000 ff01 > 50: 0000 0000 ff01 00f0 0000 0000 1101 6400 > 58: 0eef f0f0 0eef f0f0 0eef f0f0 00f0 0000 > 60: 0000 019b 0008 1ae8 0402 0230 00c0 0000 > 68: 0000 0000 0000 0000 aa0a 0000 0000 0000 > 70: 8380 0080 0080 7017 003e 0924 0a00 0058 > 78: 0000 2301 0080 0000 0000 0000 0000 0000 > 80: 0040 030f 0030 000c 1111 0000 0800 0000 > 88: 0000 0000 2001 0000 0300 0000 0000 4011 > 90: 3606 060c 0000 0801 0202 0000 0000 0000 > 98: 0000 0000 8421 0a01 ea0a 0c00 0004 0000 > a0: e8a0 5900 0100 0000 0000 0000 0000 0000 > a8: 0000 0000 0000 0000 0000 0000 0060 0000 > b0: 0060 0000 0000 1f00 0c02 001f 0000 0040 > b8: 0000 0000 0000 0000 0000 8002 0000 8011 > c0: 0080 0000 0000 0020 0000 0000 0000 0000 > c8: 0000 0000 0000 0000 0000 0000 0000 1418 > d0: 9006 171c 0000 20b3 0000 0000 0004 0000 > d8: 0000 0908 0000 0300 4900 1b00 0000 0000 > e0: 0000 0000 0000 0000 0000 0000 0080 0007 > e8: 0080 0007 200f 0000 00b3 0000 0000 0000 > f0: 1f00 0c02 001f 0000 0040 0000 0000 0000 > f8: 0000 0000 6120 4040 001a 0400 ec10 0863 > > Note that i2cdump swaps the low and high bytes > in all the 16 bit words. Could you dump registers by regmap? cat /sys/kernel/debug/regmap/<bus name>/registers It will be more readable for me. Also, could you do a loopback test? Open capture and playback simultaneously, then set 0x78 register bit 12 = 1. It will record what codec received. It is to make sure there is no problem on Intel side. > > Regards, > > Hans > > ------Please consider the environment before printing this e-mail. _______________________________________________ Alsa-devel mailing list Alsa-devel@xxxxxxxxxxxxxxxx http://mailman.alsa-project.org/mailman/listinfo/alsa-devel