|
|
|
@ -1,6 +1,12 @@ |
|
|
|
|
diff -Nur linux-2.6.21.6-orig/arch/arm/mach-ixp4xx/fsg-power.c linux-2.6.21.6/arch/arm/mach-ixp4xx/fsg-power.c
|
|
|
|
|
--- linux-2.6.21.6-orig/arch/arm/mach-ixp4xx/fsg-power.c 1970-01-01 01:00:00.000000000 +0100
|
|
|
|
|
+++ linux-2.6.21.6/arch/arm/mach-ixp4xx/fsg-power.c 2007-10-12 22:32:27.000000000 +0200
|
|
|
|
|
---
|
|
|
|
|
arch/arm/mach-ixp4xx/Makefile | 2
|
|
|
|
|
arch/arm/mach-ixp4xx/fsg-power.c | 168 +++++++++++++++++++++++++++++++++++++++
|
|
|
|
|
2 files changed, 169 insertions(+), 1 deletion(-)
|
|
|
|
|
|
|
|
|
|
Index: linux-2.6.21.6-armeb/arch/arm/mach-ixp4xx/fsg-power.c
|
|
|
|
|
===================================================================
|
|
|
|
|
--- /dev/null
|
|
|
|
|
+++ linux-2.6.21.6-armeb/arch/arm/mach-ixp4xx/fsg-power.c
|
|
|
|
|
@@ -0,0 +1,168 @@
|
|
|
|
|
+/*
|
|
|
|
|
+ * arch/arm/mach-ixp4xx/fsg-power.c
|
|
|
|
@ -62,18 +68,18 @@ diff -Nur linux-2.6.21.6-orig/arch/arm/mach-ixp4xx/fsg-power.c linux-2.6.21.6/ar |
|
|
|
|
+static irqreturn_t fsg_sync_button_handler(int irq, void *dev_id)
|
|
|
|
|
+{
|
|
|
|
|
+ int holdkey;
|
|
|
|
|
+ struct event_t *event;
|
|
|
|
|
+
|
|
|
|
|
+ //check button status
|
|
|
|
|
+ gpio_line_get(FSG_SB_GPIO, &holdkey);
|
|
|
|
|
+
|
|
|
|
|
+ struct event_t *event;
|
|
|
|
|
+ //create event
|
|
|
|
|
+ if ((event = (struct event_t *)kzalloc (sizeof(struct event_t), GFP_ATOMIC))) {
|
|
|
|
|
+ event->action = holdkey;
|
|
|
|
|
+ event->button_name = "sync";
|
|
|
|
|
+
|
|
|
|
|
+
|
|
|
|
|
+ INIT_WORK(&event->wq, (void *)(void *)hotplug_button);
|
|
|
|
|
+ schedule_work(&event->wq);
|
|
|
|
|
+ schedule_work(&event->wq);
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ return IRQ_HANDLED;
|
|
|
|
@ -82,18 +88,18 @@ diff -Nur linux-2.6.21.6-orig/arch/arm/mach-ixp4xx/fsg-power.c linux-2.6.21.6/ar |
|
|
|
|
+static irqreturn_t fsg_reset_button_handler(int irq, void *dev_id)
|
|
|
|
|
+{
|
|
|
|
|
+ int holdkey;
|
|
|
|
|
+ struct event_t *event;
|
|
|
|
|
+
|
|
|
|
|
+ //check button status
|
|
|
|
|
+ gpio_line_get(FSG_RB_GPIO, &holdkey);
|
|
|
|
|
+
|
|
|
|
|
+ struct event_t *event;
|
|
|
|
|
+ //create event
|
|
|
|
|
+ if ((event = (struct event_t *)kzalloc (sizeof(struct event_t), GFP_ATOMIC))) {
|
|
|
|
|
+ event->action = holdkey;
|
|
|
|
|
+ event->button_name = "reset";
|
|
|
|
|
+
|
|
|
|
|
+
|
|
|
|
|
+ INIT_WORK(&event->wq, (void *)(void *)hotplug_button);
|
|
|
|
|
+ schedule_work(&event->wq);
|
|
|
|
|
+ schedule_work(&event->wq);
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ return IRQ_HANDLED;
|
|
|
|
@ -102,18 +108,18 @@ diff -Nur linux-2.6.21.6-orig/arch/arm/mach-ixp4xx/fsg-power.c linux-2.6.21.6/ar |
|
|
|
|
+static irqreturn_t fsg_unplug_button_handler(int irq, void *dev_id)
|
|
|
|
|
+{
|
|
|
|
|
+ int holdkey;
|
|
|
|
|
+ struct event_t *event;
|
|
|
|
|
+
|
|
|
|
|
+ //check button status
|
|
|
|
|
+ gpio_line_get(FSG_UB_GPIO, &holdkey);
|
|
|
|
|
+
|
|
|
|
|
+ struct event_t *event;
|
|
|
|
|
+ //create event
|
|
|
|
|
+ if ((event = (struct event_t *)kzalloc (sizeof(struct event_t), GFP_ATOMIC))) {
|
|
|
|
|
+ event->action = holdkey;
|
|
|
|
|
+ event->button_name = "unplug";
|
|
|
|
|
+
|
|
|
|
|
+
|
|
|
|
|
+ INIT_WORK(&event->wq, (void *)(void *)hotplug_button);
|
|
|
|
|
+ schedule_work(&event->wq);
|
|
|
|
|
+ schedule_work(&event->wq);
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ return IRQ_HANDLED;
|
|
|
|
@ -122,7 +128,7 @@ diff -Nur linux-2.6.21.6-orig/arch/arm/mach-ixp4xx/fsg-power.c linux-2.6.21.6/ar |
|
|
|
|
+static int __init fsg_buttons_init(void)
|
|
|
|
|
+{
|
|
|
|
|
+ if (!(machine_is_fsg()))
|
|
|
|
|
+ return;
|
|
|
|
|
+ return 0;
|
|
|
|
|
+
|
|
|
|
|
+ /* Configure interrupt input for SYNC button */
|
|
|
|
|
+ set_irq_type(FSG_SB_IRQ, IRQT_BOTHEDGE);
|
|
|
|
@ -170,9 +176,10 @@ diff -Nur linux-2.6.21.6-orig/arch/arm/mach-ixp4xx/fsg-power.c linux-2.6.21.6/ar |
|
|
|
|
+MODULE_AUTHOR("Zintis Petersons <Zintis.Petersons@e-mail.lv>");
|
|
|
|
|
+MODULE_DESCRIPTION("FSG buttons driver");
|
|
|
|
|
+MODULE_LICENSE("GPL");
|
|
|
|
|
diff -Nur linux-2.6.21.6-orig/arch/arm/mach-ixp4xx/Makefile linux-2.6.21.6/arch/arm/mach-ixp4xx/Makefile
|
|
|
|
|
--- linux-2.6.21.6-orig/arch/arm/mach-ixp4xx/Makefile 2007-10-12 14:34:18.000000000 +0200
|
|
|
|
|
+++ linux-2.6.21.6/arch/arm/mach-ixp4xx/Makefile 2007-10-12 22:34:06.000000000 +0200
|
|
|
|
|
Index: linux-2.6.21.6-armeb/arch/arm/mach-ixp4xx/Makefile
|
|
|
|
|
===================================================================
|
|
|
|
|
--- linux-2.6.21.6-armeb.orig/arch/arm/mach-ixp4xx/Makefile
|
|
|
|
|
+++ linux-2.6.21.6-armeb/arch/arm/mach-ixp4xx/Makefile
|
|
|
|
|
@@ -30,7 +30,7 @@
|
|
|
|
|
obj-$(CONFIG_MACH_NSLU2) += nslu2-setup.o nslu2-power.o
|
|
|
|
|
obj-$(CONFIG_MACH_NAS100D) += nas100d-setup.o nas100d-power.o
|
|
|
|
|