mirror of
https://mirrors.bfsu.edu.cn/git/linux.git
synced 2024-11-11 21:38:32 +08:00
sh: push-switch fixups for work_struct API damage.
INIT_WORK() dropped the data arg, so now we have to stash an extra pointer and backpedal instead. Signed-off-by: Paul Mundt <lethal@linux-sh.org>
This commit is contained in:
parent
b482ad5dae
commit
fce3a24e70
@ -14,7 +14,7 @@
|
||||
#include <asm/push-switch.h>
|
||||
|
||||
#define DRV_NAME "push-switch"
|
||||
#define DRV_VERSION "0.1.0"
|
||||
#define DRV_VERSION "0.1.1"
|
||||
|
||||
static ssize_t switch_show(struct device *dev,
|
||||
struct device_attribute *attr,
|
||||
@ -32,10 +32,10 @@ static void switch_timer(unsigned long data)
|
||||
schedule_work(&psw->work);
|
||||
}
|
||||
|
||||
static void switch_work_handler(void *data)
|
||||
static void switch_work_handler(struct work_struct *work)
|
||||
{
|
||||
struct platform_device *pdev = data;
|
||||
struct push_switch *psw = platform_get_drvdata(pdev);
|
||||
struct push_switch *psw = container_of(work, struct push_switch, work);
|
||||
struct platform_device *pdev = psw->pdev;
|
||||
|
||||
psw->state = 0;
|
||||
|
||||
@ -76,12 +76,15 @@ static int switch_drv_probe(struct platform_device *pdev)
|
||||
}
|
||||
}
|
||||
|
||||
INIT_WORK(&psw->work, switch_work_handler, pdev);
|
||||
INIT_WORK(&psw->work, switch_work_handler);
|
||||
init_timer(&psw->debounce);
|
||||
|
||||
psw->debounce.function = switch_timer;
|
||||
psw->debounce.data = (unsigned long)psw;
|
||||
|
||||
/* Workqueue API brain-damage */
|
||||
psw->pdev = pdev;
|
||||
|
||||
platform_set_drvdata(pdev, psw);
|
||||
|
||||
return 0;
|
||||
|
@ -4,6 +4,7 @@
|
||||
#include <linux/timer.h>
|
||||
#include <linux/interrupt.h>
|
||||
#include <linux/workqueue.h>
|
||||
#include <linux/platform_device.h>
|
||||
|
||||
struct push_switch {
|
||||
/* switch state */
|
||||
@ -12,6 +13,8 @@ struct push_switch {
|
||||
struct timer_list debounce;
|
||||
/* workqueue */
|
||||
struct work_struct work;
|
||||
/* platform device, for workqueue handler */
|
||||
struct platform_device *pdev;
|
||||
};
|
||||
|
||||
struct push_switch_platform_info {
|
||||
|
Loading…
Reference in New Issue
Block a user