From: <far...@us...> - 2006-10-18 17:28:15
|
Revision: 633 http://svn.sourceforge.net/hackndev/?rev=633&view=rev Author: farcaller Date: 2006-10-18 10:27:52 -0700 (Wed, 18 Oct 2006) Log Message: ----------- palmt3: battery interface now publishes status via APM (and now depends on tps65010) Modified Paths: -------------- linux4palm/linux/trunk/arch/arm/mach-pxa/palmt3/Kconfig linux4palm/linux/trunk/arch/arm/mach-pxa/palmt3/palmt3_battery.c Modified: linux4palm/linux/trunk/arch/arm/mach-pxa/palmt3/Kconfig =================================================================== --- linux4palm/linux/trunk/arch/arm/mach-pxa/palmt3/Kconfig 2006-10-18 17:25:05 UTC (rev 632) +++ linux4palm/linux/trunk/arch/arm/mach-pxa/palmt3/Kconfig 2006-10-18 17:27:52 UTC (rev 633) @@ -12,7 +12,7 @@ config PALM_T3_BATTERY tristate "Battery monitoring support" - depends on MACH_T3XSCALE + depends on MACH_T3XSCALE && TPS65010 select SOC_TSC2101 help Adds battery driver support Modified: linux4palm/linux/trunk/arch/arm/mach-pxa/palmt3/palmt3_battery.c =================================================================== --- linux4palm/linux/trunk/arch/arm/mach-pxa/palmt3/palmt3_battery.c 2006-10-18 17:25:05 UTC (rev 632) +++ linux4palm/linux/trunk/arch/arm/mach-pxa/palmt3/palmt3_battery.c 2006-10-18 17:27:52 UTC (rev 633) @@ -38,7 +38,8 @@ int palmt3_battery_get_max_voltage(struct battery *bat) { - return 4147; // approx. 4.21 V, 2718 as returned by TSC + //return 4147; // approx. 4.21 V, 2718 as returned by TSC + return 4156; // strange, but this is my current upper limit. so it be. } int palmt3_battery_get_min_voltage(struct battery *bat) @@ -98,7 +99,52 @@ .get_max_voltage = palmt3_battery_get_max_voltage, .get_status = palmt3_battery_get_status, }; +/* -------------------------- APM ------------------------------------- */ +static void palmt3_apm_get_power_status(struct apm_power_info *info) +{ + int tps65010_get_charging(void); + int min, max, curr, percent; + curr = palmt3_battery_get_voltage(NULL); + min = palmt3_battery_get_min_voltage(NULL); + max = palmt3_battery_get_max_voltage(NULL); + + curr = curr - min; + if (curr < 0) curr = 0; + max = max - min; + + percent = curr*100/max; + + info->battery_life = percent; + + info->ac_line_status = tps65010_get_charging() ? APM_AC_ONLINE : APM_AC_OFFLINE; + + if (info->ac_line_status) { + info->battery_status = APM_BATTERY_STATUS_CHARGING; + } else { + if (percent > 50) + info->battery_status = APM_BATTERY_STATUS_HIGH; + else if (percent < 5) + info->battery_status = APM_BATTERY_STATUS_CRITICAL; + else + info->battery_status = APM_BATTERY_STATUS_LOW; + } + + /* Consider one "percent" per minute, which is shot in the sky. */ + info->time = percent; + info->units = APM_UNITS_MINS; +} + +typedef void (*apm_get_power_status_t)(struct apm_power_info*); + +int set_apm_get_power_status(apm_get_power_status_t t) +{ + apm_get_power_status = t; + + return 0; +} + + /* -------------------------------------------------------------------- */ static int palmt3_battery_probe(struct device *dev) @@ -122,6 +168,11 @@ return retval; retval = battery_class_register(&palmt3_battery); + if (!retval) { +#ifdef CONFIG_PM + set_apm_get_power_status(palmt3_apm_get_power_status); +#endif + } return retval; } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ke...@us...> - 2007-02-27 21:32:13
|
Revision: 885 http://svn.sourceforge.net/hackndev/?rev=885&view=rev Author: keddar Date: 2007-02-27 13:32:11 -0800 (Tue, 27 Feb 2007) Log Message: ----------- TT3: add PALM_T3 prefix to GPIOED* Modified Paths: -------------- linux4palm/linux/trunk/arch/arm/mach-pxa/palmt3/Makefile linux4palm/linux/trunk/arch/arm/mach-pxa/palmt3/palmt3_battery.c Modified: linux4palm/linux/trunk/arch/arm/mach-pxa/palmt3/Makefile =================================================================== --- linux4palm/linux/trunk/arch/arm/mach-pxa/palmt3/Makefile 2007-02-27 21:25:28 UTC (rev 884) +++ linux4palm/linux/trunk/arch/arm/mach-pxa/palmt3/Makefile 2007-02-27 21:32:11 UTC (rev 885) @@ -5,5 +5,5 @@ obj-$(CONFIG_MACH_T3XSCALE) += palmt3.o obj-$(CONFIG_PALM_T3_BUTTONS) += palmt3_buttons.o obj-$(CONFIG_PALM_T3_BATTERY) += palmt3_battery.o -obj-$(CONFIG_GPIOED) += gpioed.o -obj-$(CONFIG_GPIOEDNG) += gpioed-ng.o +obj-$(CONFIG_PALM_T3_GPIOED) += gpioed.o +obj-$(CONFIG_PALM_T3_GPIOEDNG) += gpioed-ng.o Modified: linux4palm/linux/trunk/arch/arm/mach-pxa/palmt3/palmt3_battery.c =================================================================== --- linux4palm/linux/trunk/arch/arm/mach-pxa/palmt3/palmt3_battery.c 2007-02-27 21:25:28 UTC (rev 884) +++ linux4palm/linux/trunk/arch/arm/mach-pxa/palmt3/palmt3_battery.c 2007-02-27 21:32:11 UTC (rev 885) @@ -45,7 +45,9 @@ int palmt3_battery_get_min_voltage(struct battery *bat) { - return 3710; // 3.71 V, Critical Threshold set by PalmOS + //return 3710; // 3.71 V, Critical Threshold set by PalmOS + return 3680; // 3.68 test kEd + } static int match_tsc(struct device * dev, void * data) This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <mar...@us...> - 2007-02-27 21:51:43
|
Revision: 886 http://svn.sourceforge.net/hackndev/?rev=886&view=rev Author: marex_z71 Date: 2007-02-27 13:51:24 -0800 (Tue, 27 Feb 2007) Log Message: ----------- l4p: revert kedar's changes as he wished Modified Paths: -------------- linux4palm/linux/trunk/arch/arm/mach-pxa/palmt3/Kconfig linux4palm/linux/trunk/arch/arm/mach-pxa/palmt3/Makefile linux4palm/linux/trunk/arch/arm/mach-pxa/palmt3/palmt3_battery.c Modified: linux4palm/linux/trunk/arch/arm/mach-pxa/palmt3/Kconfig =================================================================== --- linux4palm/linux/trunk/arch/arm/mach-pxa/palmt3/Kconfig 2007-02-27 21:32:11 UTC (rev 885) +++ linux4palm/linux/trunk/arch/arm/mach-pxa/palmt3/Kconfig 2007-02-27 21:51:24 UTC (rev 886) @@ -16,14 +16,14 @@ help Adds battery driver support -config PALM_T3_GPIOED +config GPIOED tristate "GPIOED" depends on MACH_T3XSCALE default n help Gpioed: only for debuging and testing! -config PALM_T3_GPIOEDNG +config GPIOEDNG tristate "GPIOEDNG" depends on MACH_T3XSCALE default n Modified: linux4palm/linux/trunk/arch/arm/mach-pxa/palmt3/Makefile =================================================================== --- linux4palm/linux/trunk/arch/arm/mach-pxa/palmt3/Makefile 2007-02-27 21:32:11 UTC (rev 885) +++ linux4palm/linux/trunk/arch/arm/mach-pxa/palmt3/Makefile 2007-02-27 21:51:24 UTC (rev 886) @@ -5,5 +5,5 @@ obj-$(CONFIG_MACH_T3XSCALE) += palmt3.o obj-$(CONFIG_PALM_T3_BUTTONS) += palmt3_buttons.o obj-$(CONFIG_PALM_T3_BATTERY) += palmt3_battery.o -obj-$(CONFIG_PALM_T3_GPIOED) += gpioed.o -obj-$(CONFIG_PALM_T3_GPIOEDNG) += gpioed-ng.o +obj-$(CONFIG_GPIOED) += gpioed.o +obj-$(CONFIG_GPIOEDNG) += gpioed-ng.o Modified: linux4palm/linux/trunk/arch/arm/mach-pxa/palmt3/palmt3_battery.c =================================================================== --- linux4palm/linux/trunk/arch/arm/mach-pxa/palmt3/palmt3_battery.c 2007-02-27 21:32:11 UTC (rev 885) +++ linux4palm/linux/trunk/arch/arm/mach-pxa/palmt3/palmt3_battery.c 2007-02-27 21:51:24 UTC (rev 886) @@ -45,9 +45,7 @@ int palmt3_battery_get_min_voltage(struct battery *bat) { - //return 3710; // 3.71 V, Critical Threshold set by PalmOS - return 3680; // 3.68 test kEd - + return 3710; // 3.71 V, Critical Threshold set by PalmOS } static int match_tsc(struct device * dev, void * data) This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ke...@us...> - 2007-02-27 22:02:28
|
Revision: 887 http://svn.sourceforge.net/hackndev/?rev=887&view=rev Author: keddar Date: 2007-02-27 14:02:26 -0800 (Tue, 27 Feb 2007) Log Message: ----------- TT3: add PALM_T3 prefix to GPIOED* Modified Paths: -------------- linux4palm/linux/trunk/arch/arm/mach-pxa/palmt3/Kconfig linux4palm/linux/trunk/arch/arm/mach-pxa/palmt3/Makefile Modified: linux4palm/linux/trunk/arch/arm/mach-pxa/palmt3/Kconfig =================================================================== --- linux4palm/linux/trunk/arch/arm/mach-pxa/palmt3/Kconfig 2007-02-27 21:51:24 UTC (rev 886) +++ linux4palm/linux/trunk/arch/arm/mach-pxa/palmt3/Kconfig 2007-02-27 22:02:26 UTC (rev 887) @@ -16,14 +16,14 @@ help Adds battery driver support -config GPIOED +config PALM_T3_GPIOED tristate "GPIOED" depends on MACH_T3XSCALE default n help Gpioed: only for debuging and testing! -config GPIOEDNG +config PALM_T3_GPIOEDNG tristate "GPIOEDNG" depends on MACH_T3XSCALE default n Modified: linux4palm/linux/trunk/arch/arm/mach-pxa/palmt3/Makefile =================================================================== --- linux4palm/linux/trunk/arch/arm/mach-pxa/palmt3/Makefile 2007-02-27 21:51:24 UTC (rev 886) +++ linux4palm/linux/trunk/arch/arm/mach-pxa/palmt3/Makefile 2007-02-27 22:02:26 UTC (rev 887) @@ -5,5 +5,5 @@ obj-$(CONFIG_MACH_T3XSCALE) += palmt3.o obj-$(CONFIG_PALM_T3_BUTTONS) += palmt3_buttons.o obj-$(CONFIG_PALM_T3_BATTERY) += palmt3_battery.o -obj-$(CONFIG_GPIOED) += gpioed.o -obj-$(CONFIG_GPIOEDNG) += gpioed-ng.o +obj-$(CONFIG_PALM_T3_GPIOED) += gpioed.o +obj-$(CONFIG_PALM_T3_GPIOEDNG) += gpioed-ng.o This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <sle...@us...> - 2007-03-09 18:38:12
|
Revision: 897 http://svn.sourceforge.net/hackndev/?rev=897&view=rev Author: sleep_walker Date: 2007-03-09 10:38:08 -0800 (Fri, 09 Mar 2007) Log Message: ----------- l4p: T|T3 GPIOED remove - duplicity with drivers/misc Modified Paths: -------------- linux4palm/linux/trunk/arch/arm/mach-pxa/palmt3/Kconfig Removed Paths: ------------- linux4palm/linux/trunk/arch/arm/mach-pxa/palmt3/gpioed-ng.c linux4palm/linux/trunk/arch/arm/mach-pxa/palmt3/gpioed.c Modified: linux4palm/linux/trunk/arch/arm/mach-pxa/palmt3/Kconfig =================================================================== --- linux4palm/linux/trunk/arch/arm/mach-pxa/palmt3/Kconfig 2007-03-09 16:53:42 UTC (rev 896) +++ linux4palm/linux/trunk/arch/arm/mach-pxa/palmt3/Kconfig 2007-03-09 18:38:08 UTC (rev 897) @@ -16,20 +16,6 @@ help Adds battery driver support -config PALM_T3_GPIOED - tristate "GPIOED" - depends on MACH_T3XSCALE - default n - help - Gpioed: only for debuging and testing! - -config PALM_T3_GPIOEDNG - tristate "GPIOEDNG" - depends on MACH_T3XSCALE - default n - help - Gpioed-ng: only for debuging and testing! - config PALM_T3_FBKEYBOARD bool "On-screen keyboard (BROKEN)" depends on PALM_T3_TSC2101 Deleted: linux4palm/linux/trunk/arch/arm/mach-pxa/palmt3/gpioed-ng.c =================================================================== --- linux4palm/linux/trunk/arch/arm/mach-pxa/palmt3/gpioed-ng.c 2007-03-09 16:53:42 UTC (rev 896) +++ linux4palm/linux/trunk/arch/arm/mach-pxa/palmt3/gpioed-ng.c 2007-03-09 18:38:08 UTC (rev 897) @@ -1,175 +0,0 @@ -#include <linux/module.h> -#include <linux/kernel.h> -#include <linux/init.h> -#include <linux/proc_fs.h> - -#include <linux/interrupt.h> -#include <asm/irq.h> -#include <asm/mach/arch.h> -#include <asm/mach/map.h> -#include <asm/mach-types.h> -#include <asm/hardware.h> -#include <linux/sched.h> -#include <linux/workqueue.h> -#include <asm/arch/pxa-regs.h> -#include <asm/arch/irqs.h> -#include <asm/uaccess.h> - -#include <linux/debugfs.h> -#include <linux/seq_file.h> - -#define PROCFS_NAME "gpio" -#define DEBUGFS_NAME "gpio" - -static struct proc_dir_entry *proc_intf; -static struct dentry *debugfs_intf; - -#define PROCFS_MAX_SIZE 20 - -static char procfs_buffer[PROCFS_MAX_SIZE]; -static unsigned long procfs_buffer_size = 0; - -#define GPIO_TEST(reg, gp) (reg(gp) & GPIO_bit(gp)) -static int dfs_show(struct seq_file *s, void *_) -{ - int i,afn; - seq_printf(s, "GPIO lines status:\n"); - - for(i=0;i<121;i++) { - afn = (GAFR(i) & (0x3 << (((i) & 0xf)*2))) >> (((i) & 0xf)*2); - seq_printf(s, "%s%d: %s %s %s %s %lx\n", - i<10?"0":"", - i, - GPIO_TEST(GPLR, i)?"*":" ", - GPIO_TEST(GPDR, i)?"->":"<-", - GPIO_TEST(GRER, i)?"_/":" ", - GPIO_TEST(GFER, i)?"\\_":" ", - afn); - - } - - return 0; -} - -static int dfs_open(struct inode *inode, struct file *file) -{ - return single_open(file, dfs_show, inode->u.generic_ip); -} - -static struct file_operations debug_fops = { - .open = dfs_open, - .read = seq_read, - .llseek = seq_lseek, - .release = single_release, -}; - -static void gpio_set(int id, int on) -{ - do { - if (on) - GPSR(id) = GPIO_bit(id); - else - GPCR(id) = GPIO_bit(id); - } while (0); -} - -void set_afn(int gpio, int fn) -{ - int gafr; - gafr = GAFR(gpio) & ~(0x3 << (((gpio) & 0xf)*2)); - GAFR(gpio) = gafr | (fn << (((gpio) & 0xf)*2)); -} - -void handle_request() -{ - char *p = NULL; - unsigned long id = simple_strtoul(procfs_buffer+2, &p, 10); - switch(procfs_buffer[0]) { - case 'L': - gpio_set(id, 1); - printk(KERN_ERR "GPIOed: GPIO %lu set high\n", id); - break; - case 'l': - gpio_set(id, 0); - printk(KERN_ERR "GPIOed: GPIO %lu set low\n", id); - break; - case 'd': - GPDR(id) &= ~(GPIO_bit(id)); - break; - case 'D': - GPDR(id) |= GPIO_bit(id); - break; - case '0': - set_afn(id, 0); - break; - case '1': - set_afn(id, 1); - break; - case '2': - set_afn(id, 2); - break; - default: - printk(KERN_ERR "GPIOed: Unknown request\n"); - break; - } -} - - -int procfile_write(struct file *file, const char *buffer, unsigned long count, void *data) -{ - procfs_buffer_size = count; - if (procfs_buffer_size > PROCFS_MAX_SIZE ) { - procfs_buffer_size = PROCFS_MAX_SIZE; - } - - /* write data to the buffer */ - if ( copy_from_user(procfs_buffer, buffer, procfs_buffer_size) ) { - return -EFAULT; - } - - handle_request(); - - return procfs_buffer_size; -} - - -static int __init gpioed_init(void) -{ - proc_intf = create_proc_entry(PROCFS_NAME, 0644, NULL); - if (proc_intf == NULL) { - remove_proc_entry(PROCFS_NAME, &proc_root); - printk(KERN_ALERT "Error: Could not initialize /proc/%s\n", PROCFS_NAME); - return -ENOMEM; - } - - /*proc_intf->read_proc = procfile_read;*/ - proc_intf->write_proc = procfile_write; - proc_intf->owner = THIS_MODULE; - proc_intf->mode = S_IFREG | S_IRUGO; - proc_intf->uid = 0; - proc_intf->gid = 0; - proc_intf->size = 37; - - debugfs_intf = debugfs_create_file(DEBUGFS_NAME, S_IRUGO, NULL, NULL, &debug_fops); - - printk(KERN_INFO "/proc/%s created\n", PROCFS_NAME); - - return 0; -} - -static void __exit gpioed_exit(void) -{ - debugfs_remove(debugfs_intf); - remove_proc_entry(PROCFS_NAME, &proc_root); - printk(KERN_INFO "/proc/%s removed\n", PROCFS_NAME); -} - - -/*** Some more stuff ***/ -module_init(gpioed_init); -module_exit(gpioed_exit); - -MODULE_LICENSE("GPL"); -MODULE_AUTHOR("Vladimir \"Farcaller\" Pouzanov <far...@gm...>"); -MODULE_DESCRIPTION("GPIO editor for PXA26x, second edition"); - Deleted: linux4palm/linux/trunk/arch/arm/mach-pxa/palmt3/gpioed.c =================================================================== --- linux4palm/linux/trunk/arch/arm/mach-pxa/palmt3/gpioed.c 2007-03-09 16:53:42 UTC (rev 896) +++ linux4palm/linux/trunk/arch/arm/mach-pxa/palmt3/gpioed.c 2007-03-09 18:38:08 UTC (rev 897) @@ -1,227 +0,0 @@ -/*** Basic includes ***/ -#include <linux/module.h> -#include <linux/kernel.h> -#include <linux/init.h> -#include <linux/proc_fs.h> -#include <linux/irq.h> - -#include <linux/interrupt.h> -#include <asm/irq.h> -#include <asm/mach/arch.h> -#include <asm/mach/map.h> -#include <asm/mach-types.h> -#include <asm/hardware.h> -#include <linux/sched.h> -#include <linux/workqueue.h> -#include <asm/arch/pxa-regs.h> -#include <asm/arch/irqs.h> -#include <asm/uaccess.h> - -/*** GPIO macros ***/ -#define GET_PALMT3_GPIO(gpio) \ - (GPLR(GPIO_NR_PALMT3_ ## gpio) & GPIO_bit(GPIO_NR_PALMT3_ ## gpio)) - -#define SET_PALMT3_GPIO(gpio, setp) \ - do { \ - if (setp) \ - GPSR(GPIO_NR_PALMT3_ ## gpio) = GPIO_bit(GPIO_NR_PALMT3_ ## gpio); \ - else \ - GPCR(GPIO_NR_PALMT3_ ## gpio) = GPIO_bit(GPIO_NR_PALMT3_ ## gpio); \ - } while (0) - -#define SET_PALMT3_GPIO_N(gpio, setp) \ - do { \ - if (setp) \ - GPCR(GPIO_NR_PALMT3_ ## gpio) = GPIO_bit(GPIO_NR_PALMT3_ ## gpio); \ - else \ - GPSR(GPIO_NR_PALMT3_ ## gpio) = GPIO_bit(GPIO_NR_PALMT3_ ## gpio); \ - } while (0) - -#define GET_GPIO_REG(reg,gpio) (GP##reg(gpio) & GPIO_bit(gpio)) -#define GET_GPIO(gpio) GET_GPIO_REG(LR, gpio) - -/*** /proc interface ***/ -static struct proc_dir_entry *proc_intf; -#define procfs_name "gpioed" -#define PROCFS_MAX_SIZE 20 - -static char procfs_buffer[PROCFS_MAX_SIZE]; -static unsigned long procfs_buffer_size = 0; - -int procfile_read(char *buffer, char **buffer_location, off_t offset, int buffer_length, int *eof, void *data) -{ - int ret; - - if (offset > 0) { - /* we have finished to read, return 0 */ - ret = 0; - } else { - /* fill the buffer, return the buffer size */ - ret = sprintf(buffer, "HelloWorld!\n"); - } - return ret; -} - -void handle_request(void); - -int procfile_write(struct file *file, const char *buffer, unsigned long count, void *data) -{ - procfs_buffer_size = count; - if (procfs_buffer_size > PROCFS_MAX_SIZE ) { - procfs_buffer_size = PROCFS_MAX_SIZE; - } - - /* write data to the buffer */ - if ( copy_from_user(procfs_buffer, buffer, procfs_buffer_size) ) { - return -EFAULT; - } - - handle_request(); - - return procfs_buffer_size; -} - -/*** IRQ (GPIO) handling ***/ -static struct workqueue_struct *my_workqueue; -#define MY_WORK_QUEUE_NAME "GPIOed" - -static void handle_gpio(void* irq) -{ - int gpn = (int)irq; - printk(KERN_ERR "*** GPIO *** %d *** is *** %s ***\n", gpn, GET_GPIO(gpn) ? "high" : "low "); -} - -irqreturn_t gpio_irq(int irq, void *dev_id, struct pt_regs *regs) -{ - static int initialised = 0; - static struct work_struct task; - - if (initialised == 0) { - INIT_WORK(&task, handle_gpio); - initialised = 1; - } else { - PREPARE_WORK(&task, handle_gpio); - } - - queue_work(my_workqueue, &task); - - return IRQ_HANDLED; -} - -/*** GPIO R/W ***/ -static int gpio_get(int id) -{ - return GET_GPIO(id); -} - -static void gpio_set(int id, int on) -{ - do { - if (on) - GPSR(id) = GPIO_bit(id); - else - GPCR(id) = GPIO_bit(id); - } while (0); -} - -static int gpio_watch(int x) -{ - int ret; - ret = request_irq (IRQ_GPIO(x), gpio_irq, SA_SAMPLE_RANDOM, "test_handler", (void*)x); - set_irq_type (IRQ_GPIO(x), IRQT_BOTHEDGE); - if(ret!=0) { - printk(KERN_ERR "GPIOed: failed to register for GPIO %d\n", x); - return 1; - } else { - printk(KERN_ERR "GPIOed: Registered GPIO %d\n", x); - return 0; - } -} - -/*** Request handler ***/ -void handle_request() -{ - char *p = NULL; - unsigned long base = 10; - unsigned long id; - - if((procfs_buffer[0] == 'P') || (procfs_buffer[0] == 'V')) - base = 16; - id = simple_strtoul(procfs_buffer+2, &p, base); - switch(procfs_buffer[0]) { - case 'r': - printk(KERN_ERR "GPIOed: GPIO %lu is %s\n", id, gpio_get(id)?"high":"low "); - break; - case 's': - gpio_watch(id); - break; - case 'h': - gpio_set(id, 1); - printk(KERN_ERR "GPIOed: GPIO %lu set high\n", id); - break; - case 'l': - gpio_set(id, 0); - printk(KERN_ERR "GPIOed: GPIO %lu set low\n", id); - break; - case 'd': - printk(KERN_ERR "GPIOed: GPIO %lu is %s\n", id, GET_GPIO_REG(DR,id)?"output":"input"); - break; - - case 'P': - printk(KERN_ERR "GPIOed: P-V for 0x%x is 0x%x\n", id, (unsigned int)phys_to_virt(id)); - break; - case 'V': - printk(KERN_ERR "GPIOed: V-P for 0x%x is 0x%x\n", id, (unsigned int)virt_to_phys(id)); - break; - case 'D': - base = *((unsigned int*)id); - printk(KERN_ERR "GPIOed: 0x%x = 0x%x\n", id, base); - break; - default: - printk(KERN_ERR "GPIOed: Unknown request\n"); - break; - } -} - -/*** init&exit ***/ -static int __init gpioed_init(void) -{ - my_workqueue = create_workqueue(MY_WORK_QUEUE_NAME); - - proc_intf = create_proc_entry(procfs_name, 0644, NULL); - if (proc_intf == NULL) { - remove_proc_entry(procfs_name, &proc_root); - printk(KERN_ALERT "Error: Could not initialize /proc/%s\n", - procfs_name); - return -ENOMEM; - } - - proc_intf->read_proc = procfile_read; - proc_intf->write_proc = procfile_write; - proc_intf->owner = THIS_MODULE; - proc_intf->mode = S_IFREG | S_IRUGO; - proc_intf->uid = 0; - proc_intf->gid = 0; - proc_intf->size = 37; - - printk(KERN_INFO "/proc/%s created\n", procfs_name); - - return 0; -} - -static void __exit gpioed_exit(void) -{ - destroy_workqueue(my_workqueue); - remove_proc_entry(procfs_name, &proc_root); - printk(KERN_INFO "/proc/%s removed\n", procfs_name); -} - - -/*** Some more stuff ***/ -module_init(gpioed_init); -module_exit(gpioed_exit); - -MODULE_LICENSE("GPL"); -MODULE_AUTHOR("Vladimir \"Farcaller\" Pouzanov <far...@gm...>"); -MODULE_DESCRIPTION("GPIO editor for PXA26x"); - This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |