On 9/9/2015 17:52, Mark Brown wrote:
On Wed, Sep 09, 2015 at 11:16:08AM +0800, Wu, Songjun wrote:
On 9/8/2015 20:23, Mark Brown wrote:
If you want to have three controls you need to write code so that the user can only change one of them from 0dB at once, returning an error otherwise. That was why it looked like they were three separate controls.
If user operates two or tree controls at the same time, for my understanding, these operations are serial actually in kernel, not parallel, and the last operation will be effective. I only write the function 'classd_get_eq_enum' to get the enumeration value, if user changes one of controls, the other controls will get 0dB. Is my understanding correct?
Yes, that's what's going to end up happening but it's not how controls are expected to behave - applications will expect changing one control to leave others unaffected so it's better to return an error rather than change the other control.
If application change non EQ controls, the others will be unaffected. But the classD IP can only supports one EQ control at once, these three EQ controls point to the same register field, if application set a different EQ control, the error occurs, there will be many errors, it's not very reasonable to application. The best way I think is if application set one EQ control, the other EQ controls will change to 0dB, it's also consistent with fact.