summaryrefslogtreecommitdiff
path: root/packages/obsolete/nslu2/nslu2-kernel/2.6.15/60-nslu2-beeper.patch
diff options
context:
space:
mode:
Diffstat (limited to 'packages/obsolete/nslu2/nslu2-kernel/2.6.15/60-nslu2-beeper.patch')
-rw-r--r--packages/obsolete/nslu2/nslu2-kernel/2.6.15/60-nslu2-beeper.patch184
1 files changed, 0 insertions, 184 deletions
diff --git a/packages/obsolete/nslu2/nslu2-kernel/2.6.15/60-nslu2-beeper.patch b/packages/obsolete/nslu2/nslu2-kernel/2.6.15/60-nslu2-beeper.patch
deleted file mode 100644
index 12fdc4d96e..0000000000
--- a/packages/obsolete/nslu2/nslu2-kernel/2.6.15/60-nslu2-beeper.patch
+++ /dev/null
@@ -1,184 +0,0 @@
- drivers/input/misc/Kconfig | 12 +++
- drivers/input/misc/Makefile | 1
- drivers/input/misc/nslu2spkr.c | 148 +++++++++++++++++++++++++++++++++++++++++
- 3 files changed, 161 insertions(+)
-
---- linux-2.6.15/drivers/input/misc/Kconfig 1970-01-01 00:00:00.000000000 +0000
-+++ linux-2.6.15/drivers/input/misc/Kconfig 1970-01-01 00:00:00.000000000 +0000
-@@ -40,6 +40,18 @@ config INPUT_M68K_BEEP
- tristate "M68k Beeper support"
- depends on M68K
-
-+config INPUT_NSLU2_BEEPER
-+ tristate "NSLU2 Beeper support"
-+ depends on MACH_NSLU2
-+ help
-+ Say Y here if you want the embedded beeper on the LinkSys NSLU2
-+ to be used for bells and whistles.
-+
-+ If unsure, say Y.
-+
-+ To compile this driver as a module, choose M here: the
-+ module will be called nslu2spkr.
-+
- config INPUT_UINPUT
- tristate "User level driver support"
- help
---- linux-2.6.15/drivers/input/misc/Makefile 1970-01-01 00:00:00.000000000 +0000
-+++ linux-2.6.15/drivers/input/misc/Makefile 1970-01-01 00:00:00.000000000 +0000
-@@ -10,3 +10,4 @@ obj-$(CONFIG_INPUT_M68K_BEEP) += m68ksp
- obj-$(CONFIG_INPUT_98SPKR) += 98spkr.o
- obj-$(CONFIG_INPUT_UINPUT) += uinput.o
- obj-$(CONFIG_HP_SDC_RTC) += hp_sdc_rtc.o
-+obj-$(CONFIG_INPUT_NSLU2_BEEPER) += nslu2spkr.o
---- linux-2.6.15/drivers/input/misc/nslu2spkr.c 1970-01-01 00:00:00.000000000 +0000
-+++ linux-2.6.15/drivers/input/misc/nslu2spkr.c 1970-01-01 00:00:00.000000000 +0000
-@@ -0,0 +1,148 @@
-+/*
-+ * drivers/input/misc/nslu2spkr.c
-+ *
-+ * NSLU2 Beeper driver
-+ *
-+ * Copyright (C) 2005 Tower Technologies
-+ *
-+ * based on nslu2-io.c
-+ * Copyright (C) 2004 Karen Spearel
-+ *
-+ * Author: Alessandro Zummo <a.zummo@towertech.it>
-+ * Maintainers: http://www.nslu2-linux.org/
-+ *
-+ * This program is free software; you can redistribute it and/or modify
-+ * it under the terms of the GNU General Public License version 2 as
-+ * published by the Free Software Foundation.
-+ *
-+ */
-+
-+#include <linux/config.h>
-+#include <linux/module.h>
-+#include <linux/init.h>
-+#include <linux/input.h>
-+#include <linux/delay.h>
-+
-+#include <asm/hardware.h>
-+#include <asm/irq.h>
-+#include <asm/mach-types.h>
-+
-+static unsigned int beep_on_startup = 1;
-+module_param(beep_on_startup, bool, 0);
-+MODULE_PARM_DESC(beep_on_startup, "Play a beep on module startup");
-+
-+DEFINE_SPINLOCK(beep_lock);
-+
-+static int nslu2_spkr_event(struct input_dev *dev, unsigned int type, unsigned int code, int value)
-+{
-+ unsigned int count = 0;
-+ unsigned long flags;
-+
-+ if (type != EV_SND)
-+ return -1;
-+
-+ switch (code) {
-+ case SND_BELL:
-+ if (value) value = 1000;
-+ case SND_TONE:
-+ break;
-+ default:
-+ return -1;
-+ }
-+
-+ if (value > 20 && value < 32767)
-+ count = (NSLU2_FREQ / (value*4)) - 1;
-+
-+ spin_lock_irqsave(&beep_lock, flags);
-+
-+ if (count) {
-+
-+ gpio_line_config(NSLU2_GPIO_BUZZ, IXP4XX_GPIO_OUT);
-+ gpio_line_set(NSLU2_GPIO_BUZZ, IXP4XX_GPIO_LOW);
-+
-+ *IXP4XX_OSRT2 = (count & ~IXP4XX_OST_RELOAD_MASK) | IXP4XX_OST_ENABLE;
-+
-+ } else {
-+
-+ gpio_line_config(NSLU2_GPIO_BUZZ, IXP4XX_GPIO_IN);
-+ gpio_line_set(NSLU2_GPIO_BUZZ, IXP4XX_GPIO_HIGH);
-+
-+ *IXP4XX_OSRT2 = 0;
-+ }
-+
-+ spin_unlock_irqrestore(&beep_lock, flags);
-+
-+ return 0;
-+}
-+
-+static struct input_dev nslu2_spkr_dev = {
-+ .phys = "ixp420/gpio4",
-+ .name = "NSLU2 Beeper",
-+ .evbit[0] = BIT(EV_SND),
-+ .sndbit[0] = BIT(SND_BELL) | BIT(SND_TONE),
-+ .event = nslu2_spkr_event,
-+ .id = {
-+ .bustype = BUS_HOST,
-+ .vendor = 0x001f,
-+ .product = 0x0001,
-+ .version = 0x0100
-+ }
-+};
-+
-+static irqreturn_t nslu2_spkr_handler(int irq, void *dev_id, struct pt_regs *regs)
-+{
-+ /* clear interrupt */
-+ *IXP4XX_OSST = IXP4XX_OSST_TIMER_2_PEND;
-+
-+ /* flip the beeper output */
-+ *IXP4XX_GPIO_GPOUTR ^= NSLU2_BZ_BM;
-+
-+ return IRQ_HANDLED;
-+}
-+
-+static int __init nslu2_spkr_init(void)
-+{
-+ if (!(machine_is_nslu2()))
-+ return -ENODEV;
-+
-+ if (request_irq(IRQ_IXP4XX_TIMER2, &nslu2_spkr_handler,
-+ SA_INTERRUPT | SA_TIMER, "nslu2-beeper", NULL < 0)) {
-+
-+ printk(KERN_INFO "NSLU2 beeper: IRQ %d not available\n",
-+ IRQ_IXP4XX_TIMER2);
-+
-+ return -EIO;
-+ }
-+
-+ input_register_device(&nslu2_spkr_dev);
-+
-+ /* do a little beep to tell the world we are alive */
-+ if (beep_on_startup)
-+ {
-+ nslu2_spkr_event(NULL, EV_SND, SND_TONE, 440);
-+ msleep(120);
-+ nslu2_spkr_event(NULL, EV_SND, SND_TONE, 0);
-+ }
-+
-+ printk(KERN_INFO "NSLU2: beeper\n");
-+ return 0;
-+}
-+
-+static void __exit nslu2_spkr_exit(void)
-+{
-+ input_unregister_device(&nslu2_spkr_dev);
-+
-+ disable_irq(IRQ_IXP4XX_TIMER2);
-+
-+ /* turn it off */
-+ nslu2_spkr_event(NULL, EV_SND, SND_BELL, 0);
-+
-+ free_irq(IRQ_IXP4XX_TIMER2, NULL);
-+}
-+
-+module_init(nslu2_spkr_init);
-+module_exit(nslu2_spkr_exit);
-+
-+MODULE_AUTHOR("Alessandro Zummo <a.zummo@towertech.it>");
-+MODULE_DESCRIPTION("NSLU2 Beeper driver");
-+MODULE_LICENSE("GPL");