diff options
author | Florian Fainelli <florian@openwrt.org> | 2007-03-19 17:34:37 +0000 |
---|---|---|
committer | Florian Fainelli <florian@openwrt.org> | 2007-03-19 17:34:37 +0000 |
commit | d9dfd7341b4e1febcf37c7a973c1f2f13b60f54d (patch) | |
tree | 4a250ad2718a62180df562861b83777f2c4c5a85 /target/linux/adm5120-2.6/files/drivers/char | |
parent | f04dd67969a38e54002c20828acf93090c4d10a4 (diff) | |
download | mtk-20170518-d9dfd7341b4e1febcf37c7a973c1f2f13b60f54d.zip mtk-20170518-d9dfd7341b4e1febcf37c7a973c1f2f13b60f54d.tar.gz mtk-20170518-d9dfd7341b4e1febcf37c7a973c1f2f13b60f54d.tar.bz2 |
Preliminary ADM5120 support, marked as broken
SVN-Revision: 6614
Diffstat (limited to 'target/linux/adm5120-2.6/files/drivers/char')
-rw-r--r-- | target/linux/adm5120-2.6/files/drivers/char/adm5120_gpio.c | 58 |
1 files changed, 58 insertions, 0 deletions
diff --git a/target/linux/adm5120-2.6/files/drivers/char/adm5120_gpio.c b/target/linux/adm5120-2.6/files/drivers/char/adm5120_gpio.c new file mode 100644 index 0000000..6fccfb0 --- /dev/null +++ b/target/linux/adm5120-2.6/files/drivers/char/adm5120_gpio.c @@ -0,0 +1,58 @@ +/* + * ADM5120 LED (GPIO) driver + * + * Copyright (C) Jeroen Vreeken (pe1rxq@amsat.org), 2005 + */ + +#include <linux/autoconf.h> +#include <linux/module.h> +#include <linux/kernel.h> +#include <linux/miscdevice.h> +#include <linux/fs.h> + +#define LED_MINOR 151 +#define GPIO_IO ((unsigned long *)0xb20000b8) + +static ssize_t adm5120_led_write(struct file *file, const char __user *data, + size_t len, loff_t *ppos) +{ + unsigned char val; + + if (!len || get_user(val, data)) + return -EFAULT; + *GPIO_IO=(*GPIO_IO & 0x00ffffff) | (val<<24); + return 1; +} + +static struct file_operations adm5120_led_fops = { + .owner = THIS_MODULE, + .write = adm5120_led_write, +}; + +static struct miscdevice adm5120_led_device = { + LED_MINOR, + "led", + &adm5120_led_fops, +}; + +static int __init adm5120_led_init(void) +{ + printk(KERN_INFO "ADM5120 LED & GPIO driver\n"); + if (misc_register(&adm5120_led_device)) { + printk(KERN_WARNING "Couldn't register device %d\n", LED_MINOR); + return -EBUSY; + } + return 0; +} + +static void __exit adm5120_led_exit(void) +{ + misc_deregister(&adm5120_led_device); +} + +module_init(adm5120_led_init); +module_exit(adm5120_led_exit); + +MODULE_DESCRIPTION("ADM5120 LED and GPIO driver"); +MODULE_AUTHOR("Jeroen Vreeken"); +MODULE_LICENSE("GPL"); |