|
From: <sle...@us...> - 2007-07-05 11:04:07
|
Revision: 1105
http://svn.sourceforge.net/hackndev/?rev=1105&view=rev
Author: sleep_walker
Date: 2007-07-05 04:03:48 -0700 (Thu, 05 Jul 2007)
Log Message:
-----------
palmtt3: cumulative patch - led support, power button initial support
Modified Paths:
--------------
linux4palm/linux/trunk/arch/arm/mach-pxa/palmt3/palmt3.c
linux4palm/linux/trunk/arch/arm/mach-pxa/palmt3/palmt3_buttons.c
linux4palm/linux/trunk/drivers/i2c/chips/Kconfig
linux4palm/linux/trunk/drivers/i2c/chips/tps65010.c
linux4palm/linux/trunk/drivers/input/misc/Kconfig
linux4palm/linux/trunk/drivers/input/misc/Makefile
linux4palm/linux/trunk/drivers/leds/Kconfig
linux4palm/linux/trunk/drivers/leds/leds-palmtt3.c
Modified: linux4palm/linux/trunk/arch/arm/mach-pxa/palmt3/palmt3.c
===================================================================
--- linux4palm/linux/trunk/arch/arm/mach-pxa/palmt3/palmt3.c 2007-07-04 13:03:04 UTC (rev 1104)
+++ linux4palm/linux/trunk/arch/arm/mach-pxa/palmt3/palmt3.c 2007-07-05 11:03:48 UTC (rev 1105)
@@ -36,9 +36,10 @@
#include <asm/arch/pxa-pm_ll.h>
#include <asm/arch/pxapwm-bl.h>
+
#include "../generic.h"
-// FIXME move this to include/asm/arch/plamt3.h some time
+// FIXME move this to include/asm/arch/palmtt3.h some time
#define PALMT3_GPIO_TSC2101_SS (24)
#define PALMT3_GPIO_PENDOWN (37)
#define PALMT3_IRQ_GPIO_PENDOWN IRQ_GPIO(PALMT3_GPIO_PENDOWN)
@@ -201,6 +202,19 @@
.period = 0x12B,
};
+/*** LEDs ***/
+static struct platform_device palmtt3_led_device = {
+ .name = "palmtt3-led",
+ .id = -1,
+};
+
+/*** Power button ***/
+static struct platform_device palmtt3_power_button = {
+ .name = "palmtt3-pwr_btn",
+ .id = -1,
+};
+
+
static struct platform_device palmt3_backlight_device = {
.name = "pxapwm-bl",
.dev = {
@@ -215,7 +229,7 @@
void palmt3_suspend(unsigned long ret)
{
unsigned long * addr;
-
+
addr = (unsigned long *) 0xC0000000;
_PM_backup[0] = *addr;
*addr = 0xFEEDC0DE;
@@ -260,6 +274,8 @@
&tsc2101_device,
&palmt3_btn_device,
&palmt3_backlight_device,
+ &palmtt3_led_device,
+ &palmtt3_power_button,
};
static void __init palmt3_init(void)
Modified: linux4palm/linux/trunk/arch/arm/mach-pxa/palmt3/palmt3_buttons.c
===================================================================
--- linux4palm/linux/trunk/arch/arm/mach-pxa/palmt3/palmt3_buttons.c 2007-07-04 13:03:04 UTC (rev 1104)
+++ linux4palm/linux/trunk/arch/arm/mach-pxa/palmt3/palmt3_buttons.c 2007-07-05 11:03:48 UTC (rev 1105)
@@ -230,7 +230,7 @@
unsigned long flags, ret;
buttons_dev = input_allocate_device();
- buttons_dev->evbit[0] = BIT(EV_KEY);
+ buttons_dev->evbit[0] = BIT(EV_KEY) | BIT(EV_REP);
buttons_dev->name = "Palm T|T3 buttons";
buttons_dev->id.bustype = BUS_HOST;
Modified: linux4palm/linux/trunk/drivers/i2c/chips/Kconfig
===================================================================
--- linux4palm/linux/trunk/drivers/i2c/chips/Kconfig 2007-07-04 13:03:04 UTC (rev 1104)
+++ linux4palm/linux/trunk/drivers/i2c/chips/Kconfig 2007-07-05 11:03:48 UTC (rev 1105)
@@ -115,7 +115,7 @@
# and having mostly OMAP-specific board support
config TPS65010
tristate "TPS6501x Power Management chips"
- depends on I2C && (ARCH_OMAP || MACH_T3XSCALE)
+ depends on I2C && (ARCH_OMAP || (MACH_T3XSCALE && INPUT_PALMTT3_PWRBTN))
default y if MACH_OMAP_H2 || MACH_OMAP_H3 || MACH_OMAP_OSK
help
If you say yes here you get support for the TPS6501x series of
Modified: linux4palm/linux/trunk/drivers/i2c/chips/tps65010.c
===================================================================
--- linux4palm/linux/trunk/drivers/i2c/chips/tps65010.c 2007-07-04 13:03:04 UTC (rev 1104)
+++ linux4palm/linux/trunk/drivers/i2c/chips/tps65010.c 2007-07-05 11:03:48 UTC (rev 1105)
@@ -40,6 +40,11 @@
#ifdef CONFIG_MACH_T3XSCALE // T3 patch
// FIXME xscale GPIOs
#include <asm/arch/irqs.h>
+
+#if defined(CONFIG_INPUT_PALMTT3_PWRBTN_MODULE) || defined(CONFIG_INPUT_PALMTT3_PWRBTN)
+extern int palmtt3_pwr_btn_press(void);
+#endif
+
#define T3_TPS65010_GPIO 14
#else
@@ -48,7 +53,6 @@
#endif // T3 patch
#include <asm/arch/tps65010.h>
-
/*-------------------------------------------------------------------------*/
#define DRIVER_VERSION "2 May 2005"
@@ -109,7 +113,7 @@
/* not currently tracking GPIO state */
};
-#define POWER_POLL_DELAY msecs_to_jiffies(5000)
+#define POWER_POLL_DELAY msecs_to_jiffies(500)
/*-------------------------------------------------------------------------*/
@@ -358,6 +362,11 @@
/* "off" usually means deep sleep */
if (tmp & TPS_REG_ONOFF) {
pr_info("%s: power off button\n", DRIVER_NAME);
+
+#if defined(CONFIG_INPUT_PALMTT3_PWRBTN_MODULE) || defined(CONFIG_INPUT_PALMTT3_PWRBTN)
+ palmtt3_pwr_btn_press();
+#endif
+
#if 0
/* REVISIT: this might need its own workqueue
* plus tweaks including deadlock avoidance ...
@@ -547,11 +556,11 @@
#ifdef CONFIG_ARM
#ifdef CONFIG_MACH_T3XSCALE // T3 patch
- irqflags = SA_SAMPLE_RANDOM;
+ irqflags = IRQF_SAMPLE_RANDOM;
tps->model = TPS65010;
tps->irq = IRQ_GPIO(T3_TPS65010_GPIO);
// is it ok to do this here?
-// set_irq_type (IRQ_GPIO(T3_TPS65010_GPIO), IRQT_FALLING);
+ set_irq_type (IRQ_GPIO(T3_TPS65010_GPIO), IRQT_FALLING);
#else
if (machine_is_omap_h2()) {
tps->model = TPS65010;
Modified: linux4palm/linux/trunk/drivers/input/misc/Kconfig
===================================================================
--- linux4palm/linux/trunk/drivers/input/misc/Kconfig 2007-07-04 13:03:04 UTC (rev 1104)
+++ linux4palm/linux/trunk/drivers/input/misc/Kconfig 2007-07-05 11:03:48 UTC (rev 1105)
@@ -89,4 +89,10 @@
Say Y here if you want to support the built-in real time clock
of the HP SDC controller.
+config INPUT_PALMTT3_PWRBTN
+ tristate "Palm Tungsten|T3 Power Button"
+ depends on MACH_T3XSCALE
+ help
+ Say Y here if you want to support the power button of Palm Tungsten|T3 Power Button.
+
endif
Modified: linux4palm/linux/trunk/drivers/input/misc/Makefile
===================================================================
--- linux4palm/linux/trunk/drivers/input/misc/Makefile 2007-07-04 13:03:04 UTC (rev 1104)
+++ linux4palm/linux/trunk/drivers/input/misc/Makefile 2007-07-05 11:03:48 UTC (rev 1105)
@@ -12,3 +12,4 @@
obj-$(CONFIG_INPUT_ATLAS_BTNS) += atlas_btns.o
obj-$(CONFIG_HP_SDC_RTC) += hp_sdc_rtc.o
obj-$(CONFIG_INPUT_IXP4XX_BEEPER) += ixp4xx-beeper.o
+obj-$(CONFIG_INPUT_PALMTT3_PWRBTN) += palmtt3-pwr_btn.o
Modified: linux4palm/linux/trunk/drivers/leds/Kconfig
===================================================================
--- linux4palm/linux/trunk/drivers/leds/Kconfig 2007-07-04 13:03:04 UTC (rev 1104)
+++ linux4palm/linux/trunk/drivers/leds/Kconfig 2007-07-05 11:03:48 UTC (rev 1105)
@@ -198,7 +198,7 @@
config LEDS_TRIGGER_MMC_CARD
bool "LED MMC Card Trigger"
- depends on LEDS_TRIGGERS && MMC_PXA && ARCH_PXA
+ depends on LEDS_TRIGGERS && ARCH_PXA && (MMC_PXA || MMC_WBSD_PALMT3)
help
This allows LEDs to be controlled by MMC card activity on Intel PXA 25x/26x/27x MMC interface .
If unsure, say Y.
Modified: linux4palm/linux/trunk/drivers/leds/leds-palmtt3.c
===================================================================
--- linux4palm/linux/trunk/drivers/leds/leds-palmtt3.c 2007-07-04 13:03:04 UTC (rev 1104)
+++ linux4palm/linux/trunk/drivers/leds/leds-palmtt3.c 2007-07-05 11:03:48 UTC (rev 1105)
@@ -1,5 +1,5 @@
/*
- * Palm LifeDrive LED Driver
+ * Palm Tungsten|T3 LED Driver
*
* Author: Tomas Cech <Tom...@ma...>
*
@@ -22,41 +22,82 @@
static void palmtt3led_red_set(struct led_classdev *led_cdev, enum led_brightness value)
{
- if (value <= 85)
- tps65010_set_led(LED2, OFF);
- else
- if (value <= 170)
+ if (value)
tps65010_set_led(LED2, ON);
else
- tps65010_set_led(LED2, BLINK);
+ tps65010_set_led(LED2, OFF);
}
static void palmtt3led_green_set(struct led_classdev *led_cdev, enum led_brightness value)
{
- if (value <= 85)
- tps65010_set_led(LED1, OFF);
- else
- if (value <= 170)
+ if (value)
tps65010_set_led(LED1, ON);
else
+/* NOTE: This is set to UNDER_CHG_CTRL, not to OFF... It shows charging status - plugged/unplugged... */
+ tps65010_set_led(LED1, UNDER_CHG_CTRL);
+}
+
+static void palmtt3led_red_blink_set(struct led_classdev *led_cdev, enum led_brightness value)
+{
+ if (value)
+ tps65010_set_led(LED2, BLINK);
+ else
+ tps65010_set_led(LED2, OFF);
+}
+
+static void palmtt3led_green_blink_set(struct led_classdev *led_cdev, enum led_brightness value)
+{
+ if (value)
tps65010_set_led(LED1, BLINK);
+ else
+/* NOTE: This is set to UNDER_CHG_CTRL, not to OFF... It shows charging status - plugged/unplugged... */
+ tps65010_set_led(LED1, UNDER_CHG_CTRL);
}
+static void palmtt3_vibra_set(struct led_classdev *led_cdev, enum led_brightness value)
+{
+ if (value)
+ tps65010_set_vib(ON);
+ else
+ tps65010_set_vib(OFF);
+}
+
+
static struct led_classdev palmtt3_red_led = {
- .name = "palmtt3:red",
+ .name = "red",
.brightness_set = palmtt3led_red_set,
+ .default_trigger = "mmc-card",
};
static struct led_classdev palmtt3_green_led = {
- .name = "palmtt3:green",
+ .name = "green",
.brightness_set = palmtt3led_green_set,
};
+static struct led_classdev palmtt3_red_blink_led = {
+ .name = "red_blink",
+ .brightness_set = palmtt3led_red_blink_set,
+};
+
+static struct led_classdev palmtt3_green_blink_led = {
+ .name = "green_blink",
+ .brightness_set = palmtt3led_green_blink_set,
+};
+
+static struct led_classdev palmtt3_vibra = {
+ .name = "vibra",
+ .brightness_set = palmtt3_vibra_set,
+};
+
+
#ifdef CONFIG_PM
static int palmtt3led_suspend(struct platform_device *dev, pm_message_t state)
{
led_classdev_suspend(&palmtt3_red_led);
led_classdev_suspend(&palmtt3_green_led);
+ led_classdev_suspend(&palmtt3_red_blink_led);
+ led_classdev_suspend(&palmtt3_green_blink_led);
+ led_classdev_suspend(&palmtt3_vibra);
return 0;
}
@@ -64,6 +105,9 @@
{
led_classdev_resume(&palmtt3_red_led);
led_classdev_resume(&palmtt3_green_led);
+ led_classdev_resume(&palmtt3_red_blink_led);
+ led_classdev_resume(&palmtt3_green_blink_led);
+ led_classdev_resume(&palmtt3_vibra);
return 0;
}
#endif
@@ -80,6 +124,26 @@
if (ret < 0)
led_classdev_unregister(&palmtt3_red_led);
+ ret = led_classdev_register(&pdev->dev, &palmtt3_red_blink_led);
+ if (ret < 0) {
+ led_classdev_unregister(&palmtt3_red_led);
+ led_classdev_unregister(&palmtt3_green_led);
+ }
+
+ ret = led_classdev_register(&pdev->dev, &palmtt3_green_blink_led);
+ if (ret < 0) {
+ led_classdev_unregister(&palmtt3_red_led);
+ led_classdev_unregister(&palmtt3_green_led);
+ led_classdev_unregister(&palmtt3_red_blink_led);
+ }
+ ret = led_classdev_register(&pdev->dev, &palmtt3_vibra);
+ if (ret < 0) {
+ led_classdev_unregister(&palmtt3_red_led);
+ led_classdev_unregister(&palmtt3_green_led);
+ led_classdev_unregister(&palmtt3_red_blink_led);
+ led_classdev_unregister(&palmtt3_green_blink_led);
+ }
+
return ret;
}
@@ -87,6 +151,9 @@
{
led_classdev_unregister(&palmtt3_red_led);
led_classdev_unregister(&palmtt3_green_led);
+ led_classdev_unregister(&palmtt3_red_blink_led);
+ led_classdev_unregister(&palmtt3_green_blink_led);
+ led_classdev_unregister(&palmtt3_vibra);
return 0;
}
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|