Re: [PATCH 2/2] mfd: twl4030: add twl4030-pwrbutton as our child
From: Andrew Morton <akpm@linux-foundation.org>
Date: 2009-02-27 20:39:45
Also in:
lkml
On Fri, 27 Feb 2009 21:28:03 +0200 Felipe Balbi [off-list ref] wrote:
quoted hunk ↗ jump to hunk
From: Felipe Balbi <redacted> Make that twl4030-pwrbutton.c driver probe with current child creation api for twl4030. Cc: Samuel Ortiz <redacted> Cc: David Brownell <redacted> Signed-off-by: Felipe Balbi <redacted> --- This part is better off going via mfd. drivers/mfd/twl4030-core.c | 13 +++++++++++++ 1 files changed, 13 insertions(+), 0 deletions(-)diff --git a/drivers/mfd/twl4030-core.c b/drivers/mfd/twl4030-core.c index 68826f1..c86bc3b 100644 --- a/drivers/mfd/twl4030-core.c +++ b/drivers/mfd/twl4030-core.c@@ -101,6 +101,12 @@ #define twl_has_usb() false #endif +#if defined(CONFIG_INPUT_TWL4030_PWRBUTTON) \ + || defined(CONFIG_INPUT_TWL4030_PWBUTTON_MODULE)
OK, this is "wrong". The core shouldn't need to know about specific clients.
quoted hunk ↗ jump to hunk
+#define twl_has_pwrbutton() true +#else +#define twl_has_pwrbutton() false +#endif /* Triton Core internal information (BEGIN) */@@ -526,6 +532,13 @@ add_children(struct twl4030_platform_data *pdata, unsigned long features) usb_transceiver = child; } + if (twl_has_pwrbutton()) { + child = add_child(1, "twl4030_pwrbutton", + NULL, 0, true, pdata->irq_base + 8 + 0, 0); + if (IS_ERR(child)) + return PTR_ERR(child); + } + if (twl_has_regulator()) { /* child = add_regulator(TWL4030_REG_VPLL1, pdata->vpll1);
The client module should register itself with the core, rather than the core registering the client. What has gone wrong here?