MainudeenSumro[m] has quit [Quit: Client limit exceeded: 20000]
undev[m] has quit [Quit: Client limit exceeded: 20000]
michalos[m] has quit [Quit: Client limit exceeded: 20000]
HNW[m] has quit [Quit: Client limit exceeded: 20000]
Yervant[m]1 has quit [Quit: Client limit exceeded: 20000]
DavidHeidelberg[m]1 has quit [Quit: Client limit exceeded: 20000]
ungeskriptet8 has quit []
ungeskriptet has joined #sm8250-mainline
Dinolek[m] has quit [Quit: Client limit exceeded: 20000]
JoshCurrier[m] has quit [Quit: Client limit exceeded: 20000]
johnyz89[m] has quit [Quit: Client limit exceeded: 20000]
kubawis128[m] has quit [Quit: Client limit exceeded: 20000]
marohinmark[m] has quit [Quit: Client limit exceeded: 20000]
MZG[m] has quit [Quit: Client limit exceeded: 20000]
nikroks[m] has quit [Quit: Client limit exceeded: 20000]
schabimperle[m] has quit [Quit: Client limit exceeded: 20000]
simplefluorine[m] has quit [Quit: Client limit exceeded: 20000]
albert753258[m] has quit [Quit: Client limit exceeded: 20000]
CesarTamayo[m] has quit [Quit: Client limit exceeded: 20000]
Zekiu_[m] has quit [Quit: Client limit exceeded: 20000]
<CalcProgrammer1[m]> I'm looking into the audio on the Xiaomi elish, the tablet has 8 speakers, each with a cirrus cs35l41 amplifier
<CalcProgrammer1[m]> all speakers currently output the left channel
<CalcProgrammer1[m]> I'm not seeing any path in the kernel for the dts or userspace to set the channel config for each amplifier
<CalcProgrammer1[m]> Does anyone else here have any insight?
<CalcProgrammer1[m]> it looks like set_channel_map() needs to be called somewhere
<ungeskriptet[m]> CalcProgrammer1[m]: Did you check the ALSA UCM configs?
<CalcProgrammer1[m]> I have, and dug through all the amixer controls
<CalcProgrammer1[m]> none of the controls represent the left/right mapping on each amp
<CalcProgrammer1[m]> the only code path in the cs35l41 driver seems to be cs35l41_set_channels() but I don't see that exposed as a control
<CalcProgrammer1[m]> on the downstream dts there is a parameter that sets a cs35l41 to right channel but that param didn't make it into the mainline code
<CalcProgrammer1[m]> also it should be switchable at runtime for rotation, I'm not sure how downstream does that
<CalcProgrammer1[m]> might look into adding an alsa control for this in the driver but not sure this is the right way to go
<CalcProgrammer1[m]> for reference, this thread https://yhbt.net/lore/all/20210726223438.1464333-1-drhodes@opensource.cirrus.com/T/ references a parameter called right_channel, which does not exist in the 6.9 version of the code
<CalcProgrammer1[m]> and it modifies the CS35L41_SP_FRAME_RX_SLOT register
<CalcProgrammer1[m]> I'll look at this more later
<ungeskriptet[m]> Maybe the upstream driver doesn't support more than one channel yet? But to be honest I can't really help because I never messed with audio on mainline before
<CalcProgrammer1[m]> I could be wrong as I'm not super familiar with the kernel audio/soc/codec systems, but the cs35l41 driver has a function called set_channel_map that gets registered with the codec interface. The Qualcomm sm8250 audio driver never calls this set_channel_map function for the codec and I'm not exactly sure if/where it should do so. Seems easier/better to expose the channel selection as an amixer control so that it could be
<CalcProgrammer1[m]> switched at runtime if we get rotation sensor working.
<CalcProgrammer1[m]> I don't know who all is in this chat and if anyone has audio knowledge to share