diff options
author | Hu hui <b29976@freescale.com> | 2010-10-15 16:31:58 +0800 |
---|---|---|
committer | Hu Hui <b29976@freescale.com> | 2010-10-15 17:28:22 +0800 |
commit | 157aeafc279da02d7da9bdeb73339791b8eb09c9 (patch) | |
tree | 1ec073c82536682de4dd6673907902a7d508267e | |
parent | 6193f7234b9ad1ad3d22f8474d564401ce27d7c2 (diff) |
ENGR00132639-2 Power: mxc_pwerkey break mx25 kernel build
Driver Part
define a new platform data struct, and Put the pmic callback
register into platform data structure, then we can cover all pmic
Signed-off-by: Hu Hui <b29976@freescale.com>
-rwxr-xr-x | drivers/input/keyboard/mxc_pwrkey.c | 14 | ||||
-rw-r--r-- | include/linux/powerkey.h | 30 |
2 files changed, 38 insertions, 6 deletions
diff --git a/drivers/input/keyboard/mxc_pwrkey.c b/drivers/input/keyboard/mxc_pwrkey.c index c4e9ce9865c1..378cb4f7663e 100755 --- a/drivers/input/keyboard/mxc_pwrkey.c +++ b/drivers/input/keyboard/mxc_pwrkey.c @@ -30,14 +30,14 @@ #include <linux/irq.h> #include <linux/interrupt.h> #include <linux/platform_device.h> -#include <linux/pmic_external.h> +#include <linux/powerkey.h> #define KEYCODE_ONOFF KEY_F4 /*! Input device structure. */ static struct input_dev *mxcpwrkey_dev; static bool key_press; -static void power_key_event_handler(void) +static void power_key_event_handler(void *param) { if (!key_press) { key_press = true; @@ -54,8 +54,12 @@ static void power_key_event_handler(void) static int mxcpwrkey_probe(struct platform_device *pdev) { int retval, err; - pmic_event_callback_t power_key_event; + struct power_key_platform_data *pdata = pdev->dev.platform_data; + if (!pdata) { + printk(KERN_DEBUG "power key platform data is NULL, there is no power key\n"); + return 0; + } printk(KERN_INFO "PMIC powerkey probe\n"); key_press = false; @@ -71,9 +75,7 @@ static int mxcpwrkey_probe(struct platform_device *pdev) mxcpwrkey_dev->id.bustype = BUS_HOST; mxcpwrkey_dev->evbit[0] = BIT_MASK(EV_KEY); - power_key_event.param = NULL; - power_key_event.func = (void *)power_key_event_handler; - pmic_event_subscribe(EVENT_PWRONI, power_key_event); + pdata->register_key_press_handler(power_key_event_handler, NULL); input_set_capability(mxcpwrkey_dev, EV_KEY, KEYCODE_ONOFF); diff --git a/include/linux/powerkey.h b/include/linux/powerkey.h new file mode 100644 index 000000000000..b59cb69c31ed --- /dev/null +++ b/include/linux/powerkey.h @@ -0,0 +1,30 @@ +/* + * Copyright (C) 2010 Freescale Semiconductor, Inc. All Rights Reserved. + */ +/* + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License along + * with this program; if not, write to the Free Software Foundation, Inc., + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + */ +#ifndef POWER_KEY_H +#define POWER_KEY_H + +typedef void (*key_press_call_back)(void *); +typedef void (*register_key_press_call_back)(key_press_call_back, void *); + +struct power_key_platform_data { + register_key_press_call_back register_key_press_handler; + void *param; /* param of the handler */ +}; + +#endif /* POWER_KEY_H */ |