On Thu, 2011-07-07 at 21:19 +0530, Mark Brown wrote:
On Thu, Jul 07, 2011 at 05:20:07PM +0530, Ashish Chavan wrote:
Oh, that's correct. You may be suggesting something similar to what is done in sound/soc/codecs/wm8985.c for "Equalizer Function", i.e. using SOC_xxx_EXT version for defining custom control and putting condition checks in respective "_put()" function.
Or just writing a control directly.
I guess both of these methods are acceptable and there is no inherent preference for one over another.
Those functions are used by the core for providing readback of the controls to userspace. You need to provide them but your driver can use whatever it likes to read its own state (providing it's tasteful), it doesn't need to go through external APIs. Any driver with a custom control will have an example of how it chooses to read its own state.
I see. Thanks for the insight.
I am looking at SOC_DAPM_SINGLE_W in wm8903.c, SOC_WM8350_DOUBLE_R_TLV in wm8350.c and SOC_TWL6040_DOUBLE_TLV in twl6040.c as reference examples. Respective xxx_get_xxx() methods are what you are trying to point me to, right?