summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMiguel Aguilar <miguel.aguilar@ridgerun.com>2010-01-06 00:06:50 -0800
committerDmitry Torokhov <dmitry.torokhov@gmail.com>2010-01-06 00:17:11 -0800
commit861a64428c0786a5cfa2ffb36b2f8058dea5dda0 (patch)
treea89ebbb8340e1f9fde705bf968a567e61c497573
parent30a589fde0162aa4dac7c69803aeee8fbe8d1b82 (diff)
downloadlinux-861a64428c0786a5cfa2ffb36b2f8058dea5dda0.tar.gz
linux-861a64428c0786a5cfa2ffb36b2f8058dea5dda0.tar.bz2
linux-861a64428c0786a5cfa2ffb36b2f8058dea5dda0.zip
Input: davinci_keyscan - add device_enable method to platform data
Add a function pointer in the platform data of the DaVinci Keyscan driver called device_enable, in order to perform board specific actions when the device is initialized, like setup the PINMUX configuration. Signed-off-by: Miguel Aguilar <miguel.aguilar@ridgerun.com> Signed-off-by: Kevin Hilman <khilman@deeprootsystems.com> Signed-off-by: Dmitry Torokhov <dtor@mail.ru>
-rw-r--r--arch/arm/mach-davinci/include/mach/keyscan.h1
-rw-r--r--drivers/input/keyboard/davinci_keyscan.c8
2 files changed, 9 insertions, 0 deletions
diff --git a/arch/arm/mach-davinci/include/mach/keyscan.h b/arch/arm/mach-davinci/include/mach/keyscan.h
index b4e21a2976d1..7a560e05bda8 100644
--- a/arch/arm/mach-davinci/include/mach/keyscan.h
+++ b/arch/arm/mach-davinci/include/mach/keyscan.h
@@ -29,6 +29,7 @@ enum davinci_matrix_types {
};
struct davinci_ks_platform_data {
+ int (*device_enable)(struct device *dev);
unsigned short *keymap;
u32 keymapsize;
u8 rep:1;
diff --git a/drivers/input/keyboard/davinci_keyscan.c b/drivers/input/keyboard/davinci_keyscan.c
index 6e52d855f637..d410d7a52f1d 100644
--- a/drivers/input/keyboard/davinci_keyscan.c
+++ b/drivers/input/keyboard/davinci_keyscan.c
@@ -174,6 +174,14 @@ static int __init davinci_ks_probe(struct platform_device *pdev)
struct davinci_ks_platform_data *pdata = pdev->dev.platform_data;
int error, i;
+ if (pdata->device_enable) {
+ error = pdata->device_enable(dev);
+ if (error < 0) {
+ dev_dbg(dev, "device enable function failed\n");
+ return error;
+ }
+ }
+
if (!pdata->keymap) {
dev_dbg(dev, "no keymap from pdata\n");
return -EINVAL;