From: <mar...@us...> - 2007-08-18 20:13:11
|
Revision: 1244 http://hackndev.svn.sourceforge.net/hackndev/?rev=1244&view=rev Author: marex_z71 Date: 2007-08-18 13:13:05 -0700 (Sat, 18 Aug 2007) Log Message: ----------- PalmTX: border switch driver Modified Paths: -------------- linux4palm/linux/trunk/arch/arm/mach-pxa/palmtx/Kconfig linux4palm/linux/trunk/arch/arm/mach-pxa/palmtx/Makefile linux4palm/linux/trunk/include/asm-arm/arch-pxa/palmtx-gpio.h Added Paths: ----------- linux4palm/linux/trunk/arch/arm/mach-pxa/palmtx/palmtx_border.c Modified: linux4palm/linux/trunk/arch/arm/mach-pxa/palmtx/Kconfig =================================================================== --- linux4palm/linux/trunk/arch/arm/mach-pxa/palmtx/Kconfig 2007-08-18 19:59:45 UTC (rev 1243) +++ linux4palm/linux/trunk/arch/arm/mach-pxa/palmtx/Kconfig 2007-08-18 20:13:05 UTC (rev 1244) @@ -33,3 +33,8 @@ help This driver handles the CF/PCCARD/PCMCIA bus. +config PALMTX_BORDER + tristate "Palm TX Display border switch" + depends on MACH_XSCALE_PALMTX + help + Enable support for turning LCD border on/off Modified: linux4palm/linux/trunk/arch/arm/mach-pxa/palmtx/Makefile =================================================================== --- linux4palm/linux/trunk/arch/arm/mach-pxa/palmtx/Makefile 2007-08-18 19:59:45 UTC (rev 1243) +++ linux4palm/linux/trunk/arch/arm/mach-pxa/palmtx/Makefile 2007-08-18 20:13:05 UTC (rev 1244) @@ -6,3 +6,4 @@ obj-$(CONFIG_PALMTX_BATTERY) += palmtx_battery.o obj-$(CONFIG_PALMTX_PM) += palmtx_pm.o obj-$(CONFIG_PALMTX_PCMCIA) += palmtx_pcmcia.o +obj-$(CONFIG_PALMTX_BORDER) += palmtx_border.o Added: linux4palm/linux/trunk/arch/arm/mach-pxa/palmtx/palmtx_border.c =================================================================== --- linux4palm/linux/trunk/arch/arm/mach-pxa/palmtx/palmtx_border.c (rev 0) +++ linux4palm/linux/trunk/arch/arm/mach-pxa/palmtx/palmtx_border.c 2007-08-18 20:13:05 UTC (rev 1244) @@ -0,0 +1,100 @@ +/* + * Palm T|X LCD Border switch + * + * Copyright (C) 2007 Marek Vasut <mar...@gm...> + * + * 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/module.h> +#include <linux/kernel.h> +#include <linux/platform_device.h> +#include <linux/delay.h> + +#include <asm/arch/hardware.h> +#include <asm/arch/palmtx-gpio.h> + +static ssize_t palmtx_border_write(struct device *dev, struct device_attribute *attr, + const char *buf, size_t count) +{ + signed long state = simple_strtol(buf, NULL, 10); + + if ( state >= 1 ) + SET_PALMTX_GPIO(BORDER_SELECT, 1); + else + SET_PALMTX_GPIO(BORDER_SELECT, 0); + + msleep(50); + SET_PALMTX_GPIO(BORDER_SWITCH, 1); + + if ((state == 1) || (state == 0)) /* default - switch border on/off */ + msleep(200); + else { /* hidden functionality - colored border */ + if (state >= 0) + msleep(state); + else + msleep(-state); + } + + SET_PALMTX_GPIO(BORDER_SWITCH, 0); + + return count; +} + +static ssize_t palmtx_border_read(struct device *dev, + struct device_attribute *attr, + char *buf) +{ + return strlcpy(buf, GET_PALMTX_GPIO(BORDER_SELECT) ? "1\n" : "0\n", 3); +} + +static DEVICE_ATTR(border_power, 0644, palmtx_border_read, palmtx_border_write); + +static struct attribute *palmtx_border_attrs[] = { + &dev_attr_border_power.attr, + NULL +}; + +static struct attribute_group palmtx_border_attr_group = { + .attrs = palmtx_border_attrs, +}; + +static int __devinit palmtx_border_probe(struct platform_device *pdev) +{ + return sysfs_create_group(&pdev->dev.kobj, &palmtx_border_attr_group); +} + +static int palmtx_border_remove(struct platform_device *pdev) +{ + sysfs_remove_group(&pdev->dev.kobj, &palmtx_border_attr_group); + return 0; +} + +static struct platform_driver palmtx_border_driver = { + .probe = palmtx_border_probe, + .remove = palmtx_border_remove, + .suspend = NULL, + .resume = NULL, + .driver = { + .name = "palmtx-border", + } +}; + +static int __init palmtx_border_init(void) +{ + return platform_driver_register(&palmtx_border_driver); +} + +static void palmtx_border_exit(void) +{ + platform_driver_unregister(&palmtx_border_driver); +} + +module_init(palmtx_border_init); +module_exit(palmtx_border_exit); + +MODULE_LICENSE("GPL"); +MODULE_AUTHOR("Marek Vasut <mar...@gm...>"); +MODULE_DESCRIPTION("Palm T|X Border switch"); Modified: linux4palm/linux/trunk/include/asm-arm/arch-pxa/palmtx-gpio.h =================================================================== --- linux4palm/linux/trunk/include/asm-arm/arch-pxa/palmtx-gpio.h 2007-08-18 19:59:45 UTC (rev 1243) +++ linux4palm/linux/trunk/include/asm-arm/arch-pxa/palmtx-gpio.h 2007-08-18 20:13:05 UTC (rev 1244) @@ -1,6 +1,4 @@ /* - * $Id$ - * * GPIOs and interrupts for Palm TX Handheld Computer * * Based on palmld-gpio.h by Alex Osborne @@ -23,6 +21,7 @@ /* * WORK IN PROGRESS */ +#include <asm/arch/pxa-regs.h> #ifndef _INCLUDE_PALMTX_GPIO_H_ This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |