aboutsummaryrefslogtreecommitdiffstats
path: root/include/linux/mfd/wm8350
diff options
context:
space:
mode:
authorMark Brown <broonie@opensource.wolfsonmicro.com>2008-10-10 10:58:15 -0400
committerLiam Girdwood <lrg@slimlogic.co.uk>2008-10-13 16:51:56 -0400
commitda09155ac8d3f04c299b3d82a6ab0df8d03da632 (patch)
treed6a74be9aa350179d51f5a0ffbcbf06c37a11d37 /include/linux/mfd/wm8350
parentebccec0fa4e35dff0c18663a492a65f4dc6cad7a (diff)
regulator: Add WM8350 regulator support
The WM8350 features six DCDC convertors (four buck and two boost), four LDO voltage regulators and two constant current sinks. This driver adds support for these through the regulator API. This driver was written by Liam Girdwood with updates for submission from Mark Brown. Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com> Signed-off-by: Liam Girdwood <lrg@slimlogic.co.uk>
Diffstat (limited to 'include/linux/mfd/wm8350')
-rw-r--r--include/linux/mfd/wm8350/core.h5
-rw-r--r--include/linux/mfd/wm8350/pmic.h42
2 files changed, 47 insertions, 0 deletions
diff --git a/include/linux/mfd/wm8350/core.h b/include/linux/mfd/wm8350/core.h
index d86d38260c6..348101cb00d 100644
--- a/include/linux/mfd/wm8350/core.h
+++ b/include/linux/mfd/wm8350/core.h
@@ -17,6 +17,8 @@
17#include <linux/mutex.h> 17#include <linux/mutex.h>
18#include <linux/workqueue.h> 18#include <linux/workqueue.h>
19 19
20#include <linux/mfd/wm8350/pmic.h>
21
20/* 22/*
21 * Register values. 23 * Register values.
22 */ 24 */
@@ -570,6 +572,9 @@ struct wm8350 {
570 struct mutex irq_mutex; /* IRQ table mutex */ 572 struct mutex irq_mutex; /* IRQ table mutex */
571 struct wm8350_irq irq[WM8350_NUM_IRQ]; 573 struct wm8350_irq irq[WM8350_NUM_IRQ];
572 int chip_irq; 574 int chip_irq;
575
576 /* Client devices */
577 struct wm8350_pmic pmic;
573}; 578};
574 579
575/** 580/**
diff --git a/include/linux/mfd/wm8350/pmic.h b/include/linux/mfd/wm8350/pmic.h
index 28d2fab2787..69b69e07f62 100644
--- a/include/linux/mfd/wm8350/pmic.h
+++ b/include/linux/mfd/wm8350/pmic.h
@@ -696,4 +696,46 @@
696 696
697#define NUM_WM8350_REGULATORS 12 697#define NUM_WM8350_REGULATORS 12
698 698
699struct wm8350;
700struct platform_device;
701struct regulator_init_data;
702
703struct wm8350_pmic {
704 /* ISINK to DCDC mapping */
705 int isink_A_dcdc;
706 int isink_B_dcdc;
707
708 /* hibernate configs */
709 u16 dcdc1_hib_mode;
710 u16 dcdc3_hib_mode;
711 u16 dcdc4_hib_mode;
712 u16 dcdc6_hib_mode;
713
714 /* regulator devices */
715 struct platform_device *pdev[NUM_WM8350_REGULATORS];
716};
717
718int wm8350_register_regulator(struct wm8350 *wm8350, int reg,
719 struct regulator_init_data *initdata);
720
721/*
722 * Additional DCDC control not supported via regulator API
723 */
724int wm8350_dcdc_set_slot(struct wm8350 *wm8350, int dcdc, u16 start,
725 u16 stop, u16 fault);
726int wm8350_dcdc25_set_mode(struct wm8350 *wm8350, int dcdc, u16 mode,
727 u16 ilim, u16 ramp, u16 feedback);
728
729/*
730 * Additional LDO control not supported via regulator API
731 */
732int wm8350_ldo_set_slot(struct wm8350 *wm8350, int ldo, u16 start, u16 stop);
733
734/*
735 * Additional ISINK control not supported via regulator API
736 */
737int wm8350_isink_set_flash(struct wm8350 *wm8350, int isink, u16 mode,
738 u16 trigger, u16 duration, u16 on_ramp,
739 u16 off_ramp, u16 drive);
740
699#endif 741#endif