Hi,
On Tuesday 15 June 2010 08:11:10 ext Stuart Longland wrote:
Okay, I've had a close inspection of how the SOC_DOUBLE_R_SX_TLV widgets are implemented. I couldn't find where in the git trees the control had been added, I wound up applying this patch myself in my tree... it apparently got applied in the official trees, but I cannot find it.
I'm not really sure what the SOC_DOUBLE_R_SX_TLV is for... But would a simple SOC_DOUBLE_R_TLV enough for the aic3204 codec? I have not looked at the datasheet (if it is available), but I'll try to find it. Well looking at the _2r_sx functions in soc-core.c does not really clears the intention, but at least I can see several things in the snd_soc_put_volsw_2r_sx function, which can cause problems: - in error case it returns 0, - instead of updating the bits, it rewrites the register, which I think will erase bits, which it should not touch. - it has the ret variable, but it is not really used, and when it got assigned, than it gets 1 in the success case. But luckily the return at the end of the function is not using the ret, but 0. - I'm not really sure if the 0xff masking is needed at all in the _sx functions, since the values are masked with the mask anyways.
So I do not really follow what these suppose to do... Can someone give an example of HW register, and the SX combination with the tlv struct?