diff options
author | Peter Ujfalusi <peter.ujfalusi@nokia.com> | 2009-10-22 06:26:45 -0400 |
---|---|---|
committer | Mark Brown <broonie@opensource.wolfsonmicro.com> | 2009-10-25 13:15:08 -0400 |
commit | 0b83ddebc6e884dc0221358cf68c461520fbdd8e (patch) | |
tree | 7c57a54fe8b0f02448597df3f7f81ea87a8b96b2 /include/linux/i2c | |
parent | 0ffc11800cb2a74b05c2f5b28966ebd50b27f70c (diff) |
MFD: twl4030: add twl4030_codec MFD as a new child to the core
New MFD child to twl4030 MFD device.
Reason for the twl4030_codec MFD: the vibra control is actually in the codec
part of the twl4030. If both the vibra and the audio functionality is needed
from the twl4030 at the same time, than they need to control the codec power
and APLL at the same time without breaking the other driver.
Also these two has to be able to work without the need for the other driver.
This MFD device will be used by the drivers, which needs resources
from the twl4030 codec like audio and vibra.
The platform specific configuration data is passed along to the
child drivers (audio, vibra).
Signed-off-by: Peter Ujfalusi <peter.ujfalusi@nokia.com>
Acked-by: Samuel Ortiz <sameo@linux.intel.com>
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
Diffstat (limited to 'include/linux/i2c')
-rw-r--r-- | include/linux/i2c/twl4030.h | 18 |
1 files changed, 18 insertions, 0 deletions
diff --git a/include/linux/i2c/twl4030.h b/include/linux/i2c/twl4030.h index 2d02dfd7076c..42d6c722bd82 100644 --- a/include/linux/i2c/twl4030.h +++ b/include/linux/i2c/twl4030.h | |||
@@ -401,6 +401,23 @@ struct twl4030_power_data { | |||
401 | 401 | ||
402 | extern void twl4030_power_init(struct twl4030_power_data *triton2_scripts); | 402 | extern void twl4030_power_init(struct twl4030_power_data *triton2_scripts); |
403 | 403 | ||
404 | struct twl4030_codec_audio_data { | ||
405 | unsigned int audio_mclk; | ||
406 | unsigned int ramp_delay_value; | ||
407 | unsigned int hs_extmute:1; | ||
408 | void (*set_hs_extmute)(int mute); | ||
409 | }; | ||
410 | |||
411 | struct twl4030_codec_vibra_data { | ||
412 | unsigned int audio_mclk; | ||
413 | unsigned int coexist; | ||
414 | }; | ||
415 | |||
416 | struct twl4030_codec_data { | ||
417 | struct twl4030_codec_audio_data *audio; | ||
418 | struct twl4030_codec_vibra_data *vibra; | ||
419 | }; | ||
420 | |||
404 | struct twl4030_platform_data { | 421 | struct twl4030_platform_data { |
405 | unsigned irq_base, irq_end; | 422 | unsigned irq_base, irq_end; |
406 | struct twl4030_bci_platform_data *bci; | 423 | struct twl4030_bci_platform_data *bci; |
@@ -409,6 +426,7 @@ struct twl4030_platform_data { | |||
409 | struct twl4030_keypad_data *keypad; | 426 | struct twl4030_keypad_data *keypad; |
410 | struct twl4030_usb_data *usb; | 427 | struct twl4030_usb_data *usb; |
411 | struct twl4030_power_data *power; | 428 | struct twl4030_power_data *power; |
429 | struct twl4030_codec_data *codec; | ||
412 | 430 | ||
413 | /* LDO regulators */ | 431 | /* LDO regulators */ |
414 | struct regulator_init_data *vdac; | 432 | struct regulator_init_data *vdac; |