|
From: <mar...@us...> - 2007-03-19 20:32:34
|
Revision: 924
http://svn.sourceforge.net/hackndev/?rev=924&view=rev
Author: marex_z71
Date: 2007-03-19 13:19:05 -0700 (Mon, 19 Mar 2007)
Log Message:
-----------
PalmLD: Battery driver and TESTING new powermanagement !!! USE AT YOUR 0WN RISK, IT CAN HANG YOUR DEVICE !!!
Modified Paths:
--------------
linux4palm/linux/trunk/arch/arm/mach-pxa/palmld/Kconfig
linux4palm/linux/trunk/arch/arm/mach-pxa/palmld/Makefile
linux4palm/linux/trunk/arch/arm/mach-pxa/palmld/palmld.c
linux4palm/linux/trunk/arch/arm/mach-pxa/palmld/palmld_ide.c
linux4palm/linux/trunk/arch/arm/mach-pxa/palmld/palmld_pm.c
linux4palm/linux/trunk/include/asm-arm/arch-pxa/palmld-gpio.h
Added Paths:
-----------
linux4palm/linux/trunk/arch/arm/mach-pxa/palmld/palmld_battery.c
linux4palm/linux/trunk/include/asm-arm/arch-pxa/palmld-init.h
Removed Paths:
-------------
linux4palm/linux/trunk/arch/arm/mach-pxa/palmld/palmld_ac97.c
Modified: linux4palm/linux/trunk/arch/arm/mach-pxa/palmld/Kconfig
===================================================================
--- linux4palm/linux/trunk/arch/arm/mach-pxa/palmld/Kconfig 2007-03-18 19:56:23 UTC (rev 923)
+++ linux4palm/linux/trunk/arch/arm/mach-pxa/palmld/Kconfig 2007-03-19 20:19:05 UTC (rev 924)
@@ -21,3 +21,20 @@
config PALMLD_IDE
tristate "Palm LifeDrive IDE driver"
depends on MACH_XSCALE_PALMLD
+
+config PALMLD_BATTERY
+ tristate "Palm LifeDrive Battery support"
+ select TOUCHSCREEN_WM97XX
+ depends on MACH_XSCALE_PALMLD
+ default m
+ help
+ Enable support for PalmOne LifeDrive battery to APM.
+ ATM use it only as module, otherwise it hangs.
+
+config PALMLD_PM
+ tristate "Palm LifeDrive Power Management support"
+ depends on MACH_XSCALE_PALMLD
+ default y if MACH_XSCALE_PALMLD
+ help
+ Enable support for suspend/resume the PalmOne LifeDrive PDA.
+
\ No newline at end of file
Modified: linux4palm/linux/trunk/arch/arm/mach-pxa/palmld/Makefile
===================================================================
--- linux4palm/linux/trunk/arch/arm/mach-pxa/palmld/Makefile 2007-03-18 19:56:23 UTC (rev 923)
+++ linux4palm/linux/trunk/arch/arm/mach-pxa/palmld/Makefile 2007-03-19 20:19:05 UTC (rev 924)
@@ -6,5 +6,6 @@
obj-$(CONFIG_PALMLD_PCMCIA) += palmld_pcmcia.o
obj-$(CONFIG_PALMLD_USB) += palmld_usb.o
obj-$(CONFIG_PALMLD_IDE) += palmld_ide.o
-obj-$(CONFIG_PM) += palmld_pm.o
+obj-$(CONFIG_PALMLD_PM) += palmld_pm.o
+obj-$(CONFIG_PALMLD_BATTERY) += palmld_battery.o
Modified: linux4palm/linux/trunk/arch/arm/mach-pxa/palmld/palmld.c
===================================================================
--- linux4palm/linux/trunk/arch/arm/mach-pxa/palmld/palmld.c 2007-03-18 19:56:23 UTC (rev 923)
+++ linux4palm/linux/trunk/arch/arm/mach-pxa/palmld/palmld.c 2007-03-19 20:19:05 UTC (rev 924)
@@ -234,6 +234,18 @@
};
+/********************
+ * Power Management *
+ ********************/
+
+struct platform_device palmld_pm = {
+ .name = "palmld-pm",
+ .id = -1,
+ .dev = {
+ .platform_data = NULL,
+ },
+};
+
/*********************************************************
* IDE
*********************************************************/
@@ -246,7 +258,7 @@
static struct platform_device *devices[] __initdata = {
&palmld_kbd, &palmld_ac97, &palmld_ide, &palmld_backlight,
- &palmldled_device,
+ &palmldled_device, &palmld_pm,
};
/*********************************************************
@@ -325,13 +337,6 @@
static void __init palmld_init(void)
{
-
-
-#ifdef CONFIG_PM
- extern struct pxa_ll_pm_ops palmld_ll_pm_ops;
- pxa_pm_set_ll_ops(&palmld_ll_pm_ops);
-#endif
-
set_pxa_fb_info( &palmld_lcd_screen );
pxa_set_mci_info( &palmld_mci_platform_data );
platform_add_devices( devices, ARRAY_SIZE(devices) );
Deleted: linux4palm/linux/trunk/arch/arm/mach-pxa/palmld/palmld_ac97.c
===================================================================
--- linux4palm/linux/trunk/arch/arm/mach-pxa/palmld/palmld_ac97.c 2007-03-18 19:56:23 UTC (rev 923)
+++ linux4palm/linux/trunk/arch/arm/mach-pxa/palmld/palmld_ac97.c 2007-03-19 20:19:05 UTC (rev 924)
@@ -1,544 +0,0 @@
-/*
- * linux/arch/arm/mach-pxa/palmld/palmld-ts.c
- *
- * Touchscreen/battery driver for Palm LifeDrive's WM9712 AC97 codec.
- *
- * Author: Alex Osborne <bob...@gm...>
- */
-
-#include <linux/kernel.h>
-#include <linux/module.h>
-#include <linux/init.h>
-#include <linux/interrupt.h>
-#include <linux/input.h>
-#include <linux/device.h>
-#include <linux/workqueue.h>
-#include <linux/battery.h>
-
-#include <asm/delay.h>
-#include <asm/arch/hardware.h>
-#include <asm/arch/pxa-regs.h>
-#include <asm/arch/irqs.h>
-#include <asm/arch/palmld-gpio.h>
-#include <asm/arch/palmld-ac97.h>
-
-#include <asm/mach-types.h>
-#include <asm/mach/arch.h>
-#include <asm/mach/map.h>
-
-#include <sound/driver.h>
-#include <sound/core.h>
-#include <sound/pcm.h>
-#include <sound/initval.h>
-#include <sound/ac97_codec.h>
-
-
-#define palmld_ac97_WORK_QUEUE_NAME "palmld_ac97.c"
-
-#define GET_GPIO(gpio) \
- (GPLR(gpio) & GPIO_bit(gpio))
-
-#define X_AXIS_MAX 3630
-#define X_AXIS_MIN 200
-#define Y_AXIS_MAX 3880
-#define Y_AXIS_MIN 160
-#define PRESSURE_MIN 0
-#define PRESSURE_MAX 300
-
-#define GPIO_DEBUG
-
-static spinlock_t palmld_ac97_lock = SPIN_LOCK_UNLOCKED;
-
-static struct workqueue_struct *palmld_ac97_workqueue;
-static struct work_struct palmld_ac97_irq_task;
-struct input_dev *palmld_ac97_input;
-struct device *palmld_ac97_dev;
-
-static u64 battery_update_jiffies_64 = 0;
-static int battery_voltage;
-
-DECLARE_MUTEX(battery_update_mutex);
-
-/*
- * ac97 codec
- */
-
-void wm97xx_gpio_func(ac97_t *ac97, int gpio, int func)
-{
- int GEn;
- GEn = ac97->bus->ops->read(ac97, 0x56);
- if(func)
- GEn |= gpio;
- else
- GEn &= ~gpio;
- ac97->bus->ops->write(ac97, 0x56, GEn);
-}
-
-void wm97xx_gpio_mode(ac97_t *ac97, int gpio, int config, int polarity,
- int sticky, int wakeup)
-{
- int GCn, GPn, GSn, GWn;
- GCn = ac97->bus->ops->read(ac97, 0x4c);
- GPn = ac97->bus->ops->read(ac97, 0x4e);
- GSn = ac97->bus->ops->read(ac97, 0x50);
- GWn = ac97->bus->ops->read(ac97, 0x52);
-
- if(config)
- GCn |= gpio;
- else
- GCn &= ~gpio;
-
- if(polarity)
- GPn |= gpio;
- else
- GPn &= ~gpio;
-
- if(sticky)
- GSn |= gpio;
- else
- GSn &= ~gpio;
-
- if(wakeup)
- GWn |= gpio;
- else
- GWn &= ~gpio;
-
- ac97->bus->ops->write(ac97, 0x4c, GCn);
- ac97->bus->ops->write(ac97, 0x4e, GPn);
- ac97->bus->ops->write(ac97, 0x50, GSn);
- ac97->bus->ops->write(ac97, 0x52, GWn);
-}
-
-void wm97xx_set_digitiser_power(struct device *dev, int value)
-{
- ac97_t *ac97 = dev->platform_data;
- u16 d2;
-
- d2 = ac97->bus->ops->read(ac97, AC97_WM97XX_DIGITISER2);
- d2 |= value;
- ac97->bus->ops->write(ac97, AC97_WM97XX_DIGITISER2, d2);
-}
-
-/*
- * This is a hack that waits until the ac97 bus is free. I was unable to find
- * a more appropriate way of doing this, but it seems to work. If we don't use
- * this, then the driver will eventually conflict with another driver's use
- * of AC97 (probably audio) and will lockup.
- */
-void wait_for_ac97(void)
-{
- int timeout=1000;
-
- while (CAR & CAR_CAIP) {
- set_current_state(TASK_INTERRUPTIBLE);
- schedule_timeout(HZ/100);
- set_current_state(TASK_RUNNING);
- if(!timeout--) {
- printk("palmld_ac97_pendown: CAR_CAIP timeout\n");
- return;
- }
- }
- CAR &= ~CAR_CAIP;
-
-}
-
-static int palmld_ac97_take_reading(struct device *dev, int adcsel)
-{
- ac97_t *ac97 = dev->platform_data;
- int timeout=100;
- u16 r76, r7a;
-
- r76 = ac97->bus->ops->read(ac97, 0x76);
- r76 &= ~WM97XX_ADCSEL_MASK; /* clear ADCSEL */
- r76 |= adcsel; /* set ADCSEL */
- r76 &= ~(1<<11); /* COO = 0 (single measurement) */
- r76 &= ~(1<<10); /* CTC = 0 (polling mode) */
- r76 |= (1<<15); /* start reading */
- ac97->bus->ops->write(ac97, 0x76, r76);
-
- do {
- if(!(timeout--)) {
- printk("palmld_ac97_pendown: timed out waiting for poll to complete.\n");
- return 0;
- }
- //udelay(1);
- r76 = ac97->bus->ops->read(ac97, 0x76);
- } while(!(r76 & (1<<15)));
- printk("Poll complete loops=%d\n", 100-timeout);
-
- r7a = ac97->bus->ops->read(ac97, 0x7a);
- return r7a;
-}
-
-
-
-/*
- * battery
- */
-
-void update_data(int force)
-{
- u16 reading;
-
- if(!force && (battery_update_jiffies_64 + HZ > jiffies_64)) {
- return;
- }
-
- if(down_trylock(&battery_update_mutex)) {
- return;
- }
-
-
- spin_lock(&palmld_ac97_lock);
- wait_for_ac97();
-
- #ifdef GPIO_DEBUG
- ac97_t *ac97 = palmld_ac97_dev->platform_data;
-
- // invert and univert the gpio a few times while watching
- // the PXA's gpios to see if we can spot a connection ;)
- printk("%x %x %x\n", GPLR0, GPLR1, GPLR2);
-
- reading = ac97->bus->ops->read(ac97, 0x58);
- ac97->bus->ops->write(ac97, 0x58, reading | 1);
- udelay(10);
- printk("%x %x %x %x\n", GPLR0, GPLR1, GPLR2, GPLR3);
-
- reading = ac97->bus->ops->read(ac97, 0x58);
- ac97->bus->ops->write(ac97, 0x58, reading & (~1));
- udelay(10);
- printk("%x %x %x %x\n", GPLR0, GPLR1, GPLR2, GPLR3);
-
-
- #else
- wm97xx_set_digitiser_power(palmld_ac97_dev, WM97XX_PRP_DET_DIG);
- reading = palmld_ac97_take_reading(palmld_ac97_dev, WM97XX_ADCSEL_BMON);
- wm97xx_set_digitiser_power(palmld_ac97_dev, WM97XX_PRP_DET);
-
- #endif
-
- spin_unlock(&palmld_ac97_lock);
- battery_voltage = reading & 0xfff;
- printk("Battery: %d\n", battery_voltage);
-
- battery_update_jiffies_64 = jiffies_64;
- up(&battery_update_mutex);
-}
-
-int get_min_voltage(struct battery *b)
-{
- return 0;
-}
-int get_min_charge(struct battery *b)
-{
- return 0;
-}
-int get_max_voltage(struct battery *b)
-{
- return 4750; /* mV */
-}
-int get_max_charge(struct battery *b)
-{
- return 1;
-}
-int get_voltage(struct battery *b)
-{
- update_data(0);
- return battery_voltage;
-}
-int get_charge(struct battery *b)
-{
- return 0;
-}
-int get_status(struct battery *b)
-{
- return 0; //power_status == POWER_NONE? 0: 1;
-}
-
-static struct battery palmld_battery = {
- .name = "palmld-ac97",
- .id = "battery0",
- .get_min_voltage = get_min_voltage,
- .get_min_current = NULL,
- .get_min_charge = get_min_charge,
- .get_max_voltage = get_max_voltage,
- .get_max_current = NULL,
- .get_max_charge = get_max_charge,
- .get_temp = NULL,
- .get_voltage = get_voltage,
- .get_current = NULL,
- .get_charge = get_charge,
- .get_status = get_status,
-};
-
-static void
-battery_class_release(struct class_device *dev)
-{
-}
-
-static void
-battery_class_class_release(struct class *class)
-{
-}
-
-
-/*
- * touchscreen
- */
-
-static void palmld_ac97_pendown(struct device *dev)
-{
- ac97_t *ac97 = dev->platform_data;
- int xread, yread, pressure;
- int pendown=0, valid_coords=0;
-
-
-
- /*
- * shut off the pen detect interrupt until pen goes up, otherwise the WM9712
- * will keep on interrupting us and we'll never be able to get any work
- * done.
- */
- spin_lock(&palmld_ac97_lock);
- wait_for_ac97();
- wm97xx_gpio_mode(ac97, WM97XX_GPIO_13, WM97XX_GPIO_IN,
- WM97XX_GPIO_POL_HIGH, WM97XX_GPIO_NOTSTICKY, WM97XX_GPIO_NOWAKE);
- spin_unlock(&palmld_ac97_lock);
-
-
- /* take readings until the pen goes up */
- do {
- spin_lock(&palmld_ac97_lock);
- wait_for_ac97();
-
- /* power up digitiser */
- wm97xx_set_digitiser_power(dev, WM97XX_PRP_DET_DIG);
-
- /* take readings */
- xread = palmld_ac97_take_reading(dev, WM97XX_ADCSEL_X);
- yread = palmld_ac97_take_reading(dev, WM97XX_ADCSEL_Y);
- pressure = palmld_ac97_take_reading(dev, WM97XX_ADCSEL_PRES);
-
- /* power down digitiser to conserve power */
- wm97xx_set_digitiser_power(dev, WM97XX_PRP_DET);
-
- printk("(%d,%d) = %d\n", xread&0xfff, yread&0xfff, pressure&0xfff);
-
- pendown = pressure & (1<<15);
- valid_coords = (xread & 0xfff) && (yread & 0xfff) && (pressure & 0xfff);
-
- /*
- * with light pressure reading is exteremely inaccurate so only report
- * it when there is heavy pressure
- */
- if( (!pendown) || (pressure & 0xfff) < 100 ) {
-
- /* valid coordinates? */
- if(valid_coords) {
- input_report_abs(palmld_ac97_input, ABS_X, xread & 0xfff);
- input_report_abs(palmld_ac97_input, ABS_Y, yread & 0xfff);
- input_report_abs(palmld_ac97_input, ABS_PRESSURE, pressure & 0xfff);
- }
-
- if(valid_coords || !pendown) {
- input_report_key(palmld_ac97_input, BTN_TOUCH, pendown);
- }
- input_sync(palmld_ac97_input);
- }
-
- spin_unlock(&palmld_ac97_lock);
-
- set_current_state(TASK_INTERRUPTIBLE);
- schedule_timeout(HZ/100);
- set_current_state(TASK_RUNNING);
- } while(pressure & (1<<15));
-
- /* re-enable pen detect interrupt */
- spin_lock(&palmld_ac97_lock);
- wait_for_ac97();
- wm97xx_gpio_mode(ac97, WM97XX_GPIO_13, WM97XX_GPIO_IN,
- WM97XX_GPIO_POL_HIGH, WM97XX_GPIO_STICKY, WM97XX_GPIO_WAKE);
- spin_unlock(&palmld_ac97_lock);
-
- printk("exit\n");
-}
-
-static void palmld_ac97_irq_work(void *data)
-{
- int change = 0;
- struct device *dev = data;
- ac97_t *ac97 = dev->platform_data;
- u16 levels;
-
-
- //while(GET_GPIO(27)) { /* while interrupt still there */
-
- spin_lock(&palmld_ac97_lock);
- wait_for_ac97();
- levels = ac97->bus->ops->read(ac97, 0x54);
- spin_unlock(&palmld_ac97_lock);
-
- printk("int %x\n", levels);
-
-
- if(levels & WM97XX_GPIO_13) {
- printk("Pen down detected %x\n", levels);
- levels &= ~WM97XX_GPIO_13;
- //wm9712_initiate_measurement(ac97);
- palmld_ac97_pendown(dev);
- change++;
- }
-
- spin_lock(&palmld_ac97_lock);
- wait_for_ac97();
- ac97->bus->ops->write(ac97, 0x54, levels);
- spin_unlock(&palmld_ac97_lock);
- //}
-
-
-}
-
-static irqreturn_t palmld_ac97_irq_handler(int irq, void *dev_id, struct pt_regs *regs)
-{
- /*
- * we can't use ac97 from within the interrupt handler, so schedule a task
- * to do the actual handling.
- */
- queue_work(palmld_ac97_workqueue, &palmld_ac97_irq_task);
-
- return IRQ_HANDLED;
-}
-
-static int __init palmld_ac97_probe(struct device *dev)
-{
- int err;
- ac97_t *ac97 = dev->platform_data;
- u16 d2;
-
- if(!machine_is_xscale_palmld())
- return -ENODEV;
- printk("palmld_ac97_probe\n");
-
- /* for use by bettery level monitor */
- palmld_ac97_dev = dev;
-
- /* setup work queue */
- palmld_ac97_workqueue = create_workqueue(palmld_ac97_WORK_QUEUE_NAME);
- INIT_WORK(&palmld_ac97_irq_task, palmld_ac97_irq_work, dev);
-
-
- set_irq_type(IRQ_GPIO_PALMLD_WM9712_IRQ, IRQT_RISING);
- err = request_irq(IRQ_GPIO_PALMLD_WM9712_IRQ, palmld_ac97_irq_handler,
- SA_INTERRUPT, "WM9712 IRQ", dev);
-
- if(err) {
- printk(KERN_ERR "palmld_ac97_probe: cannot request pen down IRQ\n");
- return -1;
- }
-
- spin_lock(&palmld_ac97_lock);
-
- printk("x\n");
-
- /* reset levels */
- ac97->bus->ops->write(ac97, 0x54, 0);
- printk("y\n");
-
- /* disable digitiser to save power, enable pen-down detect */
- d2 = ac97->bus->ops->read(ac97, AC97_WM97XX_DIGITISER2);
- d2 |= WM97XX_PRP_DET;
- ac97->bus->ops->write(ac97, AC97_WM97XX_DIGITISER2, d2);
-
-
- /* enable interrupts on codec's gpio 2 (connected to cpu gpio 27) */
- wm97xx_gpio_mode(ac97, WM97XX_GPIO_2, WM97XX_GPIO_IN,
- WM97XX_GPIO_POL_HIGH, WM97XX_GPIO_NOTSTICKY, WM97XX_GPIO_NOWAKE);
- wm97xx_gpio_func(ac97, WM97XX_GPIO_2, 0);
-
- /* enable pen detect interrupt */
- wm97xx_gpio_mode(ac97, WM97XX_GPIO_13, WM97XX_GPIO_IN,
- WM97XX_GPIO_POL_HIGH, WM97XX_GPIO_STICKY, WM97XX_GPIO_WAKE);
-
- /* enable ada detect interrupt */
- /*
- wm97xx_gpio_mode(ac97, WM97XX_GPIO_12, WM97XX_GPIO_IN,
- WM97XX_GPIO_POL_HIGH, WM97XX_GPIO_NOTSTICKY, WM97XX_GPIO_NOWAKE);
- */
-
- /* turn off irq gpio inverting */
- ac97->bus->ops->write(ac97, 0x58, ac97->bus->ops->read(ac97, 0x58)&~1);
-
-
- /* turn on the digitiser and pen down detector */
- d2 = ac97->bus->ops->read(ac97, AC97_WM97XX_DIGITISER2);
- d2 |= WM97XX_PRP_DETW;
- ac97->bus->ops->write(ac97, AC97_WM97XX_DIGITISER2, d2);
- printk("probe\n");
-
- spin_unlock(&palmld_ac97_lock);
-
- /* setup the input device */
- palmld_ac97_input = input_allocate_device();
- palmld_ac97_input->evbit[0] = BIT(EV_KEY) | BIT(EV_ABS);
- palmld_ac97_input->keybit[LONG(BTN_TOUCH)] = BIT(BTN_TOUCH);
- input_set_abs_params(palmld_ac97_input, ABS_X, X_AXIS_MIN, X_AXIS_MAX, 0, 0);
- input_set_abs_params(palmld_ac97_input, ABS_Y, Y_AXIS_MIN, Y_AXIS_MAX, 0, 0);
- input_set_abs_params(palmld_ac97_input, ABS_PRESSURE, PRESSURE_MIN, PRESSURE_MAX, 0, 0);
-
- palmld_ac97_input->name = "Palm LifeDrive touchscreen";
- palmld_ac97_input->dev = dev;
- palmld_ac97_input->id.bustype = BUS_HOST;
- input_register_device(palmld_ac97_input);
-
- /* register battery */
- if(battery_class_register(&palmld_battery)) {
- printk(KERN_ERR "palmld_ac97_probe: Could not register battery "
- "class\n");
- } else {
- palmld_battery.class_dev.class->release = battery_class_release;
- palmld_battery.class_dev.class->class_release = battery_class_class_release;
- }
-
- return 0;
-}
-
-static int __exit palmld_ac97_remove (struct device *dev)
-{
- ac97_t *ac97 = dev->platform_data;
- printk("x: %x\n", ac97->bus->ops->read(ac97, AC97_WM97XX_DIGITISER2));
- input_unregister_device(palmld_ac97_input);
- free_irq(IRQ_GPIO_PALMLD_WM9712_IRQ, dev);
- return 0;
-}
-
-static struct device_driver palmld_ac97_driver = {
- .name = "WM9711,WM9712",
- .bus = &ac97_bus_type,
- .probe = palmld_ac97_probe,
- .remove = palmld_ac97_remove,
-#ifdef CONFIG_PM
- .suspend = NULL,
- .resume = NULL,
-#endif
-};
-
-static int __init palmld_ac97_init(void)
-{
- if(!machine_is_xscale_palmld())
- return -ENODEV;
-
-
- return driver_register(&palmld_ac97_driver);
-}
-
-static void __exit palmld_ac97_exit(void)
-{
- driver_unregister(&palmld_ac97_driver);
-}
-
-module_init(palmld_ac97_init);
-module_exit(palmld_ac97_exit);
-
-MODULE_AUTHOR ("Alex Osborne <bob...@gm...>");
-MODULE_DESCRIPTION ("WM9712 AC97 codec support for Palm LifeDrive");
-MODULE_LICENSE ("GPL");
Added: linux4palm/linux/trunk/arch/arm/mach-pxa/palmld/palmld_battery.c
===================================================================
--- linux4palm/linux/trunk/arch/arm/mach-pxa/palmld/palmld_battery.c (rev 0)
+++ linux4palm/linux/trunk/arch/arm/mach-pxa/palmld/palmld_battery.c 2007-03-19 20:19:05 UTC (rev 924)
@@ -0,0 +1,236 @@
+/************************************************************************
+ * linux/arch/arm/mach-pxa/palmld/palmld_battery.c *
+ * *
+ * Touchscreen/battery driver for WM9712 AC97 codec *
+ * Authros: Jan Herman <2h...@se...> *
+ * Sergey Lapin <sl...@ha...> *
+ * Changes for PalmLD: Marek Vasut <mar...@gm...> *
+ * *
+ ************************************************************************/
+
+
+#include <linux/kernel.h>
+#include <linux/module.h>
+#include <linux/moduleparam.h>
+#include <linux/init.h>
+#include <linux/interrupt.h>
+#include <linux/input.h>
+#include <linux/device.h>
+#include <linux/workqueue.h>
+#include <linux/battery.h>
+
+#include <asm/apm.h>
+#include <asm/delay.h>
+#include <asm/mach-types.h>
+#include <asm/mach/arch.h>
+#include <asm/mach/map.h>
+#include <asm/arch/hardware.h>
+#include <asm/arch/pxa-regs.h>
+#include <asm/arch/irqs.h>
+
+#include <sound/driver.h>
+#include <sound/core.h>
+#include <sound/pcm.h>
+#include <sound/initval.h>
+#include <linux/wm97xx.h>
+#include <asm/arch/palmld-gpio.h>
+#include <asm/arch/palmld-init.h>
+
+
+struct palmld_battery_dev
+{
+ struct wm97xx * wm;
+ int battery_registered;
+ int current_voltage;
+ int previous_voltage;
+ u32 last_battery_update;
+};
+
+struct palmld_battery_dev bat;
+
+#if defined(CONFIG_APM) || defined(CONFIG_APM_MODULE)
+/* original APM hook */
+static void (*apm_get_power_status_orig)(struct apm_power_info *info);
+#endif
+
+int palmld_battery_min_voltage(struct battery *b)
+{
+ return PALMLD_BAT_MIN_VOLTAGE;
+}
+
+
+int palmld_battery_max_voltage(struct battery *b)
+{
+ return PALMLD_BAT_MAX_VOLTAGE; /* mV */
+}
+
+/*
+ This formula is based on battery life of my battery 1100mAh. Original battery in Zire72 is Li-On 920mAh
+ V_batt = ADCSEL_BMON * 1,889 + 767,8 [mV]
+*/
+
+int palmld_battery_get_voltage(struct battery *b)
+{
+ if (bat.battery_registered){
+ bat.previous_voltage = bat.current_voltage;
+ bat.current_voltage = wm97xx_read_aux_adc(bat.wm, WM97XX_AUX_ID3);
+ bat.last_battery_update = jiffies;
+ return bat.current_voltage * 1889/1000 + 7678/10;
+ }
+ else{
+ printk("palmld_battery: cannot get voltage -> battery driver unregistered\n");
+ return 0;
+ }
+}
+
+
+int palmld_battery_get_status(struct battery *b)
+{
+ int ac_connected = GET_PALMLD_GPIO(POWER_DETECT);
+ int usb_connected = !GET_PALMLD_GPIO(USB_DETECT);
+
+ if (bat.current_voltage <= 0)
+ return BATTERY_STATUS_UNKNOWN;
+
+ if (ac_connected || usb_connected){
+ if ( ( bat.current_voltage > bat.previous_voltage ) || (bat.current_voltage <= PALMLD_BAT_MAX_VOLTAGE) )
+ return BATTERY_STATUS_CHARGING;
+ return BATTERY_STATUS_NOT_CHARGING;
+ }
+ else
+ return BATTERY_STATUS_DISCHARGING;
+}
+
+struct battery palmld_battery = {
+ .name = "palmld_battery",
+ .id = "battery0",
+ .get_min_voltage = palmld_battery_min_voltage,
+ .get_max_voltage = palmld_battery_max_voltage,
+ .get_voltage = palmld_battery_get_voltage,
+ .get_status = palmld_battery_get_status,
+};
+
+static int palmld_wm97xx_probe(struct device *dev)
+{
+ struct wm97xx *wm = dev->driver_data;
+ bat.wm = wm;
+ return 0;
+}
+
+static int palmld_wm97xx_remove(struct device *dev)
+{
+ return 0;
+}
+
+static void
+palmld_wm97xx_shutdown(struct device *dev)
+{
+#if defined(CONFIG_APM) || defined(CONFIG_APM_MODULE)
+ apm_get_power_status = apm_get_power_status_orig;
+#endif
+}
+
+static int
+palmld_wm97xx_suspend(struct device *dev, pm_message_t state)
+{
+ return 0;
+}
+
+static int
+palmld_wm97xx_resume(struct device *dev)
+{
+ return 0;
+}
+
+
+static struct device_driver palmld_wm97xx_driver = {
+ .name = "wm97xx-touchscreen",
+ .bus = &wm97xx_bus_type,
+ .owner = THIS_MODULE,
+ .probe = palmld_wm97xx_probe,
+ .remove = palmld_wm97xx_remove,
+ .suspend = palmld_wm97xx_suspend,
+ .resume = palmld_wm97xx_resume,
+ .shutdown = palmld_wm97xx_shutdown
+};
+
+#if defined(CONFIG_APM) || defined(CONFIG_APM_MODULE)
+
+/* APM status query callback implementation */
+static void palmld_apm_get_power_status(struct apm_power_info *info)
+{
+ int min, max, curr, percent;
+
+ curr = palmld_battery_get_voltage(&palmld_battery);
+ min = palmld_battery_min_voltage(&palmld_battery);
+ max = palmld_battery_max_voltage(&palmld_battery);
+
+ curr = curr - min;
+ if (curr < 0) curr = 0;
+ max = max - min;
+
+ percent = curr*100/max;
+
+ info->battery_life = percent;
+
+ info->ac_line_status = (GET_PALMLD_GPIO(POWER_DETECT)
+ ? 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;
+ }
+
+ info->time = percent * PALMLD_MAX_LIFE_MINS/100;
+ info->units = APM_UNITS_MINS;
+}
+#endif
+static int __init palmld_wm97xx_init(void)
+{
+#ifndef MODULE
+ int ret;
+#endif
+
+ /* register battery to APM layer */
+ bat.battery_registered = 0;
+
+ if(battery_class_register(&palmld_battery)) {
+ printk(KERN_ERR "palmld_ac97_probe: could not register battery class\n");
+ }
+ else {
+ bat.battery_registered = 1;
+ printk("Battery registered\n");
+ }
+#if defined(CONFIG_APM) || defined(CONFIG_APM_MODULE)
+ apm_get_power_status_orig = apm_get_power_status;
+ apm_get_power_status = palmld_apm_get_power_status;
+#endif
+#ifndef MODULE
+ /* If we're in kernel, we could accidentally be run before wm97xx
+ and thus have panic */
+ if((ret = bus_register(&wm97xx_bus_type)) < 0)
+ return ret;
+#endif
+ return driver_register(&palmld_wm97xx_driver);
+}
+
+static void __exit palmld_wm97xx_exit(void)
+{
+/* TODO - recover APM callback to original state */
+ battery_class_unregister(&palmld_battery);
+ driver_unregister(&palmld_wm97xx_driver);
+}
+
+module_init(palmld_wm97xx_init);
+module_exit(palmld_wm97xx_exit);
+
+/* Module information */
+MODULE_AUTHOR("Sergey Lapin <sl...@ha...> Jan Herman <2h...@se...>");
+MODULE_DESCRIPTION("wm97xx battery driver");
+MODULE_LICENSE("GPL");
Modified: linux4palm/linux/trunk/arch/arm/mach-pxa/palmld/palmld_ide.c
===================================================================
--- linux4palm/linux/trunk/arch/arm/mach-pxa/palmld/palmld_ide.c 2007-03-18 19:56:23 UTC (rev 923)
+++ linux4palm/linux/trunk/arch/arm/mach-pxa/palmld/palmld_ide.c 2007-03-19 20:19:05 UTC (rev 924)
@@ -67,6 +67,8 @@
.bus = &platform_bus_type,
.probe = palmld_ide_probe,
.remove = palmld_ide_remove,
+ .suspend= NULL,
+ .resume = NULL,
};
static int __init palmld_ide_init(void)
Modified: linux4palm/linux/trunk/arch/arm/mach-pxa/palmld/palmld_pm.c
===================================================================
--- linux4palm/linux/trunk/arch/arm/mach-pxa/palmld/palmld_pm.c 2007-03-18 19:56:23 UTC (rev 923)
+++ linux4palm/linux/trunk/arch/arm/mach-pxa/palmld/palmld_pm.c 2007-03-19 20:19:05 UTC (rev 924)
@@ -1,87 +1,185 @@
+/************************************************************************
+ * PalmOne LifeDrive suspend/resume support *
+ * *
+ * Author: Jan Herman <2h...@se...> *
+ * Sergey Lapin <sla...@gm...> *
+ * Modification for Palm LifeDrive: 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/kernel.h>
#include <linux/device.h>
#include <linux/pm.h>
+#include <linux/fb.h>
+#include <linux/platform_device.h>
+#include <asm/mach-types.h>
+#include <asm/hardware.h>
+#include <asm/arch/pm.h>
#include <asm/arch/pxa-pm_ll.h>
#include <asm/arch/hardware.h>
#include <asm/arch/pxa-regs.h>
-static u32 *addr_a0200000;
-static u32 *addr_a0200004;
-static u32 *addr_a0200008;
-static u32 save_a0200000;
-static u32 save_a0200004;
-static u32 save_a0200008;
+#include <asm/arch/palmld-gpio.h>
+#include <asm/arch/pxa27x_keyboard.h>
-static void palmld_pxa_ll_pm_suspend(unsigned long resume_addr)
+#define KPASMKP(col) (col/2==0 ? KPASMKP0 : col/2==1 ? KPASMKP1 : col/2==2 ? KPASMKP2 : KPASMKP3)
+#define KPASMKPx_MKC(row, col) (1 << (row + 16*(col%2)))
+
+struct pm_save_data
{
+ int brightness;
+ u32 rcnr;
+};
- /* wake up on */
- PWER |= PWER_GPIO12;
- //PFER |= PWER_RTC;
- PRER |= PWER_GPIO12;
-
- /* USB, in theory this can even wake us from deep sleep */
- PWER |= PWER_GPIO3;
- PFER |= PWER_GPIO3;
- PRER |= PWER_GPIO3;
-
- /* disable GPIO reset, palm bootloader will hang us */
- //PCFR |= PCFR_GPR_EN | PCFR_OPDE;
- PCFR &= PCFR_GPR_EN;
-
- /* as set by POS */
- /*PGSR0 = 0x00020000;
- PGSR1 = 0x00000000;
- PGSR2 = 0x01004000;
- PGSR3 = 0x00421380;
-
- PGSR2 |= (1<<30);
- PGSR3 |= (1<<7) | (1<<8) | (1<<9);
+static struct pm_save_data pm_save_data;
- PSLR = 0xff400000;
- */
- //PKWR |= GPIO_bit(0) | GPIO_bit(12) | GPIO_bit(3) | (1<<17);
- //PKSR = 0xffffffff; // clear
+#ifdef CONFIG_PM
+static int palmld_suspend(struct device *dev, pm_message_t state)
+{
+ /* Wake-Up on RTC event, etc. */
+ PWER |= PWER_RTC | PWER_WEP1;
+ /* Wake-Up on powerbutton */
+ PWER |= PWER_GPIO12;
+ PRER |= PWER_GPIO12;
- /*
- addr_a0200000 = phys_to_virt(0xa0200000);
- addr_a0200004 = phys_to_virt(0xa0200004);
- addr_a0200008 = phys_to_virt(0xa0200008);
+ /* USB, in theory this can even wake us from deep sleep */
+// PWER |= PWER_GPIO3;
+// PFER |= PWER_GPIO3;
+// PRER |= PWER_GPIO3;
- save_a0200000 = *addr_a0200000;
- save_a0200004 = *addr_a0200004;
- save_a0200008 = *addr_a0200008;
- */
- /*
- c: e3a00121 mov r0, #1073741832 ; 0x40000008
- 10: e280060f add r0, r0, #15728640 ; 0xf00000
- 14: e590f000 ldr pc, [r0]
- */
-
- /*
- *addr_a0200000 = 0xe3a00121; // mov r0, #0x40000008
- *addr_a0200004 = 0xe280060f; // add r0, r0, #0xf00000
- *addr_a0200008 = 0xe590f000; // ldr pc, [r0]
- */
+ /* Wakeup by keyboard :) */
+// PKWR = 0xe0001;
- PSPR = 0; /* should cause Palm bootloader to allow us to reboot */
+ /* Enabled Deep-Sleep mode */
+ PCFR |= PCFR_DS;
+
+ /* Low power mode */
+ PCFR |= PCFR_OPDE;
+
+
+ /* 3.6.8.1 */
+ while(!(OSCC & OSCC_OOK))
+ {}
+
+ /* disable GPIO reset, palm bootloader will hang us */
+ //PCFR |= PCFR_GPR_EN | PCFR_OPDE;
+ PCFR &= PCFR_GPR_EN;
+
+ return 0;
+}
+
+static int palmld_resume(struct device *dev)
+{
+ /* Disabled Deep-Sleep mode ?? */
+ PCFR &= PCFR_DS;
+
+ /* Re-enable GPIO reset */
+ PCFR |= PCFR_GPR_EN; /* !! DO NOT REMOVE !! THIS IS NECCESARY FOR ENABLE PALM RESET !! */
+
+
+ /* Here are all of special to resume PalmOne LifeDrive */
+
+ /* Turn on LCD power */
+// SET_PALMZ72_GPIO(LCD_POWER,1);
+ /* Turn on USB power */
+// SET_PALMZ72_GPIO(USB_POWER,1);
+
+ return 0;
+}
+#else
+#define palmld_suspend NULL
+#define palmld_resume NULL
+#endif
+
+static void palmld_pxa_ll_pm_suspend(unsigned long resume_addr)
+{
+ /* For future */
return;
}
static void palmld_pxa_ll_pm_resume(void)
{
- /*
- *addr_a0200000 = save_a0200000;
- *addr_a0200004 = save_a0200004;
- *addr_a0200008 = save_a0200008;
- */
-
- /* re-enable GPIO reset */
- PCFR |= PCFR_GPR_EN;
+ /* For future */
}
struct pxa_ll_pm_ops palmld_ll_pm_ops = {
- .suspend = palmld_pxa_ll_...
[truncated message content] |
|
From: <mar...@us...> - 2007-03-20 16:12:28
|
Revision: 928
http://svn.sourceforge.net/hackndev/?rev=928&view=rev
Author: marex_z71
Date: 2007-03-20 09:05:19 -0700 (Tue, 20 Mar 2007)
Log Message:
-----------
PalmLD: various cleanups and testing microdrive suspend/resume
Modified Paths:
--------------
linux4palm/linux/trunk/arch/arm/mach-pxa/palmld/palmld_ide.c
linux4palm/linux/trunk/arch/arm/mach-pxa/palmld/palmld_pm.c
linux4palm/linux/trunk/include/asm-arm/arch-pxa/palmld-gpio.h
Modified: linux4palm/linux/trunk/arch/arm/mach-pxa/palmld/palmld_ide.c
===================================================================
--- linux4palm/linux/trunk/arch/arm/mach-pxa/palmld/palmld_ide.c 2007-03-19 23:47:26 UTC (rev 927)
+++ linux4palm/linux/trunk/arch/arm/mach-pxa/palmld/palmld_ide.c 2007-03-20 16:05:19 UTC (rev 928)
@@ -57,13 +57,33 @@
if (hd) {
ide_unregister(*hd);
}
-
+ kfree(hd);
/* conserve battery where we can */
SET_PALMLD_GPIO(IDE_PWEN, 0);
return 0;
}
+#ifdef CONFIG_PM
+static int palmld_ide_suspend(struct platform_device *dev, pm_message_t state)
+{
+ printk("palmld_ide_suspend: going zzz\n");
+ palmld_ide_remove(dev);
+ return 0;
+}
+
+static int palmld_ide_resume(struct platform_device *dev)
+{
+ printk("palmld_ide_resume: resuming\n");
+ palmld_ide_probe(dev);
+ return 0;
+}
+#else
+#define palmld_suspend NULL
+#define palmld_resume NULL
+#endif
+
+
static struct platform_driver palmld_ide_driver = {
.driver = {
.name = "palmld-ide",
@@ -71,8 +91,8 @@
},
.probe = palmld_ide_probe,
.remove = palmld_ide_remove,
- .suspend= NULL,
- .resume = NULL,
+ .suspend= palmld_ide_suspend,
+ .resume = palmld_ide_resume,
};
static int __init palmld_ide_init(void)
Modified: linux4palm/linux/trunk/arch/arm/mach-pxa/palmld/palmld_pm.c
===================================================================
--- linux4palm/linux/trunk/arch/arm/mach-pxa/palmld/palmld_pm.c 2007-03-19 23:47:26 UTC (rev 927)
+++ linux4palm/linux/trunk/arch/arm/mach-pxa/palmld/palmld_pm.c 2007-03-20 16:05:19 UTC (rev 928)
@@ -31,14 +31,6 @@
#define KPASMKP(col) (col/2==0 ? KPASMKP0 : col/2==1 ? KPASMKP1 : col/2==2 ? KPASMKP2 : KPASMKP3)
#define KPASMKPx_MKC(row, col) (1 << (row + 16*(col%2)))
-struct pm_save_data
-{
- int brightness;
- u32 rcnr;
-};
-
-static struct pm_save_data pm_save_data;
-
#ifdef CONFIG_PM
static int palmld_suspend(struct device *dev, pm_message_t state)
{
@@ -67,8 +59,14 @@
while(!(OSCC & OSCC_OOK))
{}
+ /* Here are all of special for suspend PalmOne LifeDrive */
+
+ /* Turn off LCD power */
+ SET_PALMLD_GPIO(LCD_POWER,0);
+ /* Turn screen off */
+ SET_PALMLD_GPIO(SCREEN,0);
+
/* disable GPIO reset, palm bootloader will hang us */
- //PCFR |= PCFR_GPR_EN | PCFR_OPDE;
PCFR &= PCFR_GPR_EN;
return 0;
@@ -86,9 +84,9 @@
/* Here are all of special to resume PalmOne LifeDrive */
/* Turn on LCD power */
-// SET_PALMZ72_GPIO(LCD_POWER,1);
- /* Turn on USB power */
-// SET_PALMZ72_GPIO(USB_POWER,1);
+ SET_PALMLD_GPIO(LCD_POWER,1);
+ /* Turn screen on */
+ SET_PALMLD_GPIO(SCREEN,1);
return 0;
}
@@ -115,39 +113,6 @@
static int (*pxa_pm_enter_orig)(suspend_state_t state);
-static int lifedrive_enter_suspend(suspend_state_t state)
-{
- /* Here we should implement wakeup conditions
- If we have none, just return 1 to continue
- sleeping */
- int data = 0;
-
- /* Do not suspend on active keypress */
- pxa_pm_enter_orig(state);
-
- printk(KERN_NOTICE "Returning from sleep due to GPIOs 100-102 or 13\n");
- printk(KERN_NOTICE "RCNR = %u pm_save_data.rcnr = %u\n", RCNR, pm_save_data.rcnr);
- printk(KERN_NOTICE "Keys pressed: %d\n", data);
- pm_save_data.rcnr = 0;
- return 0;
-}
-static int lifedrive_pxa_pm_enter(suspend_state_t state)
-{
- pm_save_data.rcnr = 0;
- pxa_pm_enter_orig(state);
- while (lifedrive_enter_suspend(state))
- {}
- return 0;
-}
-
-
-static struct pm_ops lifedrive_pm_ops = {
- .pm_disk_mode = PM_DISK_FIRMWARE,
- .prepare = pxa_pm_prepare,
- .enter = lifedrive_pxa_pm_enter,
- .finish = pxa_pm_finish,
-};
-
extern struct pm_ops pxa_pm_ops;
static int palmld_pm_probe(struct device *dev)
Modified: linux4palm/linux/trunk/include/asm-arm/arch-pxa/palmld-gpio.h
===================================================================
--- linux4palm/linux/trunk/include/asm-arm/arch-pxa/palmld-gpio.h 2007-03-19 23:47:26 UTC (rev 927)
+++ linux4palm/linux/trunk/include/asm-arm/arch-pxa/palmld-gpio.h 2007-03-20 16:05:19 UTC (rev 928)
@@ -29,6 +29,7 @@
#define GPIO_NR_PALMLD_EARPHONE_DETECT 13
#define GPIO_NR_PALMLD_SD_DETECT_N 14 /* SD card inserted; RE FE; Input */
#define GPIO_NR_PALMLD_LOCK_SWITCH 15 /* keypad lock */
+#define GPIO_NR_PALMLD_SCREEN 19
#define GPIO_NR_PALMLD_WM9712_IRQ 27
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <mar...@us...> - 2007-03-30 21:01:53
|
Revision: 948
http://svn.sourceforge.net/hackndev/?rev=948&view=rev
Author: marex_z71
Date: 2007-03-30 14:01:50 -0700 (Fri, 30 Mar 2007)
Log Message:
-----------
PalmLD: Restart of works on USB2 driver, reg dumping code
Modified Paths:
--------------
linux4palm/linux/trunk/arch/arm/mach-pxa/palmld/palmld_usb.c
Added Paths:
-----------
linux4palm/linux/trunk/include/asm-arm/arch-pxa/palmld-usb2.h
Modified: linux4palm/linux/trunk/arch/arm/mach-pxa/palmld/palmld_usb.c
===================================================================
--- linux4palm/linux/trunk/arch/arm/mach-pxa/palmld/palmld_usb.c 2007-03-29 18:54:56 UTC (rev 947)
+++ linux4palm/linux/trunk/arch/arm/mach-pxa/palmld/palmld_usb.c 2007-03-30 21:01:50 UTC (rev 948)
@@ -6,95 +6,128 @@
#include <linux/device.h>
#include <linux/platform_device.h>
#include <linux/delay.h>
-#include <linux/soc-device.h>
#include <asm/mach-types.h>
#include <asm/hardware.h>
-#include <../drivers/pcmcia/soc_common.h>
#include <asm/arch/pxa-regs.h>
#include <asm/irq.h>
#include <asm/arch/palmld-gpio.h>
+#include <asm/arch/palmld-usb2.h>
-/*
-#define GET_GPIO(gpio) \
- (GPLR(gpio) & GPIO_bit(gpio))
-#define SET_GPIO(gpio, setp) \
-do { \
-if (setp) \
- GPSR(gpio) = GPIO_bit(gpio); \
-else \
- GPCR(gpio) = GPIO_bit(gpio); \
-} while (0)
+u16 palmld_usb2_cmd_read(int addr)
+{
+ u16 data = PALMLD_USB2_CMD_ADDR | PALMLD_USB2_CMD_READ
+ | (addr & PALMLD_USB2_ADDR_MASK);
-static int socket_ready;
+ PALMLD_USB2_ADDR_FIFO6 = data;
+
+ // ... wait for interrupt ...
+ udelay(100);
+
+ return PALMLD_USB2_ADDR_FIFO6;
+}
-static struct platform_device palmld_pcmcia_device = {
- .name = "pxa2xx-pcmcia",
- .id = 0,
- .dev = {
- .platform_data = &palmld_pcmcia_ops,
- .release = palmld_pcmcia_release
- }
-};
+u16 palmld_usb2_dumpregs(void)
+{
+ printk ("- CY7C68001 REGISTER DUMP -\n");
-*/
+ printk (">> ADDRESS DUMP\n");
+ printk ("FIFO2 %04x\n", PALMLD_USB2_ADDR_FIFO2);
+ printk ("FIFO4 %04x\n", PALMLD_USB2_ADDR_FIFO4);
+ printk ("FIFO6 %04x\n", PALMLD_USB2_ADDR_FIFO6);
+ printk ("FIFO8 %04x\n", PALMLD_USB2_ADDR_FIFO8);
+ printk ("CMD %04x\n", PALMLD_USB2_ADDR_CMD);
+ printk ("RESERVED1 %04x\n", PALMLD_USB2_ADDR_RESERVED1);
+ printk ("RESERVED2 %04x\n", PALMLD_USB2_ADDR_RESERVED2);
+ printk ("RESERVED3 %04x\n", PALMLD_USB2_ADDR_RESERVED3);
-#define SX2_BASE PALMLD_USB_VIRT
+ printk ("\n\n>> REGISTER DUMP\n");
+ printk ("*** GENERAL CONFIG\n");
+ printk ("IFCONFIG %04x\n", palmld_usb2_cmd_read(PALMLD_USB2_REG_IFCONFIG));
+ printk ("FLAGSAB %04x\n", palmld_usb2_cmd_read(PALMLD_USB2_REG_FLAGSAB));
+ printk ("FLAGSCD %04x\n", palmld_usb2_cmd_read(PALMLD_USB2_REG_FLAGSCD));
+ printk ("POLAR %04x\n", palmld_usb2_cmd_read(PALMLD_USB2_REG_POLAR));
+ printk ("REVID %04x\n", palmld_usb2_cmd_read(PALMLD_USB2_REG_REVID));
-#define SX2_IF(x) (*((volatile u16 *)x))
+ printk ("\n*** ENDPOINT CONFIG\n");
+ printk ("EP2CFG %04x\n", palmld_usb2_cmd_read(PALMLD_USB2_REG_EP2CFG));
+ printk ("EP4CFG %04x\n", palmld_usb2_cmd_read(PALMLD_USB2_REG_EP4CFG));
+ printk ("EP6CFG %04x\n", palmld_usb2_cmd_read(PALMLD_USB2_REG_EP6CFG));
+ printk ("EP8CFG %04x\n", palmld_usb2_cmd_read(PALMLD_USB2_REG_EP8CFG));
+ printk ("EP2PKTLENH %04x\n", palmld_usb2_cmd_read(PALMLD_USB2_REG_EP2PKTLENH));
+ printk ("EP2PKTLENL %04x\n", palmld_usb2_cmd_read(PALMLD_USB2_REG_EP2PKTLENL));
+ printk ("EP4PKTLENH %04x\n", palmld_usb2_cmd_read(PALMLD_USB2_REG_EP4PKTLENH));
+ printk ("EP4PKTLENL %04x\n", palmld_usb2_cmd_read(PALMLD_USB2_REG_EP4PKTLENL));
+ printk ("EP6PKTLENH %04x\n", palmld_usb2_cmd_read(PALMLD_USB2_REG_EP6PKTLENH));
+ printk ("EP6PKTLENL %04x\n", palmld_usb2_cmd_read(PALMLD_USB2_REG_EP6PKTLENL));
+ printk ("EP8PKTLENH %04x\n", palmld_usb2_cmd_read(PALMLD_USB2_REG_EP8PKTLENH));
+ printk ("EP8PKTLENL %04x\n", palmld_usb2_cmd_read(PALMLD_USB2_REG_EP8PKTLENL));
+ printk ("EP2PFH %04x\n", palmld_usb2_cmd_read(PALMLD_USB2_REG_EP2PFH));
+ printk ("EP2PFL %04x\n", palmld_usb2_cmd_read(PALMLD_USB2_REG_EP2PFL));
+ printk ("EP4PFH %04x\n", palmld_usb2_cmd_read(PALMLD_USB2_REG_EP4PFH));
+ printk ("EP4PFL %04x\n", palmld_usb2_cmd_read(PALMLD_USB2_REG_EP4PFL));
+ printk ("EP6PFH %04x\n", palmld_usb2_cmd_read(PALMLD_USB2_REG_EP6PFH));
+ printk ("EP6PFL %04x\n", palmld_usb2_cmd_read(PALMLD_USB2_REG_EP6PFL));
+ printk ("EP8PFH %04x\n", palmld_usb2_cmd_read(PALMLD_USB2_REG_EP8PFH));
+ printk ("EP8PFL %04x\n", palmld_usb2_cmd_read(PALMLD_USB2_REG_EP8PFL));
+ printk ("EP2ISOINPKTS %04x\n", palmld_usb2_cmd_read(PALMLD_USB2_REG_EP2ISOINPKTS));
+ printk ("EP4ISOINPKTS %04x\n", palmld_usb2_cmd_read(PALMLD_USB2_REG_EP4ISOINPKTS));
+ printk ("EP6ISOINPKTS %04x\n", palmld_usb2_cmd_read(PALMLD_USB2_REG_EP6ISOINPKTS));
+ printk ("EP8ISOINPKTS %04x\n", palmld_usb2_cmd_read(PALMLD_USB2_REG_EP8ISOINPKTS));
+
+ printk ("\n*** INPKTEND/FLUSH\n");
+ printk ("INPKTEND/FLUSH %04x\n", palmld_usb2_cmd_read(PALMLD_USB2_REG_INPKTEND));
-#define SX2_FIFO2 SX2_IF(SX2_BASE + 0x0)
-#define SX2_FIFO4 SX2_IF(SX2_BASE + 0x2)
-#define SX2_FIFO6 SX2_IF(SX2_BASE + 0x4)
-#define SX2_FIFO8 SX2_IF(SX2_BASE + 0x6)
-#define SX2_CMD SX2_IF(SX2_BASE + 0x8)
+ printk ("\n*** USB CONFIG\n");
+ printk ("USBFRAMEH %04x\n", palmld_usb2_cmd_read(PALMLD_USB2_REG_USBFRAMEH));
+ printk ("USBFRAMEL %04x\n", palmld_usb2_cmd_read(PALMLD_USB2_REG_USBFRAMEL));
+ printk ("MICROFRAME %04x\n", palmld_usb2_cmd_read(PALMLD_USB2_REG_MICROFRAME));
+ printk ("FNADDR %04x\n", palmld_usb2_cmd_read(PALMLD_USB2_REG_FNADDR));
+
+ printk ("\n*** INTERRUPTS\n");
+ printk ("INTENABLE %04x\n", palmld_usb2_cmd_read(PALMLD_USB2_REG_INTENABLE));
+
+ printk ("\n*** DESCRIPTOR\n");
+ printk ("DESC %04x\n", palmld_usb2_cmd_read(PALMLD_USB2_REG_DESC));
+
+ printk ("\n*** ENDPOINT 0\n");
+ printk ("EP0BUF %04x\n", palmld_usb2_cmd_read(PALMLD_USB2_REG_EP0BUF));
+ printk ("SETUP %04x\n", palmld_usb2_cmd_read(PALMLD_USB2_REG_SETUP));
+ printk ("EP0BC %04x\n", palmld_usb2_cmd_read(PALMLD_USB2_REG_EP0BC));
+
+ printk ("\n*** UNINDEXED REG CTRL\n");
+ printk ("UIRC0 %04x\n", palmld_usb2_cmd_read(PALMLD_USB2_REG_UIRC0));
+ printk ("UIRC1 %04x\n", palmld_usb2_cmd_read(PALMLD_USB2_REG_UIRC1));
+ printk ("UIRC2 %04x\n", palmld_usb2_cmd_read(PALMLD_USB2_REG_UIRC2));
-#define SX2_CMD_READ (0x40)
-#define SX2_CMD_ADDR (0x80)
+ printk ("\n*** UNINDEXED REGS IN XDATA\n");
+ printk ("FIFOPINPOLAR %04x\n", palmld_usb2_cmd_read(PALMLD_USB2_REG_FIFOPINPOLAR));
+ printk ("TOGCTL %04x\n", palmld_usb2_cmd_read(PALMLD_USB2_REG_TOGCTL));
-#define SX2_ADDR_MASK (0x3f)
+ printk ("\n- END OF DUMP -\n");
-
-#define SX2_REG_REVID (0x05)
-
-u16 sx2_cmd_read(int addr)
-{
- u16 data = SX2_CMD_ADDR | SX2_CMD_READ | (addr & SX2_ADDR_MASK);
- SX2_FIFO6 = data;
-
- // ... wait for interrupt ...
- udelay(100);
-
- return SX2_FIFO6;
+ return 0;
}
-static int __init sx2_init(void)
+static int __init palmld_usb2_init(void)
{
printk ("sx2_init()\n");
if(!machine_is_xscale_palmld()) return -ENODEV;
- printk ("fifo2 %x\n", SX2_FIFO2);
- printk ("fifo4 %x\n", SX2_FIFO4);
- printk ("fifo6 %x\n", SX2_FIFO6);
- printk ("fifo8 %x\n", SX2_FIFO8);
- printk ("cmd %x\n", SX2_CMD);
- printk ("res1 %x\n", SX2_IF(SX2_BASE + 10));
- printk ("res2 %x\n", SX2_IF(SX2_BASE + 12));
+ palmld_usb2_dumpregs();
+
+ return -ENODEV;
- printk ("Chip revision: %x\n", sx2_cmd_read(SX2_REG_REVID));
-
- return -ENODEV; //platform_device_register (&palmld_pcmcia_device);
}
-static void __exit sx2_exit(void)
+static void __exit palmld_usb2_exit(void)
{
- //platform_device_unregister (&palmld_pcmcia_device);
}
-module_init(sx2_init);
-module_exit(sx2_exit);
+module_init(palmld_usb2_init);
+module_exit(palmld_usb2_exit);
-MODULE_AUTHOR ("Alex Osborne <bob...@gm...>");
-MODULE_DESCRIPTION ("EZ-USB SX2 support for Palm LifeDrive");
+MODULE_AUTHOR ("Marek Vasut <mar...@gm...>");
+MODULE_DESCRIPTION ("USB2 driver for Palm LifeDrive");
MODULE_LICENSE ("GPL");
Added: linux4palm/linux/trunk/include/asm-arm/arch-pxa/palmld-usb2.h
===================================================================
--- linux4palm/linux/trunk/include/asm-arm/arch-pxa/palmld-usb2.h (rev 0)
+++ linux4palm/linux/trunk/include/asm-arm/arch-pxa/palmld-usb2.h 2007-03-30 21:01:50 UTC (rev 948)
@@ -0,0 +1,125 @@
+/*
+ * palmld-usb2.h
+ *
+ * Cypress EZUSB SX2 - CY7C68001 External master register definitions
+ * SX2 is an USB2 controller in PalmOne LifeDrive Handheld Computer
+ *
+ * Author: 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.
+ *
+ *
+ *
+ */
+#ifndef _INCLUDE_PALMLD_USB2_H_
+
+#define _INCLUDE_PALMLD_USB2_H_
+
+#include <asm/arch/palmld-gpio.h>
+
+/***************************************************
+ * SX2 REGISTERS *
+ ***************************************************/
+
+/* General configuration */
+#define PALMLD_USB2_REG_IFCONFIG 0x01
+#define PALMLD_USB2_REG_FLAGSAB 0x02
+#define PALMLD_USB2_REG_FLAGSCD 0x03
+#define PALMLD_USB2_REG_POLAR 0x04
+#define PALMLD_USB2_REG_REVID 0x05
+
+/* Endpoint configuration */
+#define PALMLD_USB2_REG_EP2CFG 0x06
+#define PALMLD_USB2_REG_EP4CFG 0x07
+#define PALMLD_USB2_REG_EP6CFG 0x08
+#define PALMLD_USB2_REG_EP8CFG 0x09
+#define PALMLD_USB2_REG_EP2PKTLENH 0x0A
+#define PALMLD_USB2_REG_EP2PKTLENL 0x0B
+#define PALMLD_USB2_REG_EP4PKTLENH 0x0C
+#define PALMLD_USB2_REG_EP4PKTLENL 0x0D
+#define PALMLD_USB2_REG_EP6PKTLENH 0x0E
+#define PALMLD_USB2_REG_EP6PKTLENL 0x0F
+#define PALMLD_USB2_REG_EP8PKTLENH 0x10
+#define PALMLD_USB2_REG_EP8PKTLENL 0x11
+#define PALMLD_USB2_REG_EP2PFH 0x12
+#define PALMLD_USB2_REG_EP2PFL 0x13
+#define PALMLD_USB2_REG_EP4PFH 0x14
+#define PALMLD_USB2_REG_EP4PFL 0x15
+#define PALMLD_USB2_REG_EP6PFH 0x16
+#define PALMLD_USB2_REG_EP6PFL 0x17
+#define PALMLD_USB2_REG_EP8PFH 0x18
+#define PALMLD_USB2_REG_EP8PFL 0x19
+#define PALMLD_USB2_REG_EP2ISOINPKTS 0x1A
+#define PALMLD_USB2_REG_EP4ISOINPKTS 0x1B
+#define PALMLD_USB2_REG_EP6ISOINPKTS 0x1C
+#define PALMLD_USB2_REG_EP8ISOINPKTS 0x1D
+
+/* Flags */
+#define PALMLD_USB2_REG_EP24FLAGS 0x1E
+#define PALMLD_USB2_REG_EP68FLAGS 0x1F
+
+/* INPKTEND/FLUSH */
+#define PALMLD_USB2_REG_INPKTEND 0x20
+#define PALMLD_USB2_REG_FLUSH 0x20
+
+/* USB Configuration */
+#define PALMLD_USB2_REG_USBFRAMEH 0x2A
+#define PALMLD_USB2_REG_USBFRAMEL 0x2B
+#define PALMLD_USB2_REG_MICROFRAME 0x2C
+#define PALMLD_USB2_REG_FNADDR 0x2D
+
+/* Interrupts */
+#define PALMLD_USB2_REG_INTENABLE 0x2E
+
+/* Descriptor */
+#define PALMLD_USB2_REG_DESC 0x30
+
+/* Endpoint 0 */
+#define PALMLD_USB2_REG_EP0BUF 0x31
+#define PALMLD_USB2_REG_SETUP 0x32
+#define PALMLD_USB2_REG_EP0BC 0x33
+
+/* Un-indexed Register control */
+#define PALMLD_USB2_REG_UIRC0 0x3A
+#define PALMLD_USB2_REG_UIRC1 0x3B
+#define PALMLD_USB2_REG_UIRC2 0x3C
+
+/* Un-indexed Registers in XDATA space */
+#define PALMLD_USB2_REG_FIFOPINPOLAR 0xE609
+#define PALMLD_USB2_REG_TOGCTL 0xE683
+
+/***************************************************
+ * SX2 ADDRESS *
+ ***************************************************/
+
+#define PALMLD_USB2_ADDR_BASE PALMLD_USB_VIRT
+
+#define PALMLD_USB2_ADDR_IF(x) (*((volatile u16 *)x))
+
+#define PALMLD_USB2_ADDR_FIFO2 PALMLD_USB2_ADDR_IF (PALMLD_USB2_ADDR_BASE + 0x0)
+#define PALMLD_USB2_ADDR_FIFO4 PALMLD_USB2_ADDR_IF (PALMLD_USB2_ADDR_BASE + 0x2)
+#define PALMLD_USB2_ADDR_FIFO6 PALMLD_USB2_ADDR_IF (PALMLD_USB2_ADDR_BASE + 0x4)
+#define PALMLD_USB2_ADDR_FIFO8 PALMLD_USB2_ADDR_IF (PALMLD_USB2_ADDR_BASE + 0x6)
+#define PALMLD_USB2_ADDR_CMD PALMLD_USB2_ADDR_IF (PALMLD_USB2_ADDR_BASE + 0x8)
+#define PALMLD_USB2_ADDR_RESERVED1 PALMLD_USB2_ADDR_IF (PALMLD_USB2_ADDR_BASE + 0x10)
+#define PALMLD_USB2_ADDR_RESERVED2 PALMLD_USB2_ADDR_IF (PALMLD_USB2_ADDR_BASE + 0x12)
+#define PALMLD_USB2_ADDR_RESERVED3 PALMLD_USB2_ADDR_IF (PALMLD_USB2_ADDR_BASE + 0x14)
+
+/***************************************************
+ * SX2 COMMANDS *
+ ***************************************************/
+
+#define PALMLD_USB2_CMD_WRITE (0x00)
+#define PALMLD_USB2_CMD_READ (0x40)
+#define PALMLD_USB2_CMD_ADDR (0x80)
+
+/***************************************************
+ * SX2 MISC *
+ ***************************************************/
+
+#define PALMLD_USB2_ADDR_MASK (0x3f)
+
+#endif
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <mar...@us...> - 2007-04-06 20:21:03
|
Revision: 951
http://svn.sourceforge.net/hackndev/?rev=951&view=rev
Author: marex_z71
Date: 2007-04-06 13:20:59 -0700 (Fri, 06 Apr 2007)
Log Message:
-----------
PalmLD: Basic stone for USB2 driver ... this can enumerate with builtin descriptor
Modified Paths:
--------------
linux4palm/linux/trunk/arch/arm/mach-pxa/palmld/palmld_usb.c
linux4palm/linux/trunk/include/asm-arm/arch-pxa/palmld-gpio.h
linux4palm/linux/trunk/include/asm-arm/arch-pxa/palmld-init.h
linux4palm/linux/trunk/include/asm-arm/arch-pxa/palmld-usb2.h
Modified: linux4palm/linux/trunk/arch/arm/mach-pxa/palmld/palmld_usb.c
===================================================================
--- linux4palm/linux/trunk/arch/arm/mach-pxa/palmld/palmld_usb.c 2007-04-04 22:59:08 UTC (rev 950)
+++ linux4palm/linux/trunk/arch/arm/mach-pxa/palmld/palmld_usb.c 2007-04-06 20:20:59 UTC (rev 951)
@@ -14,98 +14,112 @@
#include <asm/arch/palmld-gpio.h>
#include <asm/arch/palmld-usb2.h>
-u16 palmld_usb2_cmd_read(int addr)
+u16 palmld_usb2_cmd_read(int reg)
{
- u16 data = PALMLD_USB2_CMD_ADDR | PALMLD_USB2_CMD_READ
- | (addr & PALMLD_USB2_ADDR_MASK);
+ u8 data = PALMLD_USB2_CMD_ADDR | PALMLD_USB2_CMD_READ
+ | (reg & PALMLD_USB2_ADDR_MASK);
+ PALMLD_USB2_ADDR_CMD = data;
+ while((GET_PALMLD_GPIO(USB_READY)?1:0)==0) {
+ };
+/* printk("REG 0x%02x F2 0x%02x F4 0x%02x\n",reg,PALMLD_USB2_ADDR_FIFO2,PALMLD_USB2_ADDR_FIFO4);
+ printk("REG 0x%02x F2 0x%02x F4 0x%02x\n",reg,PALMLD_USB2_ADDR_FIFO6,PALMLD_USB2_ADDR_FIFO8);
+ printk("REG 0x%02x CD 0x%02x\n",reg,PALMLD_USB2_ADDR_CMD);
+*/ return 0;
+}
- PALMLD_USB2_ADDR_FIFO6 = data;
-
- // ... wait for interrupt ...
- udelay(100);
-
- return PALMLD_USB2_ADDR_FIFO6;
+int palmld_usb2_cmd_set_reg(int reg)
+{
+ /* initiate write to addr */
+ printk("SETTING 0x%02x\n",(reg | PALMLD_USB2_CMD_ADDR));
+ PALMLD_USB2_ADDR_CMD=(reg | PALMLD_USB2_CMD_ADDR);
+ /* wait for READY line */
+ while((GET_PALMLD_GPIO(USB_READY)?1:0)==0) {
+ };
+ return 0;
}
-u16 palmld_usb2_dumpregs(void)
+int palmld_usb2_cmd_write(u8 data)
{
- printk ("- CY7C68001 REGISTER DUMP -\n");
+ /* prepare data */
+ u8 data1 = ((data & 0xf0)>>3); /* Upper nibble */
+ u8 data2 = (data & 0x0f); /* Lower nibble */
- printk (">> ADDRESS DUMP\n");
- printk ("FIFO2 %04x\n", PALMLD_USB2_ADDR_FIFO2);
- printk ("FIFO4 %04x\n", PALMLD_USB2_ADDR_FIFO4);
- printk ("FIFO6 %04x\n", PALMLD_USB2_ADDR_FIFO6);
- printk ("FIFO8 %04x\n", PALMLD_USB2_ADDR_FIFO8);
- printk ("CMD %04x\n", PALMLD_USB2_ADDR_CMD);
- printk ("RESERVED1 %04x\n", PALMLD_USB2_ADDR_RESERVED1);
- printk ("RESERVED2 %04x\n", PALMLD_USB2_ADDR_RESERVED2);
- printk ("RESERVED3 %04x\n", PALMLD_USB2_ADDR_RESERVED3);
+ /* initiate write to reg */
+ printk("UPPER NIBBLE %02x\n",(data1 | PALMLD_USB2_CMD_WRITE));
+ PALMLD_USB2_ADDR_CMD=(data1 | PALMLD_USB2_CMD_WRITE);
+ /* wait for READY line */
+ while((GET_PALMLD_GPIO(USB_READY)?1:0)==0) {
+ };
- printk ("\n\n>> REGISTER DUMP\n");
- printk ("*** GENERAL CONFIG\n");
- printk ("IFCONFIG %04x\n", palmld_usb2_cmd_read(PALMLD_USB2_REG_IFCONFIG));
- printk ("FLAGSAB %04x\n", palmld_usb2_cmd_read(PALMLD_USB2_REG_FLAGSAB));
- printk ("FLAGSCD %04x\n", palmld_usb2_cmd_read(PALMLD_USB2_REG_FLAGSCD));
- printk ("POLAR %04x\n", palmld_usb2_cmd_read(PALMLD_USB2_REG_POLAR));
- printk ("REVID %04x\n", palmld_usb2_cmd_read(PALMLD_USB2_REG_REVID));
+ printk("LOWER NIBBLE %02x\n",(data2 | PALMLD_USB2_CMD_WRITE));
+ PALMLD_USB2_ADDR_CMD=(data2 | PALMLD_USB2_CMD_WRITE);
+ /* wait for READY line */
+ while((GET_PALMLD_GPIO(USB_READY)?1:0)==0) {
+ };
- printk ("\n*** ENDPOINT CONFIG\n");
- printk ("EP2CFG %04x\n", palmld_usb2_cmd_read(PALMLD_USB2_REG_EP2CFG));
- printk ("EP4CFG %04x\n", palmld_usb2_cmd_read(PALMLD_USB2_REG_EP4CFG));
- printk ("EP6CFG %04x\n", palmld_usb2_cmd_read(PALMLD_USB2_REG_EP6CFG));
- printk ("EP8CFG %04x\n", palmld_usb2_cmd_read(PALMLD_USB2_REG_EP8CFG));
- printk ("EP2PKTLENH %04x\n", palmld_usb2_cmd_read(PALMLD_USB2_REG_EP2PKTLENH));
- printk ("EP2PKTLENL %04x\n", palmld_usb2_cmd_read(PALMLD_USB2_REG_EP2PKTLENL));
- printk ("EP4PKTLENH %04x\n", palmld_usb2_cmd_read(PALMLD_USB2_REG_EP4PKTLENH));
- printk ("EP4PKTLENL %04x\n", palmld_usb2_cmd_read(PALMLD_USB2_REG_EP4PKTLENL));
- printk ("EP6PKTLENH %04x\n", palmld_usb2_cmd_read(PALMLD_USB2_REG_EP6PKTLENH));
- printk ("EP6PKTLENL %04x\n", palmld_usb2_cmd_read(PALMLD_USB2_REG_EP6PKTLENL));
- printk ("EP8PKTLENH %04x\n", palmld_usb2_cmd_read(PALMLD_USB2_REG_EP8PKTLENH));
- printk ("EP8PKTLENL %04x\n", palmld_usb2_cmd_read(PALMLD_USB2_REG_EP8PKTLENL));
- printk ("EP2PFH %04x\n", palmld_usb2_cmd_read(PALMLD_USB2_REG_EP2PFH));
- printk ("EP2PFL %04x\n", palmld_usb2_cmd_read(PALMLD_USB2_REG_EP2PFL));
- printk ("EP4PFH %04x\n", palmld_usb2_cmd_read(PALMLD_USB2_REG_EP4PFH));
- printk ("EP4PFL %04x\n", palmld_usb2_cmd_read(PALMLD_USB2_REG_EP4PFL));
- printk ("EP6PFH %04x\n", palmld_usb2_cmd_read(PALMLD_USB2_REG_EP6PFH));
- printk ("EP6PFL %04x\n", palmld_usb2_cmd_read(PALMLD_USB2_REG_EP6PFL));
- printk ("EP8PFH %04x\n", palmld_usb2_cmd_read(PALMLD_USB2_REG_EP8PFH));
- printk ("EP8PFL %04x\n", palmld_usb2_cmd_read(PALMLD_USB2_REG_EP8PFL));
- printk ("EP2ISOINPKTS %04x\n", palmld_usb2_cmd_read(PALMLD_USB2_REG_EP2ISOINPKTS));
- printk ("EP4ISOINPKTS %04x\n", palmld_usb2_cmd_read(PALMLD_USB2_REG_EP4ISOINPKTS));
- printk ("EP6ISOINPKTS %04x\n", palmld_usb2_cmd_read(PALMLD_USB2_REG_EP6ISOINPKTS));
- printk ("EP8ISOINPKTS %04x\n", palmld_usb2_cmd_read(PALMLD_USB2_REG_EP8ISOINPKTS));
-
- printk ("\n*** INPKTEND/FLUSH\n");
- printk ("INPKTEND/FLUSH %04x\n", palmld_usb2_cmd_read(PALMLD_USB2_REG_INPKTEND));
+ return 0;
+}
- printk ("\n*** USB CONFIG\n");
- printk ("USBFRAMEH %04x\n", palmld_usb2_cmd_read(PALMLD_USB2_REG_USBFRAMEH));
- printk ("USBFRAMEL %04x\n", palmld_usb2_cmd_read(PALMLD_USB2_REG_USBFRAMEL));
- printk ("MICROFRAME %04x\n", palmld_usb2_cmd_read(PALMLD_USB2_REG_MICROFRAME));
- printk ("FNADDR %04x\n", palmld_usb2_cmd_read(PALMLD_USB2_REG_FNADDR));
-
- printk ("\n*** INTERRUPTS\n");
- printk ("INTENABLE %04x\n", palmld_usb2_cmd_read(PALMLD_USB2_REG_INTENABLE));
-
- printk ("\n*** DESCRIPTOR\n");
- printk ("DESC %04x\n", palmld_usb2_cmd_read(PALMLD_USB2_REG_DESC));
-
- printk ("\n*** ENDPOINT 0\n");
- printk ("EP0BUF %04x\n", palmld_usb2_cmd_read(PALMLD_USB2_REG_EP0BUF));
- printk ("SETUP %04x\n", palmld_usb2_cmd_read(PALMLD_USB2_REG_SETUP));
- printk ("EP0BC %04x\n", palmld_usb2_cmd_read(PALMLD_USB2_REG_EP0BC));
-
- printk ("\n*** UNINDEXED REG CTRL\n");
- printk ("UIRC0 %04x\n", palmld_usb2_cmd_read(PALMLD_USB2_REG_UIRC0));
- printk ("UIRC1 %04x\n", palmld_usb2_cmd_read(PALMLD_USB2_REG_UIRC1));
- printk ("UIRC2 %04x\n", palmld_usb2_cmd_read(PALMLD_USB2_REG_UIRC2));
+u8 palmld_usb2_test_cmd(void) {
+ /* RESET THE CHIP */
+ SET_GPIO(118,0);
+ udelay(100);
+ SET_GPIO(118,1);
+ udelay(500);
- printk ("\n*** UNINDEXED REGS IN XDATA\n");
- printk ("FIFOPINPOLAR %04x\n", palmld_usb2_cmd_read(PALMLD_USB2_REG_FIFOPINPOLAR));
- printk ("TOGCTL %04x\n", palmld_usb2_cmd_read(PALMLD_USB2_REG_TOGCTL));
+ /* ENUMERATE WITH BUILTIN DESCRIPTOR */
+ /* select register 0x30 - descriptor RAM*/
+ palmld_usb2_cmd_set_reg(0x30);
+ printk("SET ADDR to 0x30,GPIO86 %i\n",(GET_GPIO(86)?1:0));
+ /* write descriptor length */
+ palmld_usb2_cmd_write(0x06);
+ palmld_usb2_cmd_write(0x00);
+ printk("WRITE DESR size to 0x30,GPIO86 %i\n",(GET_GPIO(86)?1:0));
- printk ("\n- END OF DUMP -\n");
+ /* write descriptor as described in SX2 docs */
+ palmld_usb2_cmd_write(0x04);
+ palmld_usb2_cmd_write(0x0B);
+ palmld_usb2_cmd_write(0x04);
+ palmld_usb2_cmd_write(0x00);
+
+ palmld_usb2_cmd_write(0x02);
+ palmld_usb2_cmd_write(0x00);
+
+ palmld_usb2_cmd_write(0x00);
+ palmld_usb2_cmd_write(0x01);
+
+ palmld_usb2_cmd_write(0x01);
+ palmld_usb2_cmd_write(0x00);
+
+ palmld_usb2_cmd_write(0x00);
+ palmld_usb2_cmd_write(0x00);
+
+ /* A LOT OF DEBUGING CRAP */
+/* printk("GPIO106 %i\n",(GET_GPIO(106)?1:0));
+ printk("GPIO106 %i\n",(GET_GPIO(106)?1:0));
+ printk("GPIO106 %i\n",(GET_GPIO(106)?1:0));
+ printk("GPIO106 %i\n",(GET_GPIO(106)?1:0));
+ printk("GPIO106 %i\n",(GET_GPIO(106)?1:0));
+ printk("GPIO106 %i\n",(GET_GPIO(106)?1:0));
+ printk("GPIO106 %i\n",(GET_GPIO(106)?1:0));
+ printk("GPIO106 %i\n",(GET_GPIO(106)?1:0));
+ printk("GPIO106 %i\n",(GET_GPIO(106)?1:0));
+ printk("GPIO106 %i\n",(GET_GPIO(106)?1:0));
+ printk("GPIO106 %i\n",(GET_GPIO(106)?1:0));
+*/
+
+ for (;;) {
+ /* printk("%02x%02x|%02x%02x|%02x%02x|%02x%02x|%i|%i|%i|%i|%i|%i\n",
+ PALMLD_USB2_ADDR_FIFO2,PALMLD_USB2_ADDR_FIFO4,
+ PALMLD_USB2_ADDR_FIFO6,PALMLD_USB2_ADDR_FIFO8,
+ PALMLD_USB2_ADDR_CMD,PALMLD_USB2_ADDR_RESERVED1,
+ PALMLD_USB2_ADDR_RESERVED2,PALMLD_USB2_ADDR_RESERVED3,
+ (GET_GPIO(18)?1:0),(GET_GPIO(20)?1:0),
+ (GET_GPIO(53)?1:0),(GET_GPIO(86)?1:0),
+ (GET_GPIO(90)?1:0),(GET_GPIO(106)?1:0));
+ */}
+
return 0;
}
@@ -115,10 +129,9 @@
if(!machine_is_xscale_palmld()) return -ENODEV;
- palmld_usb2_dumpregs();
+ palmld_usb2_test_cmd();
return -ENODEV;
-
}
static void __exit palmld_usb2_exit(void)
Modified: linux4palm/linux/trunk/include/asm-arm/arch-pxa/palmld-gpio.h
===================================================================
--- linux4palm/linux/trunk/include/asm-arm/arch-pxa/palmld-gpio.h 2007-04-04 22:59:08 UTC (rev 950)
+++ linux4palm/linux/trunk/include/asm-arm/arch-pxa/palmld-gpio.h 2007-04-06 20:20:59 UTC (rev 951)
@@ -21,21 +21,20 @@
/* Palm LifeDrive GPIOs */
-#define GPIO_NR_PALMLD_GPIO_RESET 1
-#define GPIO_NR_PALMLD_USB_DETECT 3
-#define GPIO_NR_PALMLD_POWER_DETECT 4
-#define GPIO_NR_PALMLD_HOTSYNC_BUTTON_N 10
-#define GPIO_NR_PALMLD_POWER_SWITCH 11
-#define GPIO_NR_PALMLD_EARPHONE_DETECT 13
-#define GPIO_NR_PALMLD_SD_DETECT_N 14 /* SD card inserted; RE FE; Input */
-#define GPIO_NR_PALMLD_LOCK_SWITCH 15 /* keypad lock */
-#define GPIO_NR_PALMLD_SCREEN 19
+#define GPIO_NR_PALMLD_GPIO_RESET 1
+#define GPIO_NR_PALMLD_POWER_DETECT 4
+#define GPIO_NR_PALMLD_HOTSYNC_BUTTON_N 10
+#define GPIO_NR_PALMLD_POWER_SWITCH 11
+#define GPIO_NR_PALMLD_EARPHONE_DETECT 13
+#define GPIO_NR_PALMLD_SD_DETECT_N 14 /* SD card inserted; RE FE; Input */
+#define GPIO_NR_PALMLD_LOCK_SWITCH 15 /* keypad lock */
+#define GPIO_NR_PALMLD_SCREEN 19
-#define GPIO_NR_PALMLD_WM9712_IRQ 27
+#define GPIO_NR_PALMLD_WM9712_IRQ 27
-#define GPIO_NR_PALMLD_IR_DISABLE 40 /* IRDA */
-#define GPIO_NR_PALMLD_ICP_RXD 46
-#define GPIO_NR_PALMLD_ICP_TXD 47
+#define GPIO_NR_PALMLD_IR_DISABLE 40 /* IRDA */
+#define GPIO_NR_PALMLD_ICP_RXD 46
+#define GPIO_NR_PALMLD_ICP_TXD 47
#define GPIO_NR_PALMLD_GREEN_LED 52
@@ -74,6 +73,13 @@
#define IRQ_GPIO_PALMLD_WM9712_IRQ IRQ_GPIO(GPIO_NR_PALMLD_WM9712_IRQ)
#define IRQ_GPIO_PALMLD_IDE_IRQ IRQ_GPIO(GPIO_NR_PALMLD_IDE_IRQ)
+/* USB */
+#define GPIO_NR_PALMLD_USB_DETECT 3
+#define GPIO_NR_PALMLD_USB_READY 86
+#define GPIO_NR_PALMLD_USB_RESET 88
+#define GPIO_NR_PALMLD_USB_INT 106
+#define GPIO_NR_PALMLD_USB_POWER 118
+
/* Utility macros */
#define GET_PALMLD_GPIO(gpio) \
(GPLR(GPIO_NR_PALMLD_ ## gpio) & GPIO_bit(GPIO_NR_PALMLD_ ## gpio))
@@ -97,5 +103,13 @@
#define GET_GPIO(gpio) (GPLR(gpio) & GPIO_bit(gpio))
+#define SET_GPIO(gpio, setp) \
+do { \
+if (setp) \
+ GPSR(gpio) = GPIO_bit(gpio); \
+else \
+ GPCR(gpio) = GPIO_bit(gpio); \
+} while (0)
+
#endif /* _PALMLD_GPIO_H_ */
Modified: linux4palm/linux/trunk/include/asm-arm/arch-pxa/palmld-init.h
===================================================================
--- linux4palm/linux/trunk/include/asm-arm/arch-pxa/palmld-init.h 2007-04-04 22:59:08 UTC (rev 950)
+++ linux4palm/linux/trunk/include/asm-arm/arch-pxa/palmld-init.h 2007-04-06 20:20:59 UTC (rev 951)
@@ -22,7 +22,7 @@
// BATTERY
#define PALMLD_BAT_MAX_VOLTAGE 4000 // 4.00V current voltage at max charge as from PalmOS
-#define PALMLD_BAT_MIN_VOLTAGE 3600 // 3.60V critical voltage as from Zlauncher
+#define PALMLD_BAT_MIN_VOLTAGE 3550 // 3.55V critical voltage
#define PALMLD_BAT_MAX_CURRENT 0 // unknokn
#define PALMLD_BAT_MIN_CURRENT 0 // unknown
#define PALMLD_BAT_MAX_CHARGE 1 // unknown
Modified: linux4palm/linux/trunk/include/asm-arm/arch-pxa/palmld-usb2.h
===================================================================
--- linux4palm/linux/trunk/include/asm-arm/arch-pxa/palmld-usb2.h 2007-04-04 22:59:08 UTC (rev 950)
+++ linux4palm/linux/trunk/include/asm-arm/arch-pxa/palmld-usb2.h 2007-04-06 20:20:59 UTC (rev 951)
@@ -97,16 +97,18 @@
#define PALMLD_USB2_ADDR_BASE PALMLD_USB_VIRT
-#define PALMLD_USB2_ADDR_IF(x) (*((volatile u16 *)x))
+#define PALMLD_USB2_ADDR_IF(x) (*((volatile u8 *)x))
+/* We have 16bit bus of the chip connected to 32 bit bus of CPU */
+
#define PALMLD_USB2_ADDR_FIFO2 PALMLD_USB2_ADDR_IF (PALMLD_USB2_ADDR_BASE + 0x0)
-#define PALMLD_USB2_ADDR_FIFO4 PALMLD_USB2_ADDR_IF (PALMLD_USB2_ADDR_BASE + 0x2)
+#define PALMLD_USB2_ADDR_FIFO4 PALMLD_USB2_ADDR_IF (PALMLD_USB2_ADDR_BASE + 0x1)
#define PALMLD_USB2_ADDR_FIFO6 PALMLD_USB2_ADDR_IF (PALMLD_USB2_ADDR_BASE + 0x4)
-#define PALMLD_USB2_ADDR_FIFO8 PALMLD_USB2_ADDR_IF (PALMLD_USB2_ADDR_BASE + 0x6)
+#define PALMLD_USB2_ADDR_FIFO8 PALMLD_USB2_ADDR_IF (PALMLD_USB2_ADDR_BASE + 0x5)
#define PALMLD_USB2_ADDR_CMD PALMLD_USB2_ADDR_IF (PALMLD_USB2_ADDR_BASE + 0x8)
-#define PALMLD_USB2_ADDR_RESERVED1 PALMLD_USB2_ADDR_IF (PALMLD_USB2_ADDR_BASE + 0x10)
-#define PALMLD_USB2_ADDR_RESERVED2 PALMLD_USB2_ADDR_IF (PALMLD_USB2_ADDR_BASE + 0x12)
-#define PALMLD_USB2_ADDR_RESERVED3 PALMLD_USB2_ADDR_IF (PALMLD_USB2_ADDR_BASE + 0x14)
+#define PALMLD_USB2_ADDR_RESERVED1 PALMLD_USB2_ADDR_IF (PALMLD_USB2_ADDR_BASE + 0x9)
+#define PALMLD_USB2_ADDR_RESERVED2 PALMLD_USB2_ADDR_IF (PALMLD_USB2_ADDR_BASE + 0xc)
+#define PALMLD_USB2_ADDR_RESERVED3 PALMLD_USB2_ADDR_IF (PALMLD_USB2_ADDR_BASE + 0xd)
/***************************************************
* SX2 COMMANDS *
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <mar...@us...> - 2007-04-09 10:54:42
|
Revision: 953
http://svn.sourceforge.net/hackndev/?rev=953&view=rev
Author: marex_z71
Date: 2007-04-09 03:54:38 -0700 (Mon, 09 Apr 2007)
Log Message:
-----------
PalmLD: Switch SX2 to Linux USB Gadget driver API
Modified Paths:
--------------
linux4palm/linux/trunk/arch/arm/mach-pxa/palmld/palmld.c
linux4palm/linux/trunk/drivers/usb/gadget/Kconfig
linux4palm/linux/trunk/drivers/usb/gadget/Makefile
Added Paths:
-----------
linux4palm/linux/trunk/drivers/usb/gadget/sx2_udc.c
linux4palm/linux/trunk/drivers/usb/gadget/sx2_udc.h
linux4palm/linux/trunk/include/asm-arm/arch-pxa/sx2.h
Removed Paths:
-------------
linux4palm/linux/trunk/arch/arm/mach-pxa/palmld/palmld_usb.c
linux4palm/linux/trunk/include/asm-arm/arch-pxa/palmld-usb2.h
Modified: linux4palm/linux/trunk/arch/arm/mach-pxa/palmld/palmld.c
===================================================================
--- linux4palm/linux/trunk/arch/arm/mach-pxa/palmld/palmld.c 2007-04-06 22:44:13 UTC (rev 952)
+++ linux4palm/linux/trunk/arch/arm/mach-pxa/palmld/palmld.c 2007-04-09 10:54:38 UTC (rev 953)
@@ -30,6 +30,7 @@
#include <asm/arch/pxa27x_keyboard.h>
#include <asm/arch/pxapwm-bl.h>
#include <asm/arch/pxa-pm_ll.h>
+#include <asm/arch/sx2.h>
#include <sound/driver.h>
#include <sound/core.h>
@@ -163,6 +164,30 @@
.id = -1,
};
+/*
+ * Cypress EZUSB SX2 USB2.0 Controller
+ */
+static struct sx2_udc_mach_info palmldusb2_platform_data = {
+ .virt_base = PALMLD_USB_VIRT,
+
+ .ready_pin = GPIO_NR_PALMLD_USB_READY,
+ .int_pin = 0, // gotta detect it
+ .reset_pin = GPIO_NR_PALMLD_USB_RESET,
+ .power_pin = GPIO_NR_PALMLD_USB_POWER,
+
+ .sloe_pin = 0, // gotta detect it
+ .slrd_pin = 0, // gotta detect it
+ .slwr_pin = 0, // gotta detect it
+};
+
+static struct platform_device palmldusb2_device = {
+ .name = "sx2-udc",
+ .id = -1,
+ .dev = {
+ .platform_data = &palmldusb2_platform_data,
+ },
+};
+
/**
* Backlight
*/
@@ -258,7 +283,7 @@
static struct platform_device *devices[] __initdata = {
&palmld_kbd, &palmld_ac97, &palmld_ide, &palmld_backlight,
- &palmldled_device, &palmld_pm,
+ &palmldled_device, &palmldusb2_device, &palmld_pm,
};
/*********************************************************
Deleted: linux4palm/linux/trunk/arch/arm/mach-pxa/palmld/palmld_usb.c
===================================================================
--- linux4palm/linux/trunk/arch/arm/mach-pxa/palmld/palmld_usb.c 2007-04-06 22:44:13 UTC (rev 952)
+++ linux4palm/linux/trunk/arch/arm/mach-pxa/palmld/palmld_usb.c 2007-04-09 10:54:38 UTC (rev 953)
@@ -1,310 +0,0 @@
-#include <linux/module.h>
-#include <linux/kernel.h>
-#include <linux/errno.h>
-#include <linux/interrupt.h>
-#include <linux/init.h>
-#include <linux/device.h>
-#include <linux/platform_device.h>
-#include <linux/delay.h>
-
-#include <asm/mach-types.h>
-#include <asm/hardware.h>
-#include <asm/arch/pxa-regs.h>
-#include <asm/irq.h>
-#include <asm/arch/palmld-gpio.h>
-#include <asm/arch/palmld-usb2.h>
-
-u16 palmld_usb2_cmd_read(int reg)
-{
- u8 data = PALMLD_USB2_CMD_ADDR | PALMLD_USB2_CMD_READ
- | (reg & PALMLD_USB2_ADDR_MASK);
- PALMLD_USB2_ADDR_CMD = data;
- while((GET_PALMLD_GPIO(USB_READY)?1:0)==0) {
- };
-/* printk("REG 0x%02x F2 0x%02x F4 0x%02x\n",reg,PALMLD_USB2_ADDR_FIFO2,PALMLD_USB2_ADDR_FIFO4);
- printk("REG 0x%02x F2 0x%02x F4 0x%02x\n",reg,PALMLD_USB2_ADDR_FIFO6,PALMLD_USB2_ADDR_FIFO8);
- printk("REG 0x%02x CD 0x%02x\n",reg,PALMLD_USB2_ADDR_CMD);
-*/ return 0;
-}
-
-int palmld_usb2_cmd_set_reg(int reg)
-{
- /* initiate write to addr */
- printk("SETTING 0x%02x\n",(reg | PALMLD_USB2_CMD_ADDR));
- PALMLD_USB2_ADDR_CMD=(reg | PALMLD_USB2_CMD_ADDR);
- /* wait for READY line */
- while((GET_PALMLD_GPIO(USB_READY)?1:0)==0) {
- };
- return 0;
-}
-
-int palmld_usb2_cmd_write(u8 data)
-{
- /* prepare data */
- u8 data1 = ((data & 0xf0)>>4); /* Upper nibble */
- u8 data2 = (data & 0x0f); /* Lower nibble */
-
- /* initiate write to reg */
- printk("UPPER NIBBLE %02x\n",(data1 | PALMLD_USB2_CMD_WRITE));
- PALMLD_USB2_ADDR_CMD=(data1 | PALMLD_USB2_CMD_WRITE);
- /* wait for READY line */
- while((GET_PALMLD_GPIO(USB_READY)?1:0)==0) {
- };
-
- printk("LOWER NIBBLE %02x\n",(data2 | PALMLD_USB2_CMD_WRITE));
- PALMLD_USB2_ADDR_CMD=(data2 | PALMLD_USB2_CMD_WRITE);
- /* wait for READY line */
- while((GET_PALMLD_GPIO(USB_READY)?1:0)==0) {
- };
-
- return 0;
-}
-
-u8 palmld_usb2_test_cmd(void) {
- /* RESET THE CHIP */
- SET_GPIO(118,0);
- udelay(100);
- SET_GPIO(118,1);
- udelay(500);
-
- /* ENUMERATE WITH BUILTIN DESCRIPTOR */
- /* select register 0x30 - descriptor RAM*/
- palmld_usb2_cmd_set_reg(0x30);
- /* write descriptor length */
- palmld_usb2_cmd_write(0xa0);
- palmld_usb2_cmd_write(0x00);
-
- /* write descriptor as described in SX2 docs */
- /* Device Descriptor */
- palmld_usb2_cmd_write(18);
- palmld_usb2_cmd_write(01);
- palmld_usb2_cmd_write(00);
- palmld_usb2_cmd_write(02);
- palmld_usb2_cmd_write(00);
- palmld_usb2_cmd_write(00);
- palmld_usb2_cmd_write(00);
- palmld_usb2_cmd_write(64);
- palmld_usb2_cmd_write(0x12);
- palmld_usb2_cmd_write(0x34);
- palmld_usb2_cmd_write(0x56);
- palmld_usb2_cmd_write(0x78);
- palmld_usb2_cmd_write(0xcd);
- palmld_usb2_cmd_write(0xab);
- palmld_usb2_cmd_write(01);
- palmld_usb2_cmd_write(02);
- palmld_usb2_cmd_write(00);
- palmld_usb2_cmd_write(01);
- /* Device qualifier */
- palmld_usb2_cmd_write(10);
- palmld_usb2_cmd_write(06);
- palmld_usb2_cmd_write(00);
- palmld_usb2_cmd_write(02);
- palmld_usb2_cmd_write(00);
- palmld_usb2_cmd_write(00);
- palmld_usb2_cmd_write(00);
- palmld_usb2_cmd_write(64);
- palmld_usb2_cmd_write(01);
- palmld_usb2_cmd_write(00);
-
- /* High Speed Config */
- palmld_usb2_cmd_write(9);
- palmld_usb2_cmd_write(02);
- palmld_usb2_cmd_write(46);
- palmld_usb2_cmd_write(00);
- palmld_usb2_cmd_write(01);
- palmld_usb2_cmd_write(01);
- palmld_usb2_cmd_write(00);
- palmld_usb2_cmd_write(0x0A);
- palmld_usb2_cmd_write(50);
- /* Interface descr */
- palmld_usb2_cmd_write(9);
- palmld_usb2_cmd_write(04);
- palmld_usb2_cmd_write(00);
- palmld_usb2_cmd_write(00);
- palmld_usb2_cmd_write(04);
- palmld_usb2_cmd_write(0xFF);
- palmld_usb2_cmd_write(0x00);
- palmld_usb2_cmd_write(0x00);
- palmld_usb2_cmd_write(00);
- /* Endpoint descr */
- palmld_usb2_cmd_write(07);
- palmld_usb2_cmd_write(05);
- palmld_usb2_cmd_write(0x02);
- palmld_usb2_cmd_write(02);
- palmld_usb2_cmd_write(0x00);
- palmld_usb2_cmd_write(0x02);
- palmld_usb2_cmd_write(0x00);
- /* Endpoint descr */
- palmld_usb2_cmd_write(07);
- palmld_usb2_cmd_write(05);
- palmld_usb2_cmd_write(0x04);
- palmld_usb2_cmd_write(02);
- palmld_usb2_cmd_write(0x00);
- palmld_usb2_cmd_write(0x02);
- palmld_usb2_cmd_write(0x00);
- /* Endpoint descr */
- palmld_usb2_cmd_write(07);
- palmld_usb2_cmd_write(05);
- palmld_usb2_cmd_write(0x86);
- palmld_usb2_cmd_write(02);
- palmld_usb2_cmd_write(0x00);
- palmld_usb2_cmd_write(0x02);
- palmld_usb2_cmd_write(0x00);
- /* Endpoint descr */
- palmld_usb2_cmd_write(07);
- palmld_usb2_cmd_write(05);
- palmld_usb2_cmd_write(0x88);
- palmld_usb2_cmd_write(02);
- palmld_usb2_cmd_write(0x00);
- palmld_usb2_cmd_write(0x02);
- palmld_usb2_cmd_write(0x00);
-
- /* Full Speed Config */
- palmld_usb2_cmd_write(9);
- palmld_usb2_cmd_write(02);
- palmld_usb2_cmd_write(46);
- palmld_usb2_cmd_write(00);
- palmld_usb2_cmd_write(01);
- palmld_usb2_cmd_write(01);
- palmld_usb2_cmd_write(00);
- palmld_usb2_cmd_write(0x0A);
- palmld_usb2_cmd_write(50);
- /* Interface descr */
- palmld_usb2_cmd_write(9);
- palmld_usb2_cmd_write(04);
- palmld_usb2_cmd_write(00);
- palmld_usb2_cmd_write(00);
- palmld_usb2_cmd_write(04);
- palmld_usb2_cmd_write(0xFF);
- palmld_usb2_cmd_write(0x00);
- palmld_usb2_cmd_write(0x00);
- palmld_usb2_cmd_write(00);
- /* Endpoint descr */
- palmld_usb2_cmd_write(07);
- palmld_usb2_cmd_write(05);
- palmld_usb2_cmd_write(0x02);
- palmld_usb2_cmd_write(02);
- palmld_usb2_cmd_write(0x40);
- palmld_usb2_cmd_write(0x00);
- palmld_usb2_cmd_write(0x00);
- /* Endpoint descr */
- palmld_usb2_cmd_write(07);
- palmld_usb2_cmd_write(05);
- palmld_usb2_cmd_write(0x04);
- palmld_usb2_cmd_write(02);
- palmld_usb2_cmd_write(0x40);
- palmld_usb2_cmd_write(0x00);
- palmld_usb2_cmd_write(0x00);
- /* Endpoint descr */
- palmld_usb2_cmd_write(07);
- palmld_usb2_cmd_write(05);
- palmld_usb2_cmd_write(0x86);
- palmld_usb2_cmd_write(02);
- palmld_usb2_cmd_write(0x40);
- palmld_usb2_cmd_write(0x00);
- palmld_usb2_cmd_write(0x00);
- /* Endpoint descr */
- palmld_usb2_cmd_write(07);
- palmld_usb2_cmd_write(05);
- palmld_usb2_cmd_write(0x88);
- palmld_usb2_cmd_write(02);
- palmld_usb2_cmd_write(0x40);
- palmld_usb2_cmd_write(0x00);
- palmld_usb2_cmd_write(0x00);
-
- /* String descr 0 */
- palmld_usb2_cmd_write(04);
- palmld_usb2_cmd_write(03);
- palmld_usb2_cmd_write(0x09);
- palmld_usb2_cmd_write(0x04);
-
- /* String descr 1 */
- palmld_usb2_cmd_write(16);
- palmld_usb2_cmd_write(03);
- palmld_usb2_cmd_write('C');
- palmld_usb2_cmd_write(00);
- palmld_usb2_cmd_write('y');
- palmld_usb2_cmd_write(00);
- palmld_usb2_cmd_write('p');
- palmld_usb2_cmd_write(00);
- palmld_usb2_cmd_write('r');
- palmld_usb2_cmd_write(00);
- palmld_usb2_cmd_write('e');
- palmld_usb2_cmd_write(00);
- palmld_usb2_cmd_write('s');
- palmld_usb2_cmd_write(00);
- palmld_usb2_cmd_write('s');
- palmld_usb2_cmd_write(00);
-
- /* String descr 1 */
- palmld_usb2_cmd_write(20);
- palmld_usb2_cmd_write(3);
- palmld_usb2_cmd_write('C');
- palmld_usb2_cmd_write(00);
- palmld_usb2_cmd_write('Y');
- palmld_usb2_cmd_write(00);
- palmld_usb2_cmd_write('7');
- palmld_usb2_cmd_write(00);
- palmld_usb2_cmd_write('C');
- palmld_usb2_cmd_write(00);
- palmld_usb2_cmd_write('6');
- palmld_usb2_cmd_write(00);
- palmld_usb2_cmd_write('8');
- palmld_usb2_cmd_write(00);
- palmld_usb2_cmd_write('0');
- palmld_usb2_cmd_write(00);
- palmld_usb2_cmd_write('0');
- palmld_usb2_cmd_write(00);
- palmld_usb2_cmd_write('1');
- palmld_usb2_cmd_write(00);
-
-
- /* A LOT OF DEBUGING CRAP */
-/* printk("GPIO106 %i\n",(GET_GPIO(106)?1:0));
- printk("GPIO106 %i\n",(GET_GPIO(106)?1:0));
- printk("GPIO106 %i\n",(GET_GPIO(106)?1:0));
- printk("GPIO106 %i\n",(GET_GPIO(106)?1:0));
- printk("GPIO106 %i\n",(GET_GPIO(106)?1:0));
- printk("GPIO106 %i\n",(GET_GPIO(106)?1:0));
- printk("GPIO106 %i\n",(GET_GPIO(106)?1:0));
- printk("GPIO106 %i\n",(GET_GPIO(106)?1:0));
- printk("GPIO106 %i\n",(GET_GPIO(106)?1:0));
- printk("GPIO106 %i\n",(GET_GPIO(106)?1:0));
- printk("GPIO106 %i\n",(GET_GPIO(106)?1:0));
-*/
-
- for (;;) {
- /* printk("%02x%02x|%02x%02x|%02x%02x|%02x%02x|%i|%i|%i|%i|%i|%i\n",
- PALMLD_USB2_ADDR_FIFO2,PALMLD_USB2_ADDR_FIFO4,
- PALMLD_USB2_ADDR_FIFO6,PALMLD_USB2_ADDR_FIFO8,
- PALMLD_USB2_ADDR_CMD,PALMLD_USB2_ADDR_RESERVED1,
- PALMLD_USB2_ADDR_RESERVED2,PALMLD_USB2_ADDR_RESERVED3,
- (GET_GPIO(18)?1:0),(GET_GPIO(20)?1:0),
- (GET_GPIO(53)?1:0),(GET_GPIO(86)?1:0),
- (GET_GPIO(90)?1:0),(GET_GPIO(106)?1:0));
- */}
-
- return 0;
-}
-
-static int __init palmld_usb2_init(void)
-{
- printk ("sx2_init()\n");
-
- if(!machine_is_xscale_palmld()) return -ENODEV;
-
- palmld_usb2_test_cmd();
-
- return -ENODEV;
-}
-
-static void __exit palmld_usb2_exit(void)
-{
-}
-
-module_init(palmld_usb2_init);
-module_exit(palmld_usb2_exit);
-
-MODULE_AUTHOR ("Marek Vasut <mar...@gm...>");
-MODULE_DESCRIPTION ("USB2 driver for Palm LifeDrive");
-MODULE_LICENSE ("GPL");
Modified: linux4palm/linux/trunk/drivers/usb/gadget/Kconfig
===================================================================
--- linux4palm/linux/trunk/drivers/usb/gadget/Kconfig 2007-04-06 22:44:13 UTC (rev 952)
+++ linux4palm/linux/trunk/drivers/usb/gadget/Kconfig 2007-04-09 10:54:38 UTC (rev 953)
@@ -148,6 +148,19 @@
depends on USB_GADGET_PXA27X
default n
+config USB_GADGET_SX2
+ boolean "Cypress EZUSB SX2"
+ depends on ARCH_PXA
+ help
+ Cypress EZUSB SX2 driver
+
+config USB_SX2
+ tristate
+ depends on USB_GADGET_SX2
+ default USB_GADGET
+ select USB_GADGET_SELECTED
+
+
config USB_GADGET_GOKU
boolean "Toshiba TC86C001 'Goku-S'"
depends on PCI
Modified: linux4palm/linux/trunk/drivers/usb/gadget/Makefile
===================================================================
--- linux4palm/linux/trunk/drivers/usb/gadget/Makefile 2007-04-06 22:44:13 UTC (rev 952)
+++ linux4palm/linux/trunk/drivers/usb/gadget/Makefile 2007-04-09 10:54:38 UTC (rev 953)
@@ -4,6 +4,7 @@
obj-$(CONFIG_USB_DUMMY_HCD) += dummy_hcd.o
obj-$(CONFIG_USB_NET2280) += net2280.o
obj-$(CONFIG_USB_PXA2XX) += pxa2xx_udc.o
+obj-$(CONFIG_USB_SX2) += sx2_udc.o
obj-$(CONFIG_USB_GOKU) += goku_udc.o
obj-$(CONFIG_USB_OMAP) += omap_udc.o
obj-$(CONFIG_USB_LH7A40X) += lh7a40x_udc.o
Added: linux4palm/linux/trunk/drivers/usb/gadget/sx2_udc.c
===================================================================
--- linux4palm/linux/trunk/drivers/usb/gadget/sx2_udc.c (rev 0)
+++ linux4palm/linux/trunk/drivers/usb/gadget/sx2_udc.c 2007-04-09 10:54:38 UTC (rev 953)
@@ -0,0 +1,434 @@
+/*
+ * linux/drivers/usb/gadget/sx2_udc.c
+ * Cypress EZUSB SX2 high speed USB device controller
+ *
+ * Copyright (C) 2007 Marek Vasut
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ *
+ */
+
+#include <linux/module.h>
+#include <linux/kernel.h>
+#include <linux/ioport.h>
+#include <linux/types.h>
+#include <linux/version.h>
+#include <linux/errno.h>
+#include <linux/delay.h>
+#include <linux/sched.h>
+#include <linux/slab.h>
+#include <linux/init.h>
+#include <linux/timer.h>
+#include <linux/list.h>
+#include <linux/interrupt.h>
+#include <linux/proc_fs.h>
+#include <linux/mm.h>
+#include <linux/platform_device.h>
+#include <linux/dma-mapping.h>
+
+#include <asm/byteorder.h>
+#include <asm/dma.h>
+#include <asm/io.h>
+#include <asm/irq.h>
+#include <asm/system.h>
+#include <asm/mach-types.h>
+#include <asm/unaligned.h>
+#include <asm/hardware.h>
+
+#include <asm/arch/gpio.h>
+
+#include <linux/usb_ch9.h>
+#include <linux/usb_gadget.h>
+
+#include <asm/arch/sx2.h>
+#include <asm/arch/palmld-gpio.h>
+
+#include "sx2_udc.h"
+
+struct sx2_udc_mach_info sx2_mach;
+
+/*
+ TESTING STUFF
+ */
+int sx2_cmd_set_reg(int reg);
+int sx2_cmd_write(u8 data);
+
+int sx2_enum(void)
+{
+printk("sx2_mach: %08x\n",sx2_mach.virt_base);
+ssleep(10);
+ /* ENUMERATE WITH BUILTIN DESCRIPTOR */
+ /* select register 0x30 - descriptor RAM*/
+ sx2_cmd_set_reg(0x30);
+ /* write descriptor length */
+ sx2_cmd_write(0xa0);
+ sx2_cmd_write(0x00);
+
+ /* write descriptor as described in SX2 docs */
+ /* Device Descriptor */
+ sx2_cmd_write(18);
+ sx2_cmd_write(01);
+ sx2_cmd_write(00);
+ sx2_cmd_write(02);
+ sx2_cmd_write(00);
+ sx2_cmd_write(00);
+ sx2_cmd_write(00);
+ sx2_cmd_write(64);
+ sx2_cmd_write(0x25);
+ sx2_cmd_write(0x05);
+ sx2_cmd_write(0xab);
+ sx2_cmd_write(0xcd);
+ sx2_cmd_write(0x12);
+ sx2_cmd_write(0x34);
+ sx2_cmd_write(01);
+ sx2_cmd_write(02);
+ sx2_cmd_write(00);
+ sx2_cmd_write(01);
+ /* Device qualifier */
+ sx2_cmd_write(10);
+ sx2_cmd_write(06);
+ sx2_cmd_write(00);
+ sx2_cmd_write(02);
+ sx2_cmd_write(00);
+ sx2_cmd_write(00);
+ sx2_cmd_write(00);
+ sx2_cmd_write(64);
+ sx2_cmd_write(01);
+ sx2_cmd_write(00);
+
+ /* High Speed Config */
+ sx2_cmd_write(9);
+ sx2_cmd_write(02);
+ sx2_cmd_write(46);
+ sx2_cmd_write(00);
+ sx2_cmd_write(01);
+ sx2_cmd_write(01);
+ sx2_cmd_write(00);
+ sx2_cmd_write(0x0A);
+ sx2_cmd_write(50);
+ /* Interface descr */
+ sx2_cmd_write(9);
+ sx2_cmd_write(04);
+ sx2_cmd_write(00);
+ sx2_cmd_write(00);
+ sx2_cmd_write(04);
+ sx2_cmd_write(0xFF);
+ sx2_cmd_write(0x00);
+ sx2_cmd_write(0x00);
+ sx2_cmd_write(00);
+ /* Endpoint descr */
+ sx2_cmd_write(07);
+ sx2_cmd_write(05);
+ sx2_cmd_write(0x02);
+ sx2_cmd_write(02);
+ sx2_cmd_write(0x00);
+ sx2_cmd_write(0x02);
+ sx2_cmd_write(0x00);
+ /* Endpoint descr */
+ sx2_cmd_write(07);
+ sx2_cmd_write(05);
+ sx2_cmd_write(0x04);
+ sx2_cmd_write(02);
+ sx2_cmd_write(0x00);
+ sx2_cmd_write(0x02);
+ sx2_cmd_write(0x00);
+ /* Endpoint descr */
+ sx2_cmd_write(07);
+ sx2_cmd_write(05);
+ sx2_cmd_write(0x86);
+ sx2_cmd_write(02);
+ sx2_cmd_write(0x00);
+ sx2_cmd_write(0x02);
+ sx2_cmd_write(0x00);
+ /* Endpoint descr */
+ sx2_cmd_write(07);
+ sx2_cmd_write(05);
+ sx2_cmd_write(0x88);
+ sx2_cmd_write(02);
+ sx2_cmd_write(0x00);
+ sx2_cmd_write(0x02);
+ sx2_cmd_write(0x00);
+
+ /* Full Speed Config */
+ sx2_cmd_write(9);
+ sx2_cmd_write(02);
+ sx2_cmd_write(46);
+ sx2_cmd_write(00);
+ sx2_cmd_write(01);
+ sx2_cmd_write(01);
+ sx2_cmd_write(00);
+ sx2_cmd_write(0x0A);
+ sx2_cmd_write(50);
+ /* Interface descr */
+ sx2_cmd_write(9);
+ sx2_cmd_write(04);
+ sx2_cmd_write(00);
+ sx2_cmd_write(00);
+ sx2_cmd_write(04);
+ sx2_cmd_write(0xFF);
+ sx2_cmd_write(0x00);
+ sx2_cmd_write(0x00);
+ sx2_cmd_write(00);
+ /* Endpoint descr */
+ sx2_cmd_write(07);
+ sx2_cmd_write(05);
+ sx2_cmd_write(0x02);
+ sx2_cmd_write(02);
+ sx2_cmd_write(0x40);
+ sx2_cmd_write(0x00);
+ sx2_cmd_write(0x00);
+ /* Endpoint descr */
+ sx2_cmd_write(07);
+ sx2_cmd_write(05);
+ sx2_cmd_write(0x04);
+ sx2_cmd_write(02);
+ sx2_cmd_write(0x40);
+ sx2_cmd_write(0x00);
+ sx2_cmd_write(0x00);
+ /* Endpoint descr */
+ sx2_cmd_write(07);
+ sx2_cmd_write(05);
+ sx2_cmd_write(0x86);
+ sx2_cmd_write(02);
+ sx2_cmd_write(0x40);
+ sx2_cmd_write(0x00);
+ sx2_cmd_write(0x00);
+ /* Endpoint descr */
+ sx2_cmd_write(07);
+ sx2_cmd_write(05);
+ sx2_cmd_write(0x88);
+ sx2_cmd_write(02);
+ sx2_cmd_write(0x40);
+ sx2_cmd_write(0x00);
+ sx2_cmd_write(0x00);
+
+ /* String descr 0 */
+ sx2_cmd_write(04);
+ sx2_cmd_write(03);
+ sx2_cmd_write(0x09);
+ sx2_cmd_write(0x04);
+
+ /* String descr 1 */
+ sx2_cmd_write(16);
+ sx2_cmd_write(03);
+ sx2_cmd_write('C');
+ sx2_cmd_write(00);
+ sx2_cmd_write('y');
+ sx2_cmd_write(00);
+ sx2_cmd_write('p');
+ sx2_cmd_write(00);
+ sx2_cmd_write('r');
+ sx2_cmd_write(00);
+ sx2_cmd_write('e');
+ sx2_cmd_write(00);
+ sx2_cmd_write('s');
+ sx2_cmd_write(00);
+ sx2_cmd_write('s');
+ sx2_cmd_write(00);
+
+ /* String descr 2 */
+ sx2_cmd_write(20);
+ sx2_cmd_write(03);
+ sx2_cmd_write('C');
+ sx2_cmd_write(00);
+ sx2_cmd_write('Y');
+ sx2_cmd_write(00);
+ sx2_cmd_write('7');
+ sx2_cmd_write(00);
+ sx2_cmd_write('C');
+ sx2_cmd_write(00);
+ sx2_cmd_write('6');
+ sx2_cmd_write(00);
+ sx2_cmd_write('8');
+ sx2_cmd_write(00);
+ sx2_cmd_write('0');
+ sx2_cmd_write(00);
+ sx2_cmd_write('0');
+ sx2_cmd_write(00);
+ sx2_cmd_write('1');
+ sx2_cmd_write(00);
+ return 0;
+}
+
+u16 sx2_cmd_read(int reg)
+{
+ u8 data = SX2_CMD_ADDR | SX2_CMD_READ
+ | (reg & SX2_ADDR_MASK);
+
+ printk("READING 0x%02x\n",reg);
+ SX2_ADDR_CMD=data;
+// while((gpio_get_value(sx2_udc.mach->ready_pin)?1:0)==0) {
+ while((GET_PALMLD_GPIO(USB_READY)?1:0)==0) {
+ printk("WAITING FOR IRQ\n");
+ };
+ printk("REG 0x%02x F2 0x%02x F4 0x%02x\n",reg,SX2_ADDR_FIFO2,SX2_ADDR_FIFO4);
+ printk("REG 0x%02x F2 0x%02x F4 0x%02x\n",reg,SX2_ADDR_FIFO6,SX2_ADDR_FIFO8);
+ printk("REG 0x%02x CD 0x%02x\n",reg,SX2_ADDR_CMD);
+ return 0;
+}
+
+int sx2_cmd_set_reg(int reg)
+{
+ /* initiate write to addr */
+ printk("SETTING 0x%02x\n",(reg | SX2_CMD_ADDR));
+ SX2_ADDR_CMD=(reg | SX2_CMD_ADDR);
+ /* wait for READY line */
+// while((gpio_get_value(sx2_udc.mach->ready_pin)?1:0)==0) {
+ while((GET_PALMLD_GPIO(USB_READY)?1:0)==0) {
+ printk("WAITING FOR IRQ\n");
+ };
+
+ return 0;
+}
+
+int sx2_cmd_write(u8 data)
+{
+ /* prepare data */
+ u8 data1 = ((data & 0xf0)>>4); /* Upper nibble */
+ u8 data2 = (data & 0x0f); /* Lower nibble */
+
+ /* initiate write to reg */
+ printk("UPPER NIBBLE %02x\n",(data1 | SX2_CMD_WRITE));
+ SX2_ADDR_CMD=(data1 | SX2_CMD_WRITE);
+ /* wait for READY line */
+// while((gpio_get_value(sx2_udc.mach->ready_pin)?1:0)==0) {
+ while((GET_PALMLD_GPIO(USB_READY)?1:0)==0) {
+ printk("WAITING FOR IRQ\n");
+ };
+
+ printk("LOWER NIBBLE %02x\n",(data2 | SX2_CMD_WRITE));
+ SX2_ADDR_CMD=(data2 | SX2_CMD_WRITE);
+ /* wait for READY line */
+// while((gpio_get_value(sx2_udc.mach->ready_pin)?1:0)==0) {
+ while((GET_PALMLD_GPIO(USB_READY)?1:0)==0) {
+ printk("WAITING FOR IRQ\n");
+ };
+
+ return 0;
+}
+
+
+
+
+
+/*
+ GADGET LEVEL HANDLING STUFF
+ */
+
+static const char driver_name [] = "sx2_udc";
+
+int usb_gadget_register_driver(struct usb_gadget_driver *driver)
+{
+printk("SX2: usb_gadget_register_driver\n");
+return 0;
+}
+EXPORT_SYMBOL(usb_gadget_register_driver);
+
+int usb_gadget_unregister_driver(struct usb_gadget_driver *driver)
+{
+printk("SX2: usb_gadget_unregister_driver\n");
+return 0;
+}
+EXPORT_SYMBOL(usb_gadget_unregister_driver);
+
+
+
+
+
+
+
+
+
+/*
+ HARDWARE LEVEL HANDLING STUFF
+ */
+static int sx2_udc_probe(struct platform_device *pdev)
+{
+ static struct sx2_dev *usb;
+/*
+INIT THE CONTROLLER - POWER UP ETC
+*/
+ /* FIXME - this cant be static :-E */
+ if(!request_mem_region(SX2_ADDR_BASE, 0x10000, "sx2-udc"))
+ return -EBUSY;
+
+ usb = kmalloc(sizeof(struct sx2_dev), GFP_KERNEL);
+ if(!usb)
+ return -ENOMEM;
+
+ memset(usb, 0,sizeof(struct sx2_dev));
+ platform_set_drvdata(pdev, usb);
+
+ usb->dev = &(pdev->dev);
+ usb->mach = pdev->dev.platform_data;
+ sx2_mach = *(usb->mach);
+
+/* Now power down and up the chip */
+ gpio_set_value(usb->mach->power_pin,0);
+ udelay(100);
+ gpio_set_value(usb->mach->power_pin,1);
+ udelay(500);
+ sx2_enum();
+ printk("SX2: sx2_udc_probe DONE\n");
+ return 0;
+}
+
+static int sx2_udc_remove(struct platform_device *pdev)
+{
+ platform_set_drvdata(pdev, 0);
+
+printk("SX2: sx2_udc_remove\n");
+ return 0;
+}
+
+/*-------------------------------------------------------------------------*/
+
+static struct platform_driver udc_driver = {
+ .probe = sx2_udc_probe,
+ .remove = __exit_p(sx2_udc_remove),
+ .suspend = NULL,
+ .resume = NULL,
+ .driver = {
+ .owner = THIS_MODULE,
+ .name = "sx2-udc",
+ },
+};
+
+static int __init udc_init(void)
+{
+ return platform_driver_register(&udc_driver);
+}
+module_init(udc_init);
+
+static void __exit udc_exit(void)
+{
+ platform_driver_unregister(&udc_driver);
+}
+module_exit(udc_exit);
+
+MODULE_DESCRIPTION("Cypress EZUSB SX2 Peripheral Controller");
+MODULE_AUTHOR("Marek Vasut");
+MODULE_LICENSE("GPL");
+
+
+
+
+
+
+
+
+
+
+
Added: linux4palm/linux/trunk/drivers/usb/gadget/sx2_udc.h
===================================================================
--- linux4palm/linux/trunk/drivers/usb/gadget/sx2_udc.h (rev 0)
+++ linux4palm/linux/trunk/drivers/usb/gadget/sx2_udc.h 2007-04-09 10:54:38 UTC (rev 953)
@@ -0,0 +1,170 @@
+/*
+ * sx2_udc.h
+ *
+ * Cypress EZUSB SX2 - CY7C68001 External master register definitions
+ *
+ * Author: 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.
+ *
+ *
+ *
+ */
+#ifndef _INCLUDE_SX2_UDC_H_
+
+#define _INCLUDE_SX2_UDC_H_
+
+/***************************************************
+ * SX2 REGISTERS *
+ ***************************************************/
+
+/* General configuration */
+#define SX2_REG_IFCONFIG 0x01
+#define SX2_REG_FLAGSAB 0x02
+#define SX2_REG_FLAGSCD 0x03
+#define SX2_REG_POLAR 0x04
+#define SX2_REG_REVID 0x05
+
+/* Endpoint configuration */
+#define SX2_REG_EP2CFG 0x06
+#define SX2_REG_EP4CFG 0x07
+#define SX2_REG_EP6CFG 0x08
+#define SX2_REG_EP8CFG 0x09
+#define SX2_REG_EP2PKTLENH 0x0A
+#define SX2_REG_EP2PKTLENL 0x0B
+#define SX2_REG_EP4PKTLENH 0x0C
+#define SX2_REG_EP4PKTLENL 0x0D
+#define SX2_REG_EP6PKTLENH 0x0E
+#define SX2_REG_EP6PKTLENL 0x0F
+#define SX2_REG_EP8PKTLENH 0x10
+#define SX2_REG_EP8PKTLENL 0x11
+#define SX2_REG_EP2PFH 0x12
+#define SX2_REG_EP2PFL 0x13
+#define SX2_REG_EP4PFH 0x14
+#define SX2_REG_EP4PFL 0x15
+#define SX2_REG_EP6PFH 0x16
+#define SX2_REG_EP6PFL 0x17
+#define SX2_REG_EP8PFH 0x18
+#define SX2_REG_EP8PFL 0x19
+#define SX2_REG_EP2ISOINPKTS 0x1A
+#define SX2_REG_EP4ISOINPKTS 0x1B
+#define SX2_REG_EP6ISOINPKTS 0x1C
+#define SX2_REG_EP8ISOINPKTS 0x1D
+
+/* Flags */
+#define SX2_REG_EP24FLAGS 0x1E
+#define SX2_REG_EP68FLAGS 0x1F
+
+/* INPKTEND/FLUSH */
+#define SX2_REG_INPKTEND 0x20
+#define SX2_REG_FLUSH 0x20
+
+/* USB Configuration */
+#define SX2_REG_USBFRAMEH 0x2A
+#define SX2_REG_USBFRAMEL 0x2B
+#define SX2_REG_MICROFRAME 0x2C
+#define SX2_REG_FNADDR 0x2D
+
+/* Interrupts */
+#define SX2_REG_INTENABLE 0x2E
+
+/* Descriptor */
+#define SX2_REG_DESC 0x30
+
+/* Endpoint 0 */
+#define SX2_REG_EP0BUF 0x31
+#define SX2_REG_SETUP 0x32
+#define SX2_REG_EP0BC 0x33
+
+/* Un-indexed Register control */
+#define SX2_REG_UIRC0 0x3A
+#define SX2_REG_UIRC1 0x3B
+#define SX2_REG_UIRC2 0x3C
+
+/* Un-indexed Registers in XDATA space */
+#define SX2_REG_FIFOPINPOLAR 0xE609
+#define SX2_REG_TOGCTL 0xE683
+#define SX2_REG_CT1 0xE6FB
+
+/***************************************************
+ * SX2 ADDRESS *
+ ***************************************************/
+#define SX2_ADDR_BASE 0xf0000000
+
+#define SX2_ADDR_IF(x) (*((volatile u8 *)x))
+
+/* We have 16bit bus of the chip connected to 32 bit bus of CPU */
+
+#define SX2_ADDR_FIFO2 SX2_ADDR_IF (SX2_ADDR_BASE + 0x00)
+#define SX2_ADDR_FIFO4 SX2_ADDR_IF (SX2_ADDR_BASE + 0x01)
+#define SX2_ADDR_FIFO6 SX2_ADDR_IF (SX2_ADDR_BASE + 0x04)
+#define SX2_ADDR_FIFO8 SX2_ADDR_IF (SX2_ADDR_BASE + 0x05)
+#define SX2_ADDR_CMD SX2_ADDR_IF (SX2_ADDR_BASE + 0x08)
+#define SX2_ADDR_RESERVED1 SX2_ADDR_IF (SX2_ADDR_BASE + 0x09)
+#define SX2_ADDR_RESERVED2 SX2_ADDR_IF (SX2_ADDR_BASE + 0x0C)
+#define SX2_ADDR_RESERVED3 SX2_ADDR_IF (SX2_ADDR_BASE + 0x0D)
+
+/***************************************************
+ * SX2 COMMANDS *
+ ***************************************************/
+
+#define SX2_CMD_WRITE (0x00)
+#define SX2_CMD_READ (0x40)
+#define SX2_CMD_ADDR (0x80)
+
+/***************************************************
+ * SX2 MISC *
+ ***************************************************/
+
+#define SX2_ADDR_MASK (0x3f)
+
+struct sx2_dev {
+ struct device *dev;
+ struct sx2_udc_mach_info *mach;
+ spinlock_t lock;
+ /*
+ * EP0 write thread.
+ */
+ void (*wrint)(struct sx2_dev *);
+ struct usb_buf *wrbuf;
+ unsigned char *wrptr;
+ unsigned int wrlen;
+
+ /*
+ * EP0 statistics.
+ */
+ unsigned long ep0_wr_fifo_errs;
+ unsigned long ep0_wr_bytes;
+ unsigned long ep0_wr_packets;
+ unsigned long ep0_rd_fifo_errs;
+ unsigned long ep0_rd_bytes;
+ unsigned long ep0_rd_packets;
+ unsigned long ep0_stall_sent;
+ unsigned long ep0_early_irqs;
+
+ /*
+ * EP1 .. n
+ */
+ struct {
+ unsigned int buflen;
+ void *pktcpu;
+ unsigned int pktlen;
+ unsigned int pktrem;
+
+ void *cb_data;
+ void (*cb_func)(void *data, int flag, int size);
+
+ u32 udccs;
+ unsigned int maxpktsize;
+ unsigned int configured;
+ unsigned int host_halt;
+ unsigned long fifo_errs;
+ unsigned long bytes;
+ unsigned long packets;
+ } ep[4];
+};
+
+#endif
Deleted: linux4palm/linux/trunk/include/asm-arm/arch-pxa/palmld-usb2.h
===================================================================
--- linux4palm/linux/trunk/include/asm-arm/arch-pxa/palmld-usb2.h 2007-04-06 22:44:13 UTC (rev 952)
+++ linux4palm/linux/trunk/include/asm-arm/arch-pxa/palmld-usb2.h 2007-04-09 10:54:38 UTC (rev 953)
@@ -1,127 +0,0 @@
-/*
- * palmld-usb2.h
- *
- * Cypress EZUSB SX2 - CY7C68001 External master register definitions
- * SX2 is an USB2 controller in PalmOne LifeDrive Handheld Computer
- *
- * Author: 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.
- *
- *
- *
- */
-#ifndef _INCLUDE_PALMLD_USB2_H_
-
-#define _INCLUDE_PALMLD_USB2_H_
-
-#include <asm/arch/palmld-gpio.h>
-
-/***************************************************
- * SX2 REGISTERS *
- ***************************************************/
-
-/* General configuration */
-#define PALMLD_USB2_REG_IFCONFIG 0x01
-#define PALMLD_USB2_REG_FLAGSAB 0x02
-#define PALMLD_USB2_REG_FLAGSCD 0x03
-#define PALMLD_USB2_REG_POLAR 0x04
-#define PALMLD_USB2_REG_REVID 0x05
-
-/* Endpoint configuration */
-#define PALMLD_USB2_REG_EP2CFG 0x06
-#define PALMLD_USB2_REG_EP4CFG 0x07
-#define PALMLD_USB2_REG_EP6CFG 0x08
-#define PALMLD_USB2_REG_EP8CFG 0x09
-#define PALMLD_USB2_REG_EP2PKTLENH 0x0A
-#define PALMLD_USB2_REG_EP2PKTLENL 0x0B
-#define PALMLD_USB2_REG_EP4PKTLENH 0x0C
-#define PALMLD_USB2_REG_EP4PKTLENL 0x0D
-#define PALMLD_USB2_REG_EP6PKTLENH 0x0E
-#define PALMLD_USB2_REG_EP6PKTLENL 0x0F
-#define PALMLD_USB2_REG_EP8PKTLENH 0x10
-#define PALMLD_USB2_REG_EP8PKTLENL 0x11
-#define PALMLD_USB2_REG_EP2PFH 0x12
-#define PALMLD_USB2_REG_EP2PFL 0x13
-#define PALMLD_USB2_REG_EP4PFH 0x14
-#define PALMLD_USB2_REG_EP4PFL 0x15
-#define PALMLD_USB2_REG_EP6PFH 0x16
-#define PALMLD_USB2_REG_EP6PFL 0x17
-#define PALMLD_USB2_REG_EP8PFH 0x18
-#define PALMLD_USB2_REG_EP8PFL 0x19
-#define PALMLD_USB2_REG_EP2ISOINPKTS 0x1A
-#define PALMLD_USB2_REG_EP4ISOINPKTS 0x1B
-#define PALMLD_USB2_REG_EP6ISOINPKTS 0x1C
-#define PALMLD_USB2_REG_EP8ISOINPKTS 0x1D
-...
[truncated message content] |
|
From: <mar...@us...> - 2007-04-19 18:09:09
|
Revision: 958
http://svn.sourceforge.net/hackndev/?rev=958&view=rev
Author: marex_z71
Date: 2007-04-19 11:09:06 -0700 (Thu, 19 Apr 2007)
Log Message:
-----------
PalmTC: Update to 2.6.20 ... most of code updated, ptc_ucb1400 still broken
Modified Paths:
--------------
linux4palm/linux/trunk/arch/arm/mach-pxa/palmtc/palmtc.c
linux4palm/linux/trunk/arch/arm/mach-pxa/palmtc/palmtc_keyboard.c
linux4palm/linux/trunk/arch/arm/mach-pxa/palmtc/ptc_ucb1400.c
linux4palm/linux/trunk/drivers/usb/gadget/pxa2xx_udc.c
Added Paths:
-----------
linux4palm/linux/trunk/include/asm-arm/arch-pxa/palmtc-gpio.h
linux4palm/linux/trunk/include/asm-arm/arch-pxa/ptc_ucb1400.h
Removed Paths:
-------------
linux4palm/linux/trunk/arch/arm/mach-pxa/palmtc/palmtc-gpio.h
linux4palm/linux/trunk/arch/arm/mach-pxa/palmtc/ptc_ucb1400.h
Deleted: linux4palm/linux/trunk/arch/arm/mach-pxa/palmtc/palmtc-gpio.h
===================================================================
--- linux4palm/linux/trunk/arch/arm/mach-pxa/palmtc/palmtc-gpio.h 2007-04-18 10:12:50 UTC (rev 957)
+++ linux4palm/linux/trunk/arch/arm/mach-pxa/palmtc/palmtc-gpio.h 2007-04-19 18:09:06 UTC (rev 958)
@@ -1,26 +0,0 @@
-/*
- * palmtc-gpio.h
- *
- * Authors: Holger Bocklet <bit...@gm...>
- *
- */
-
-#ifndef _PALMTC_GPIO_H_
-#define _PALMTC_GPIO_H_
-
-#include <asm/arch/pxa-regs.h>
-
-/* Palm Tungsten C GPIOs */
-#define GPIO_NR_PALMTC_EARPHONE_DETECT 2
-#define GPIO_NR_PALMLD_USB_DETECT 4
-#define GPIO_NR_PALMLD_POWER_DETECT 5
-#define GPIO_NR_PALMTC_HOTSYNC_BUTTON 7
-#define GPIO_NR_PALMTC_SD_DETECT 12 // low->high wenn out, high->low when inserted
-#define GPIO_NR_PALMLD_BL_POWER 16
-
-//#define GPIO_NR_PALMLD_STD_RXD 46 /* IRDA */
-//#define GPIO_NR_PALMLD_STD_TXD 47
-
-#define IRQ_GPIO_PALMTC_SD_DETECT IRQ_GPIO(GPIO_NR_PALMTC_SD_DETECT)
-
-#endif /* _PALMTC_GPIO_H_ */
Modified: linux4palm/linux/trunk/arch/arm/mach-pxa/palmtc/palmtc.c
===================================================================
--- linux4palm/linux/trunk/arch/arm/mach-pxa/palmtc/palmtc.c 2007-04-18 10:12:50 UTC (rev 957)
+++ linux4palm/linux/trunk/arch/arm/mach-pxa/palmtc/palmtc.c 2007-04-19 18:09:06 UTC (rev 958)
@@ -18,14 +18,15 @@
#include <linux/device.h>
#include <linux/platform_device.h>
#include <linux/fb.h>
+#include <linux/irq.h>
#include <asm/arch/pxa-dmabounce.h>
#include <asm/arch/pxafb.h>
#include <asm/arch/pxa-regs.h>
#include <asm/arch/pxapwm-bl.h>
+#include <asm/arch/palmtc-gpio.h>
#include "../generic.h"
-#include "palmtc-gpio.h"
#define DEBUG
@@ -40,28 +41,36 @@
CKEN &= ~CKEN1_PWM1;
}
-static struct pxafb_mach_info palmtclcd __initdata = {
- .pixclock = 0,
- .xres = 320,
- .yres = 320,
- .bpp = 16,
- .hsync_len = 4,
- .left_margin = 30,
- .right_margin = 7,
- .vsync_len = 4,
- .upper_margin = 6,
- .lower_margin = 7,
- .sync = FB_SYNC_HOR_HIGH_ACT|FB_SYNC_VERT_HIGH_ACT,
+static struct pxafb_mode_info palmtc_lcd_modes[] = {
+{
+ /* pixclock is set by lccr3 below */
+ .pixclock = 0,
+ .xres = 320,
+ .yres = 320,
+ .bpp = 16,
+ .hsync_len = 4,
+ .vsync_len = 4,
- .lccr0 = 0x07B008F9,
- .lccr3 = 0x04700004,
+ /* fixme: these are the margins PalmOS has set,
+ * they seem to work but could be better.
+ */
+ .left_margin = 30,
+ .right_margin = 7,
+ .upper_margin = 6,
+ .lower_margin = 7,
+},
+};
+static struct pxafb_mach_info palmtc_lcd_screen = {
+ .modes = palmtc_lcd_modes,
+ .num_modes = ARRAY_SIZE(palmtc_lcd_modes),
+ .lccr0 = 0x07B008F9,
+ .lccr3 = 0x04700004,
+
.pxafb_backlight_power = palmtc_backlight_power,
};
-
-
-static int palmtc_mci_init(struct device *dev, irqreturn_t (*palmtc_detect_int)(int, void *, struct pt_regs *), void *data)
+static int palmtc_mci_init(struct device *dev, irqreturn_t (*palmtc_detect_int)(int, void *), void *data)
{
int err;
@@ -144,7 +153,7 @@
static void __init palmtc_init(void)
{
- set_pxa_fb_info(&palmtclcd);
+ set_pxa_fb_info( &palmtc_lcd_screen );
GCR &= ~GCR_PRIRDY_IEN;
pxa_set_mci_info( &palmtc_mci_platform_data );
Modified: linux4palm/linux/trunk/arch/arm/mach-pxa/palmtc/palmtc_keyboard.c
===================================================================
--- linux4palm/linux/trunk/arch/arm/mach-pxa/palmtc/palmtc_keyboard.c 2007-04-18 10:12:50 UTC (rev 957)
+++ linux4palm/linux/trunk/arch/arm/mach-pxa/palmtc/palmtc_keyboard.c 2007-04-19 18:09:06 UTC (rev 958)
@@ -20,6 +20,7 @@
#include <linux/delay.h>
#include <linux/reboot.h>
#include <linux/sched.h>
+#include <linux/irq.h>
#include <asm/mach/arch.h>
#include <asm/mach-types.h>
@@ -153,13 +154,13 @@
static spinlock_t kbd_lock = SPIN_LOCK_UNLOCKED;
-static irqreturn_t palmtc_kbd_irq_handler(int irq, void *dev_id, struct pt_regs *regs)
+static irqreturn_t palmtc_kbd_irq_handler(int irq, void *dev_id)
{
queue_work(palmtc_kbd_workqueue, &palmtc_kbd_task);
return IRQ_HANDLED;
}
-static void palmtc_kbd_queuework(void *data)
+static void palmtc_kbd_queuework(struct work_struct *data)
{
unsigned long tdiff_msec, flags;
int gpio, row, col;
@@ -344,7 +345,7 @@
input_register_device(keyboard_dev);
palmtc_kbd_workqueue = create_workqueue("palmtckbdw");
- INIT_WORK(&palmtc_kbd_task, palmtc_kbd_queuework, NULL);
+ INIT_WORK(&palmtc_kbd_task, palmtc_kbd_queuework);
#ifdef USE_RELEASE_TIMER
init_timer (&key_release_timer);
Modified: linux4palm/linux/trunk/arch/arm/mach-pxa/palmtc/ptc_ucb1400.c
===================================================================
--- linux4palm/linux/trunk/arch/arm/mach-pxa/palmtc/ptc_ucb1400.c 2007-04-18 10:12:50 UTC (rev 957)
+++ linux4palm/linux/trunk/arch/arm/mach-pxa/palmtc/ptc_ucb1400.c 2007-04-19 18:09:06 UTC (rev 958)
@@ -23,7 +23,6 @@
#include <linux/jiffies.h>
#include <linux/moduleparam.h>
#include <linux/wait.h>
-#include <linux/config.h>
#include <linux/errno.h>
#include <linux/kthread.h>
#include <linux/workqueue.h>
@@ -32,19 +31,19 @@
#include <linux/ctype.h>
#include <linux/time.h>
#include <linux/mutex.h>
+#include <linux/freezer.h>
#include <asm/delay.h>
#include <asm/arch/hardware.h>
#include <asm/arch/pxa-regs.h>
#include <asm/arch/irqs.h>
+#include <asm/arch/ptc_ucb1400.h>
#include <asm/apm.h>
#include <sound/driver.h>
#include <sound/core.h>
#include <sound/ac97_codec.h>
-#include "ptc_ucb1400.h"
-
#define PALMTC_UCB_DEBUG
#ifdef PALMTC_UCB_DEBUG
@@ -59,8 +58,8 @@
struct ucb1400 {
- struct device *dev;
- ac97_t *ac97;
+ struct device *dev;
+ ac97_t *ac97;
struct input_dev *idev;
struct task_struct *thread;
//wait_queue_head_t pen_irq_wait;
@@ -531,7 +530,7 @@
}
// ISR for ac97, shared with pxa2xx-ac97, and later with ucb1400-gpio and ucb1400-adc
-static irqreturn_t ucb1400_irq(int irqnr, void *devid, struct pt_regs *regs)
+static irqreturn_t ucb1400_irq(int irqnr, void *devid)
{
u32 status;
struct ucb1400 *ucb = (struct ucb1400 *) devid;
@@ -549,7 +548,7 @@
}
-static void palmtc_ucb1400_irq_queuework(void *data)
+static void palmtc_ucb1400_irq_queuework(struct work_struct *data)
{
struct ucb1400 *ucb = (struct ucb1400 *) data;
u16 val,val1,val2;
@@ -693,7 +692,7 @@
input_set_abs_params(ucb->idev, ABS_PRESSURE, UCB_TS_PRESSURE_MIN, UCB_TS_PRESSURE_MAX, 1, 1);
ucb->idev->name = "Palm Tungsten C touchscreen (ucb1400)";
- ucb->idev->dev = dev;
+/* ucb->idev->dev = dev; */
input_register_device(ucb->idev);
// clear ucb1400-ints if there are
@@ -726,7 +725,7 @@
}
// init workqueue for irq-handling
ucb->palmtc_ucb1400_workqueue = create_workqueue("kpalmtcucbw");
- INIT_WORK(&ucb->palmtc_ucb1400_work, palmtc_ucb1400_irq_queuework, ucb);
+ INIT_WORK(&ucb->palmtc_ucb1400_work, palmtc_ucb1400_irq_queuework);
//adc
val=ucb1400_reg_read(ucb, UCB_CSR2);
Deleted: linux4palm/linux/trunk/arch/arm/mach-pxa/palmtc/ptc_ucb1400.h
===================================================================
--- linux4palm/linux/trunk/arch/arm/mach-pxa/palmtc/ptc_ucb1400.h 2007-04-18 10:12:50 UTC (rev 957)
+++ linux4palm/linux/trunk/arch/arm/mach-pxa/palmtc/ptc_ucb1400.h 2007-04-19 18:09:06 UTC (rev 958)
@@ -1,122 +0,0 @@
-/*
- * linux/drivers/mfd/ucb1400.h
- *
- * Copyright (C) 2001 Russell King, All Rights Reserved.
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License.
- */
-
-/* ucb1400 aclink register mappings: */
-
-#define UCB_IO_DATA 0x5a
-#define UCB_IO_DIR 0x5c
-#define UCB_IE_RIS 0x5e
-#define UCB_IE_FAL 0x60
-#define UCB_IE_STATUS 0x62
-#define UCB_IE_CLEAR 0x62
-#define UCB_TS_CR 0x64
-#define UCB_ADC_CR 0x66
-#define UCB_ADC_DATA 0x68
-#define UCB_CSR1 0x6a
-#define UCB_CSR2 0x6c
-#define UCB_IE_EXTRA 0x70
-
-#define UCB_CS_GPIO_AC97_INT (1 << 2)
-
-#define UCB_ADC_DAT(x) ((x) & 0x3ff)
-
-#define UCB_IO_0 (1 << 0)
-#define UCB_IO_1 (1 << 1)
-#define UCB_IO_2 (1 << 2)
-#define UCB_IO_3 (1 << 3)
-#define UCB_IO_4 (1 << 4)
-#define UCB_IO_5 (1 << 5)
-#define UCB_IO_6 (1 << 6)
-#define UCB_IO_7 (1 << 7)
-#define UCB_IO_8 (1 << 8)
-#define UCB_IO_9 (1 << 9)
-
-#define UCB_IE_ADC (1 << 11)
-#define UCB_IE_TSPX (1 << 12)
-#define UCB_IE_TSMX (1 << 13)
-#define UCB_IE_TCLIP (1 << 14)
-#define UCB_IE_ACLIP (1 << 15)
-#define UCB_IE_IO (0x3FF)
-
-#define UCB_TC_B_VOICE_ENA (1 << 3)
-#define UCB_TC_B_CLIP (1 << 4)
-#define UCB_TC_B_ATT (1 << 6)
-#define UCB_TC_B_SIDE_ENA (1 << 11)
-#define UCB_TC_B_MUTE (1 << 13)
-#define UCB_TC_B_IN_ENA (1 << 14)
-#define UCB_TC_B_OUT_ENA (1 << 15)
-
-#define UCB_AC_B_LOOP (1 << 8)
-#define UCB_AC_B_MUTE (1 << 13)
-#define UCB_AC_B_IN_ENA (1 << 14)
-#define UCB_AC_B_OUT_ENA (1 << 15)
-
-#define UCB_TS_CR_TSMX_POW (1 << 0)
-#define UCB_TS_CR_TSPX_POW (1 << 1)
-#define UCB_TS_CR_TSMY_POW (1 << 2)
-#define UCB_TS_CR_TSPY_POW (1 << 3)
-#define UCB_TS_CR_TSMX_GND (1 << 4)
-#define UCB_TS_CR_TSPX_GND (1 << 5)
-#define UCB_TS_CR_TSMY_GND (1 << 6)
-#define UCB_TS_CR_TSPY_GND (1 << 7)
-#define UCB_TS_CR_MODE_INT (0 << 8)
-#define UCB_TS_CR_MODE_PRES (1 << 8)
-#define UCB_TS_CR_MODE_POS (2 << 8)
-#define UCB_TS_CR_BIAS_ENA (1 << 11)
-#define UCB_TS_CR_TSPX (1 << 12)
-#define UCB_TS_CR_TSMX (1 << 13)
-
-#define UCB_ADC_SYNC_ENA (1 << 0)
-#define UCB_ADC_VREFBYP_CON (1 << 1)
-#define UCB_ADC_INP_TSPX (0 << 2)
-#define UCB_ADC_INP_TSMX (1 << 2)
-#define UCB_ADC_INP_TSPY (2 << 2)
-#define UCB_ADC_INP_TSMY (3 << 2)
-#define UCB_ADC_INP_AD0 (4 << 2)
-#define UCB_ADC_INP_AD1 (5 << 2)
-#define UCB_ADC_INP_AD2 (6 << 2)
-#define UCB_ADC_INP_AD3 (7 << 2)
-#define UCB_ADC_EXT_REF (1 << 5)
-#define UCB_ADC_START (1 << 7)
-#define UCB_ADC_ENA (1 << 15)
-
-#define UCB_ADC_FILTER_ENA (1 << 12)
-
-#define UCB_ADC_DATA_MASK 0x3ff
-#define UCB_ADC_DATA_VALID (1 << 15)
-
-#define UCB_ID_1400 0x4304
-
-#define UCB_MODE 0x0d
-#define UCB_MODE_DYN_VFLAG_ENA (1 << 12)
-#define UCB_MODE_AUD_OFF_CAN (1 << 13)
-
-#define UCB_NOSYNC 0
-#define UCB_SYNC 1
-
-#define UCB_RISING (1 << 0)
-#define UCB_FALLING (1 << 1)
-
-
-// constants on palm tc
-#define UCB_TS_X_MIN 100
-#define UCB_TS_X_MAX 870
-#define UCB_TS_Y_MIN 270
-#define UCB_TS_Y_MAX 970
-#define UCB_TS_PRESSURE_MIN 0
-#define UCB_TS_PRESSURE_MAX 740
-#define UCB_TS_FUZZ 15
-
-#define UCB_BATT_HIGH 560 // adc "ticks" not mV !
-#define UCB_BATT_LOW 490
-#define UCB_BATT_CRITICAL 480
-
-#define UCB_BATT_DURATION 600 // battery duration in minutes
-#define UCB_ADC_TIMEOUT 50
Modified: linux4palm/linux/trunk/drivers/usb/gadget/pxa2xx_udc.c
===================================================================
--- linux4palm/linux/trunk/drivers/usb/gadget/pxa2xx_udc.c 2007-04-18 10:12:50 UTC (rev 957)
+++ linux4palm/linux/trunk/drivers/usb/gadget/pxa2xx_udc.c 2007-04-19 18:09:06 UTC (rev 958)
@@ -2525,7 +2525,7 @@
/*
* probe - binds to the platform device
*/
-static int __init pxa2xx_udc_probe(struct platform_device *pdev)
+static int pxa2xx_udc_probe(struct platform_device *pdev)
{
struct pxa2xx_udc *dev = &memory;
int retval, out_dma = 1, vbus_irq;
@@ -2677,7 +2677,7 @@
pullup_off();
}
-static int __exit pxa2xx_udc_remove(struct platform_device *pdev)
+static int pxa2xx_udc_remove(struct platform_device *pdev)
{
struct pxa2xx_udc *dev = platform_get_drvdata(pdev);
Added: linux4palm/linux/trunk/include/asm-arm/arch-pxa/palmtc-gpio.h
===================================================================
--- linux4palm/linux/trunk/include/asm-arm/arch-pxa/palmtc-gpio.h (rev 0)
+++ linux4palm/linux/trunk/include/asm-arm/arch-pxa/palmtc-gpio.h 2007-04-19 18:09:06 UTC (rev 958)
@@ -0,0 +1,26 @@
+/*
+ * palmtc-gpio.h
+ *
+ * Authors: Holger Bocklet <bit...@gm...>
+ *
+ */
+
+#ifndef _PALMTC_GPIO_H_
+#define _PALMTC_GPIO_H_
+
+#include <asm/arch/pxa-regs.h>
+
+/* Palm Tungsten C GPIOs */
+#define GPIO_NR_PALMTC_EARPHONE_DETECT 2
+#define GPIO_NR_PALMLD_USB_DETECT 4
+#define GPIO_NR_PALMLD_POWER_DETECT 5
+#define GPIO_NR_PALMTC_HOTSYNC_BUTTON 7
+#define GPIO_NR_PALMTC_SD_DETECT 12 // low->high when out, high->low when inserted
+#define GPIO_NR_PALMLD_BL_POWER 16
+
+//#define GPIO_NR_PALMLD_STD_RXD 46 /* IRDA */
+//#define GPIO_NR_PALMLD_STD_TXD 47
+
+#define IRQ_GPIO_PALMTC_SD_DETECT IRQ_GPIO(GPIO_NR_PALMTC_SD_DETECT)
+
+#endif /* _PALMTC_GPIO_H_ */
Added: linux4palm/linux/trunk/include/asm-arm/arch-pxa/ptc_ucb1400.h
===================================================================
--- linux4palm/linux/trunk/include/asm-arm/arch-pxa/ptc_ucb1400.h (rev 0)
+++ linux4palm/linux/trunk/include/asm-arm/arch-pxa/ptc_ucb1400.h 2007-04-19 18:09:06 UTC (rev 958)
@@ -0,0 +1,122 @@
+/*
+ * linux/drivers/mfd/ucb1400.h
+ *
+ * Copyright (C) 2001 Russell King, All Rights Reserved.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License.
+ */
+
+/* ucb1400 aclink register mappings: */
+
+#define UCB_IO_DATA 0x5a
+#define UCB_IO_DIR 0x5c
+#define UCB_IE_RIS 0x5e
+#define UCB_IE_FAL 0x60
+#define UCB_IE_STATUS 0x62
+#define UCB_IE_CLEAR 0x62
+#define UCB_TS_CR 0x64
+#define UCB_ADC_CR 0x66
+#define UCB_ADC_DATA 0x68
+#define UCB_CSR1 0x6a
+#define UCB_CSR2 0x6c
+#define UCB_IE_EXTRA 0x70
+
+#define UCB_CS_GPIO_AC97_INT (1 << 2)
+
+#define UCB_ADC_DAT(x) ((x) & 0x3ff)
+
+#define UCB_IO_0 (1 << 0)
+#define UCB_IO_1 (1 << 1)
+#define UCB_IO_2 (1 << 2)
+#define UCB_IO_3 (1 << 3)
+#define UCB_IO_4 (1 << 4)
+#define UCB_IO_5 (1 << 5)
+#define UCB_IO_6 (1 << 6)
+#define UCB_IO_7 (1 << 7)
+#define UCB_IO_8 (1 << 8)
+#define UCB_IO_9 (1 << 9)
+
+#define UCB_IE_ADC (1 << 11)
+#define UCB_IE_TSPX (1 << 12)
+#define UCB_IE_TSMX (1 << 13)
+#define UCB_IE_TCLIP (1 << 14)
+#define UCB_IE_ACLIP (1 << 15)
+#define UCB_IE_IO (0x3FF)
+
+#define UCB_TC_B_VOICE_ENA (1 << 3)
+#define UCB_TC_B_CLIP (1 << 4)
+#define UCB_TC_B_ATT (1 << 6)
+#define UCB_TC_B_SIDE_ENA (1 << 11)
+#define UCB_TC_B_MUTE (1 << 13)
+#define UCB_TC_B_IN_ENA (1 << 14)
+#define UCB_TC_B_OUT_ENA (1 << 15)
+
+#define UCB_AC_B_LOOP (1 << 8)
+#define UCB_AC_B_MUTE (1 << 13)
+#define UCB_AC_B_IN_ENA (1 << 14)
+#define UCB_AC_B_OUT_ENA (1 << 15)
+
+#define UCB_TS_CR_TSMX_POW (1 << 0)
+#define UCB_TS_CR_TSPX_POW (1 << 1)
+#define UCB_TS_CR_TSMY_POW (1 << 2)
+#define UCB_TS_CR_TSPY_POW (1 << 3)
+#define UCB_TS_CR_TSMX_GND (1 << 4)
+#define UCB_TS_CR_TSPX_GND (1 << 5)
+#define UCB_TS_CR_TSMY_GND (1 << 6)
+#define UCB_TS_CR_TSPY_GND (1 << 7)
+#define UCB_TS_CR_MODE_INT (0 << 8)
+#define UCB_TS_CR_MODE_PRES (1 << 8)
+#define UCB_TS_CR_MODE_POS (2 << 8)
+#define UCB_TS_CR_BIAS_ENA (1 << 11)
+#define UCB_TS_CR_TSPX (1 << 12)
+#define UCB_TS_CR_TSMX (1 << 13)
+
+#define UCB_ADC_SYNC_ENA (1 << 0)
+#define UCB_ADC_VREFBYP_CON (1 << 1)
+#define UCB_ADC_INP_TSPX (0 << 2)
+#define UCB_ADC_INP_TSMX (1 << 2)
+#define UCB_ADC_INP_TSPY (2 << 2)
+#define UCB_ADC_INP_TSMY (3 << 2)
+#define UCB_ADC_INP_AD0 (4 << 2)
+#define UCB_ADC_INP_AD1 (5 << 2)
+#define UCB_ADC_INP_AD2 (6 << 2)
+#define UCB_ADC_INP_AD3 (7 << 2)
+#define UCB_ADC_EXT_REF (1 << 5)
+#define UCB_ADC_START (1 << 7)
+#define UCB_ADC_ENA (1 << 15)
+
+#define UCB_ADC_FILTER_ENA (1 << 12)
+
+#define UCB_ADC_DATA_MASK 0x3ff
+#define UCB_ADC_DATA_VALID (1 << 15)
+
+#define UCB_ID_1400 0x4304
+
+#define UCB_MODE 0x0d
+#define UCB_MODE_DYN_VFLAG_ENA (1 << 12)
+#define UCB_MODE_AUD_OFF_CAN (1 << 13)
+
+#define UCB_NOSYNC 0
+#define UCB_SYNC 1
+
+#define UCB_RISING (1 << 0)
+#define UCB_FALLING (1 << 1)
+
+
+// constants on palm tc
+#define UCB_TS_X_MIN 100
+#define UCB_TS_X_MAX 870
+#define UCB_TS_Y_MIN 270
+#define UCB_TS_Y_MAX 970
+#define UCB_TS_PRESSURE_MIN 0
+#define UCB_TS_PRESSURE_MAX 740
+#define UCB_TS_FUZZ 15
+
+#define UCB_BATT_HIGH 560 // adc "ticks" not mV !
+#define UCB_BATT_LOW 490
+#define UCB_BATT_CRITICAL 480
+
+#define UCB_BATT_DURATION 600 // battery duration in minutes
+#define UCB_ADC_TIMEOUT 50
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <pet...@us...> - 2007-05-01 14:43:11
|
Revision: 963
http://svn.sourceforge.net/hackndev/?rev=963&view=rev
Author: petrblaha
Date: 2007-05-01 07:43:07 -0700 (Tue, 01 May 2007)
Log Message:
-----------
Modified Paths:
--------------
linux4palm/linux/trunk/Makefile
linux4palm/linux/trunk/arch/arm/mach-pxa/palmt650/Kconfig
linux4palm/linux/trunk/arch/arm/mach-pxa/palmt650/Makefile
linux4palm/linux/trunk/arch/arm/mach-pxa/palmt650/palmt650.c
linux4palm/linux/trunk/arch/arm/mach-pxa/pxa27x.c
linux4palm/linux/trunk/drivers/leds/leds-palmt650.c
linux4palm/linux/trunk/drivers/misc/Kconfig
linux4palm/linux/trunk/drivers/misc/Makefile
linux4palm/linux/trunk/drivers/video/logo/Makefile
linux4palm/linux/trunk/include/asm-arm/arch-pxa/palmt650-gpio.h
Added Paths:
-----------
linux4palm/linux/trunk/arch/arm/mach-pxa/palmt650/palmt650_pm.c
Modified: linux4palm/linux/trunk/Makefile
===================================================================
--- linux4palm/linux/trunk/Makefile 2007-04-30 11:41:31 UTC (rev 962)
+++ linux4palm/linux/trunk/Makefile 2007-05-01 14:43:07 UTC (rev 963)
@@ -183,7 +183,7 @@
# Note: Some architectures assign CROSS_COMPILE in their arch/*/Makefile
ARCH := arm
-CROSS_COMPILE ?= arm-softfloat-linux-gnu-
+CROSS_COMPILE ?= arm-none-eabi-
# Architecture as present in compile.h
UTS_MACHINE := $(ARCH)
Modified: linux4palm/linux/trunk/arch/arm/mach-pxa/palmt650/Kconfig
===================================================================
--- linux4palm/linux/trunk/arch/arm/mach-pxa/palmt650/Kconfig 2007-04-30 11:41:31 UTC (rev 962)
+++ linux4palm/linux/trunk/arch/arm/mach-pxa/palmt650/Kconfig 2007-05-01 14:43:07 UTC (rev 963)
@@ -6,3 +6,9 @@
Palm Treo 650. Currently there is only basic support
for this PDA.
+config MACH_XSCALE_PALMTREO650_PM
+ tristate "Palm Treo 650 Power Management support"
+ depends on MACH_XSCALE_PALMTREO650
+ default y if MACH_XSCALE_PALMTREO650
+ help
+ Enables support for suspend/resume the PalmOne treo 650.
Modified: linux4palm/linux/trunk/arch/arm/mach-pxa/palmt650/Makefile
===================================================================
--- linux4palm/linux/trunk/arch/arm/mach-pxa/palmt650/Makefile 2007-04-30 11:41:31 UTC (rev 962)
+++ linux4palm/linux/trunk/arch/arm/mach-pxa/palmt650/Makefile 2007-05-01 14:43:07 UTC (rev 963)
@@ -2,5 +2,5 @@
# Makefile for Palm Treo 650 support
#
-obj-$(CONFIG_MACH_XSCALE_PALMTREO650) += palmt650.o
-
+obj-$(CONFIG_MACH_XSCALE_PALMTREO650) += palmt650.o
+obj-$(CONFIG_MACH_XSCALE_PALMTREO650_PM) += palmt650_pm.o
Modified: linux4palm/linux/trunk/arch/arm/mach-pxa/palmt650/palmt650.c
===================================================================
--- linux4palm/linux/trunk/arch/arm/mach-pxa/palmt650/palmt650.c 2007-04-30 11:41:31 UTC (rev 962)
+++ linux4palm/linux/trunk/arch/arm/mach-pxa/palmt650/palmt650.c 2007-05-01 14:43:07 UTC (rev 963)
@@ -96,9 +96,7 @@
static void palmt650_irda_transceiver_mode(struct device *dev, int mode)
{
-#if 0
- SET_PALMT650_GPIO(IRDA_SD, mode & IR_OFF);
-#endif
+/* SET_PALMT650_GPIO(IRDA_SD, mode & IR_OFF); */
}
static struct pxaficp_platform_data palmt650_ficp_platform_data = {
@@ -109,7 +107,6 @@
/*********************************************************
* LEDs
*********************************************************/
-
static struct platform_device palmt650_led = {
.name = "palmt650-led",
.id = -1,
@@ -188,68 +185,68 @@
.keycodes = {
{ /* row 0 */
KEY_O, // "O"
- KEY_LEFT, // "5-Way Left" },
- KEY_RIGHTSHIFT, // "Alternate" },
+ KEY_DOWN, // "5-Way Left" },
+ -1, // "Alternate" },
KEY_L, // "L" },
KEY_A, // "A" },
KEY_Q, // "Q" },
- KEY_RIGHTCTRL, // "Right Shift" },
+ KEY_RIGHTCTRL, // "Right Shift" },
}, { /* row 1 */
KEY_P, // "P" },
- KEY_RIGHT, // "5-Way Right" },
+ KEY_UP, // "5-Way Right" },
KEY_LEFTSHIFT, //"Left Shift" },
KEY_Z, // "Z" },
KEY_S, // "S" },
KEY_W, // "W" },
- -1, // "Unused" },
+ -1, // "Unused" },
}, { /* row 2 */
- KEY_F1, // "Phone" },
- KEY_UP, // "5-Way Up" },
+ -1, // "Phone" },
+ KEY_LEFT, // "5-Way Up" },
KEY_0, // "0" },
KEY_X, // "X" },
KEY_D, // "D" },
KEY_E, // "E" },
- -1, // "Unused" },
+ -1, // "Unused" },
}, { /* row 3 */
- KEY_F2, // "Calendar" },
- KEY_DOWN, // "5-Way Down" },
- KEY_SPACE, // "Space" },
+ KEY_F10, // "Calendar" },
+ KEY_RIGHT, // "5-Way Down" },
+ KEY_SPACE, // "Space" },
KEY_C, // "C" },
KEY_F, // "F" },
KEY_R, // "R" },
- -1, // "Unused" },
+ -1, // "Unused" },
}, { /* row 4 */
- KEY_F3, // "Mail" },
- KEY_SELECT, // "5-Way Center" },
- KEY_HOME, // "Unused" },
+ KEY_F12, // "Mail" },
+ KEY_ENTER, // "5-Way Center" },
+ KEY_F9, // "HOME" },
KEY_V, // "V" },
KEY_G, // "G" },
KEY_T, // "T" },
- -1, // "Unused" },
+ -1, // "Unused" },
}, { /* row 5 */
- KEY_F4, // "Off" },
+ -1, // "Off" },
KEY_VOLUMEUP, // "Volume Up" },
- KEY_DOT, // "." },
+ KEY_DOT, // "." },
KEY_B, // "B" },
KEY_H, // "H" },
KEY_Y, // "Y" },
- -1, // "Unused" },
+ -1, // "Unused" },
}, { /* row 6 */
- KEY_F5, // "Mute" },
+ KEY_F11, // "Mute" },
KEY_VOLUMEDOWN, // "Volume Down" },
- KEY_KPENTER, // "Return" },
+ KEY_ENTER, // "Return" },
KEY_N, // "N" },
KEY_J, // "J" },
KEY_U, // "U" },
- -1, // "Unused" },
+ -1, // "Unused" },
}, { /* row 7 */
KEY_RIGHTALT, // "Alt" },
- KEY_MENU, // "Unused" },
- KEY_BACKSPACE, // "P" },
+ -1, // "Unused" },
+ KEY_BACKSPACE, // "P" },
KEY_M, // "M"
KEY_K, // "K"
KEY_I, // "I"
- -1, // "Unused" },
+ -1, // "Unused" },
},
},
@@ -282,7 +279,9 @@
static struct platform_device *devices[] __initdata = {
- &palmt650_kbd, &palmt650_ac97, &palmt650_bl,
+ &palmt650_kbd,
+ &palmt650_ac97,
+ &palmt650_bl,
&palmt650_led,
};
@@ -344,8 +343,8 @@
pxa_set_udc_info( &palmt650_udc_mach_info );
platform_add_devices(devices, ARRAY_SIZE(devices));
-#if 0
/* configure power switch to resume from standby */
+#if 0
PWER |= PWER_GPIO12;
PRER |= PWER_GPIO12;
#endif
@@ -360,4 +359,3 @@
.timer = &pxa_timer,
.init_machine = palmt650_init,
MACHINE_END
-
Added: linux4palm/linux/trunk/arch/arm/mach-pxa/palmt650/palmt650_pm.c
===================================================================
--- linux4palm/linux/trunk/arch/arm/mach-pxa/palmt650/palmt650_pm.c (rev 0)
+++ linux4palm/linux/trunk/arch/arm/mach-pxa/palmt650/palmt650_pm.c 2007-05-01 14:43:07 UTC (rev 963)
@@ -0,0 +1,134 @@
+/************************************************************************
+ * PalmOne Zire72 suspend/resume support *
+ * *
+ * Authors: Jan Herman <2h...@se...> *
+ * Sergey Lapin <sla...@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/kernel.h>
+#include <linux/device.h>
+#include <linux/pm.h>
+#include <linux/fb.h>
+#include <linux/platform_device.h>
+#include <asm/mach-types.h>
+#include <asm/hardware.h>
+
+#include <asm/arch/pm.h>
+#include <asm/arch/pxa-pm_ll.h>
+#include <asm/arch/hardware.h>
+#include <asm/arch/pxa-regs.h>
+
+#include <asm/arch/palmt650-gpio.h>
+#include <asm/arch/pxa27x_keyboard.h>
+
+#ifdef CONFIG_PM
+static int palmt650_suspend(struct device *dev, pm_message_t state)
+{
+ /* Wake-Up on RTC event, etc. */
+ PWER |= PWER_RTC | PWER_WEP1;
+
+ /* Wakeup by keyboard :) */
+ PKWR = 0xe0000;
+
+ /* Enabled Deep-Sleep mode */
+ PCFR |= PCFR_DS;
+
+ /* Low power mode */
+ PCFR |= PCFR_OPDE;
+
+ /* 3.6.8.1 */
+ while(!(OSCC & OSCC_OOK))
+ {}
+
+ /* Turn off LCD power */
+ SET_PALMT650_GPIO(LCD_POWER,0);
+ /* Turn screen off */
+ SET_PALMT650_GPIO(LCD_SCREEN,0);
+ /* Turn off USB power */
+/* SET_PALMT650_GPIO(USB_POWER,0); */
+
+
+ /* disable GPIO reset - DO NOT REMOVE! */
+ PCFR = PCFR_GPROD;
+/* PCFR &= PCFR_GPR_EN; */
+
+ return 0;
+}
+
+static int palmt650_resume(struct device *dev)
+{
+
+ /* Disabled Deep-Sleep mode ?? */
+ PCFR &= PCFR_DS;
+
+ /* Re-enable GPIO reset */
+ PCFR |= PCFR_GPR_EN; /* !! DO NOT REMOVE !! THIS IS NECCESARY FOR ENABLE PALM RESET !! */
+
+
+ /* Here are all of special to resume PalmOne treo 650 */
+
+ /* Turn on LCD power */
+ SET_PALMT650_GPIO(LCD_POWER,1);
+ /* Turn screen on */
+ SET_PALMT650_GPIO(LCD_SCREEN,1);
+ /* Turn on USB power */
+/* SET_PALMT650_GPIO(USB_POWER,1); */
+
+ return 0;
+}
+#else
+#define palmt650_suspend NULL
+#define palmt650_resume NULL
+#endif
+
+static void palmt650_pxa_ll_pm_suspend(unsigned long resume_addr)
+{
+ /* For future */
+ return;
+}
+
+static void palmt650_pxa_ll_pm_resume(void)
+{
+ /* For future */
+}
+
+struct pxa_ll_pm_ops palmt650_ll_pm_ops = {
+ .suspend = palmt650_pxa_ll_pm_suspend,
+ .resume = palmt650_pxa_ll_pm_resume,
+};
+
+static int palmt650_pm_probe(struct device *dev)
+{
+ printk(KERN_NOTICE "PalmOne Treo 650 power management driver registered\n");
+ return 0;
+}
+
+struct device_driver palmt650_pm_driver = {
+ .name = "palmt650-pm",
+ .bus = &platform_bus_type,
+ .probe = palmt650_pm_probe,
+ .suspend = palmt650_suspend,
+ .resume = palmt650_resume,
+};
+
+static int __init palmt650_pm_init(void)
+{
+ return driver_register(&palmt650_pm_driver);
+}
+
+static void __exit palmt650_pm_exit(void)
+{
+ driver_unregister(&palmt650_pm_driver);
+}
+
+module_init(palmt650_pm_init);
+module_exit(palmt650_pm_exit);
+
+MODULE_AUTHOR("Jan Herman <2h...@se...>, Sergey Lapin <sla...@gm...>");
+MODULE_DESCRIPTION("PalmOne Treo 650 power management driver");
+MODULE_LICENSE("GPL");
Modified: linux4palm/linux/trunk/arch/arm/mach-pxa/pxa27x.c
===================================================================
--- linux4palm/linux/trunk/arch/arm/mach-pxa/pxa27x.c 2007-04-30 11:41:31 UTC (rev 962)
+++ linux4palm/linux/trunk/arch/arm/mach-pxa/pxa27x.c 2007-05-01 14:43:07 UTC (rev 963)
@@ -139,7 +139,8 @@
extern void pxa_cpu_standby(void);
extern void pxa_cpu_suspend(unsigned int);
#if defined(CONFIG_MACH_XSCALE_PALMLD) || defined(CONFIG_MACH_XSCALE_PALMTX) \
- || defined(CONFIG_MACH_PALMZ72) || defined(CONFIG_MACH_XSCALE_PALMTT5)
+ || defined(CONFIG_MACH_PALMZ72) || defined(CONFIG_MACH_XSCALE_PALMTT5) \
+ || defined(CONFIG_MACH_XSCALE_PALMTREO650)
/* For safety. suspend_mem puts the device in an unresetable state.
* On TX one needs to desolder the battery to get out of it.
*/
Modified: linux4palm/linux/trunk/drivers/leds/leds-palmt650.c
===================================================================
--- linux4palm/linux/trunk/drivers/leds/leds-palmt650.c 2007-04-30 11:41:31 UTC (rev 962)
+++ linux4palm/linux/trunk/drivers/leds/leds-palmt650.c 2007-05-01 14:43:07 UTC (rev 963)
@@ -7,7 +7,6 @@
*
*/
-#include <linux/config.h>
#include <linux/kernel.h>
#include <linux/init.h>
#include <linux/platform_device.h>
@@ -97,6 +96,7 @@
};
#ifdef CONFIG_PM
+
static int palmt650_led_suspend(struct platform_device *dev, pm_message_t state)
{
led_classdev_suspend(&palmt650_green_led);
@@ -148,10 +148,12 @@
asic6_write(0x12, 0xe3);
/* FIXME: should be moved to seperate phone driver */
+/*
printk("Attempting to reset phone module...\n");
asic6_write(0x48, asic6_read(0x48) & ~0x40);
msleep(5);
asic6_write(0x48, asic6_read(0x48) | 0x40);
+*/
return ret;
vibra_err:
Modified: linux4palm/linux/trunk/drivers/misc/Kconfig
===================================================================
--- linux4palm/linux/trunk/drivers/misc/Kconfig 2007-04-30 11:41:31 UTC (rev 962)
+++ linux4palm/linux/trunk/drivers/misc/Kconfig 2007-05-01 14:43:07 UTC (rev 963)
@@ -34,6 +34,13 @@
Say Y here to enable monitoring of battery and charger using
sysfs interface.
+config ASIC6ED
+ tristate "ASIC6ED"
+ depends on ARCH_PXA
+ default n
+ help
+ ASIC6 register editor, only for debugging or testing!!!
+
config GPIOED
tristate "GPIOED"
depends on ARCH_PXA
Modified: linux4palm/linux/trunk/drivers/misc/Makefile
===================================================================
--- linux4palm/linux/trunk/drivers/misc/Makefile 2007-04-30 11:41:31 UTC (rev 962)
+++ linux4palm/linux/trunk/drivers/misc/Makefile 2007-05-01 14:43:07 UTC (rev 963)
@@ -15,6 +15,7 @@
obj-$(CONFIG_BATTCHARGE_MONITOR) += battchargemon.o
obj-$(CONFIG_GPIOED) += gpioed.o
obj-$(CONFIG_GPIOEDNG) += gpioed-ng.o
+obj-$(CONFIG_ASIC6ED) += asic6ed.o
obj-$(CONFIG_MCP) += mcp-core.o
obj-$(CONFIG_MCP_SA1100) += mcp-sa1100.o
Modified: linux4palm/linux/trunk/drivers/video/logo/Makefile
===================================================================
--- linux4palm/linux/trunk/drivers/video/logo/Makefile 2007-04-30 11:41:31 UTC (rev 962)
+++ linux4palm/linux/trunk/drivers/video/logo/Makefile 2007-05-01 14:43:07 UTC (rev 963)
@@ -13,7 +13,6 @@
obj-$(CONFIG_LOGO_SUPERH_VGA16) += logo_superh_vga16.o
obj-$(CONFIG_LOGO_SUPERH_CLUT224) += logo_superh_clut224.o
obj-$(CONFIG_LOGO_M32R_CLUT224) += logo_m32r_clut224.o
-
# How to generate logo's
# Use logo-cfiles to retrieve list of .c files to be built
Modified: linux4palm/linux/trunk/include/asm-arm/arch-pxa/palmt650-gpio.h
===================================================================
--- linux4palm/linux/trunk/include/asm-arm/arch-pxa/palmt650-gpio.h 2007-04-30 11:41:31 UTC (rev 962)
+++ linux4palm/linux/trunk/include/asm-arm/arch-pxa/palmt650-gpio.h 2007-05-01 14:43:07 UTC (rev 963)
@@ -33,11 +33,14 @@
#define ASIC6_LED2_AUTOSTOP __REG16(0x080000aa)
/* Palm Treo 650 GPIOs */
-#define GPIO_NR_PALMT650_POWER_DETECT 15
+#define GPIO_NR_PALMT650_POWER_DETECT 0
#define GPIO_NR_PALMT650_VIBRATE_EN 26
#define GPIO_NR_PALMT650_SILENT_SWITCH 33
#define GPIO_NR_PALMT650_WM9712_IRQ 90
#define GPIO_NR_PALMT650_SD_DETECT_N 113 /* SD card inserted; RE FE; Input */
+#define GPIO_NR_PALMT650_LCD_POWER 20
+#define GPIO_NR_PALMT650_LCD_SCREEN 77
+#define GPIO_NR_PALMT650_USB_DETECT 9
#define GPIO_NR_PALMT650_KP_MKIN0 100
#define GPIO_NR_PALMT650_KP_MKIN1 101
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <mar...@us...> - 2007-05-01 15:31:46
|
Revision: 964
http://svn.sourceforge.net/hackndev/?rev=964&view=rev
Author: marex_z71
Date: 2007-05-01 08:31:44 -0700 (Tue, 01 May 2007)
Log Message:
-----------
l4p: fix what previous commit screwed, make a few things look better
Modified Paths:
--------------
linux4palm/linux/trunk/Makefile
linux4palm/linux/trunk/arch/arm/mach-pxa/palmt650/palmt650.c
linux4palm/linux/trunk/drivers/misc/Kconfig
linux4palm/linux/trunk/drivers/misc/Makefile
linux4palm/linux/trunk/drivers/video/logo/Makefile
Modified: linux4palm/linux/trunk/Makefile
===================================================================
--- linux4palm/linux/trunk/Makefile 2007-05-01 14:43:07 UTC (rev 963)
+++ linux4palm/linux/trunk/Makefile 2007-05-01 15:31:44 UTC (rev 964)
@@ -183,7 +183,7 @@
# Note: Some architectures assign CROSS_COMPILE in their arch/*/Makefile
ARCH := arm
-CROSS_COMPILE ?= arm-none-eabi-
+CROSS_COMPILE ?= arm-softfloat-linux-gnu-
# Architecture as present in compile.h
UTS_MACHINE := $(ARCH)
Modified: linux4palm/linux/trunk/arch/arm/mach-pxa/palmt650/palmt650.c
===================================================================
--- linux4palm/linux/trunk/arch/arm/mach-pxa/palmt650/palmt650.c 2007-05-01 14:43:07 UTC (rev 963)
+++ linux4palm/linux/trunk/arch/arm/mach-pxa/palmt650/palmt650.c 2007-05-01 15:31:44 UTC (rev 964)
@@ -149,7 +149,8 @@
static int udc_is_connected(void)
{
- return 1111;//GPLR(GPIO_PALMLD_USB_DETECT) & GPIO_bit(GPIO_PALMLD_USB_DETECT);
+ return 1111; /* GPLR(GPIO_PALMLD_USB_DETECT) &
+ GPIO_bit(GPIO_PALMLD_USB_DETECT); */
}
static void udc_enable(int cmd)
@@ -184,69 +185,69 @@
.nr_cols = 7,
.keycodes = {
{ /* row 0 */
- KEY_O, // "O"
- KEY_DOWN, // "5-Way Left" },
- -1, // "Alternate" },
- KEY_L, // "L" },
- KEY_A, // "A" },
- KEY_Q, // "Q" },
- KEY_RIGHTCTRL, // "Right Shift" },
+ KEY_O, /* "O" */
+ KEY_DOWN, /* "5-Way Left" */
+ -1, /* "Alternate" */
+ KEY_L, /* "L" */
+ KEY_A, /* "A" */
+ KEY_Q, /* "Q" */
+ KEY_RIGHTCTRL, /* "Right Shift" */
}, { /* row 1 */
- KEY_P, // "P" },
- KEY_UP, // "5-Way Right" },
- KEY_LEFTSHIFT, //"Left Shift" },
- KEY_Z, // "Z" },
- KEY_S, // "S" },
- KEY_W, // "W" },
- -1, // "Unused" },
+ KEY_P, /* "P" */
+ KEY_UP, /* "5-Way Right" */
+ KEY_LEFTSHIFT, /* "Left Shift" */
+ KEY_Z, /* "Z" */
+ KEY_S, /* "S" */
+ KEY_W, /* "W" */
+ -1, /* "Unused" */
}, { /* row 2 */
- -1, // "Phone" },
- KEY_LEFT, // "5-Way Up" },
- KEY_0, // "0" },
- KEY_X, // "X" },
- KEY_D, // "D" },
- KEY_E, // "E" },
- -1, // "Unused" },
+ -1, /* "Phone" */
+ KEY_LEFT, /* "5-Way Up" */
+ KEY_0, /* "0" */
+ KEY_X, /* "X" */
+ KEY_D, /* "D" */
+ KEY_E, /* "E" */
+ -1, /* "Unused" */
}, { /* row 3 */
- KEY_F10, // "Calendar" },
- KEY_RIGHT, // "5-Way Down" },
- KEY_SPACE, // "Space" },
- KEY_C, // "C" },
- KEY_F, // "F" },
- KEY_R, // "R" },
- -1, // "Unused" },
+ KEY_F10, /* "Calendar" */
+ KEY_RIGHT, /* "5-Way Down" */
+ KEY_SPACE, /* "Space" */
+ KEY_C, /* "C" */
+ KEY_F, /* "F" */
+ KEY_R, /* "R" */
+ -1, /* "Unused" */
}, { /* row 4 */
- KEY_F12, // "Mail" },
- KEY_ENTER, // "5-Way Center" },
- KEY_F9, // "HOME" },
- KEY_V, // "V" },
- KEY_G, // "G" },
- KEY_T, // "T" },
- -1, // "Unused" },
+ KEY_F12, /* "Mail" */
+ KEY_ENTER, /* "5-Way Center" */
+ KEY_F9, /* "HOME" */
+ KEY_V, /* "V" */
+ KEY_G, /* "G" */
+ KEY_T, /* "T" */
+ -1, /* "Unused" */
}, { /* row 5 */
- -1, // "Off" },
- KEY_VOLUMEUP, // "Volume Up" },
- KEY_DOT, // "." },
- KEY_B, // "B" },
- KEY_H, // "H" },
- KEY_Y, // "Y" },
- -1, // "Unused" },
+ -1, /* "Off" */
+ KEY_VOLUMEUP, /* "Volume Up" */
+ KEY_DOT, /* "." */
+ KEY_B, /* "B" */
+ KEY_H, /* "H" */
+ KEY_Y, /* "Y" */
+ -1, /* "Unused" */
}, { /* row 6 */
- KEY_F11, // "Mute" },
- KEY_VOLUMEDOWN, // "Volume Down" },
- KEY_ENTER, // "Return" },
- KEY_N, // "N" },
- KEY_J, // "J" },
- KEY_U, // "U" },
- -1, // "Unused" },
+ KEY_F11, /* "Mute" */
+ KEY_VOLUMEDOWN, /* "Volume Down" */
+ KEY_ENTER, /* "Return" */
+ KEY_N, /* "N" */
+ KEY_J, /* "J" */
+ KEY_U, /* "U" */
+ -1, /* "Unused" */
}, { /* row 7 */
- KEY_RIGHTALT, // "Alt" },
- -1, // "Unused" },
- KEY_BACKSPACE, // "P" },
- KEY_M, // "M"
- KEY_K, // "K"
- KEY_I, // "I"
- -1, // "Unused" },
+ KEY_RIGHTALT, /* "Alt" */
+ -1, /* "Unused" */
+ KEY_BACKSPACE, /* "P" */
+ KEY_M, /* "M"*/
+ KEY_K, /* "K"*/
+ KEY_I, /* "I"*/
+ -1, /* "Unused" */
},
},
@@ -299,8 +300,8 @@
.vsync_len = 1,
/* fixme: these are the margins PalmOS has set,
- * they seem to work but could be better.
- */
+ * they seem to work but could be better.
+ */
.left_margin = 20,
.right_margin = 8,
.upper_margin = 8,
@@ -311,9 +312,9 @@
static struct pxafb_mach_info palmt650_lcd __initdata = {
.lccr0 = 0x4000080,
.lccr3 = 0x4700003,
- //.pxafb_backlight_power = palm_backlight_power,
- //
- //
+
+ /* .pxafb_backlight_power = palm_backlight_power, */
+
.num_modes = 1,
.modes = &palmt650_lcd_mode,
};
@@ -343,8 +344,8 @@
pxa_set_udc_info( &palmt650_udc_mach_info );
platform_add_devices(devices, ARRAY_SIZE(devices));
+#if 0
/* configure power switch to resume from standby */
-#if 0
PWER |= PWER_GPIO12;
PRER |= PWER_GPIO12;
#endif
Modified: linux4palm/linux/trunk/drivers/misc/Kconfig
===================================================================
--- linux4palm/linux/trunk/drivers/misc/Kconfig 2007-05-01 14:43:07 UTC (rev 963)
+++ linux4palm/linux/trunk/drivers/misc/Kconfig 2007-05-01 15:31:44 UTC (rev 964)
@@ -34,13 +34,6 @@
Say Y here to enable monitoring of battery and charger using
sysfs interface.
-config ASIC6ED
- tristate "ASIC6ED"
- depends on ARCH_PXA
- default n
- help
- ASIC6 register editor, only for debugging or testing!!!
-
config GPIOED
tristate "GPIOED"
depends on ARCH_PXA
Modified: linux4palm/linux/trunk/drivers/misc/Makefile
===================================================================
--- linux4palm/linux/trunk/drivers/misc/Makefile 2007-05-01 14:43:07 UTC (rev 963)
+++ linux4palm/linux/trunk/drivers/misc/Makefile 2007-05-01 15:31:44 UTC (rev 964)
@@ -15,7 +15,6 @@
obj-$(CONFIG_BATTCHARGE_MONITOR) += battchargemon.o
obj-$(CONFIG_GPIOED) += gpioed.o
obj-$(CONFIG_GPIOEDNG) += gpioed-ng.o
-obj-$(CONFIG_ASIC6ED) += asic6ed.o
obj-$(CONFIG_MCP) += mcp-core.o
obj-$(CONFIG_MCP_SA1100) += mcp-sa1100.o
Modified: linux4palm/linux/trunk/drivers/video/logo/Makefile
===================================================================
--- linux4palm/linux/trunk/drivers/video/logo/Makefile 2007-05-01 14:43:07 UTC (rev 963)
+++ linux4palm/linux/trunk/drivers/video/logo/Makefile 2007-05-01 15:31:44 UTC (rev 964)
@@ -13,6 +13,7 @@
obj-$(CONFIG_LOGO_SUPERH_VGA16) += logo_superh_vga16.o
obj-$(CONFIG_LOGO_SUPERH_CLUT224) += logo_superh_clut224.o
obj-$(CONFIG_LOGO_M32R_CLUT224) += logo_m32r_clut224.o
+
# How to generate logo's
# Use logo-cfiles to retrieve list of .c files to be built
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <mar...@us...> - 2007-06-02 16:03:10
|
Revision: 1018
http://svn.sourceforge.net/hackndev/?rev=1018&view=rev
Author: marex_z71
Date: 2007-06-02 09:03:07 -0700 (Sat, 02 Jun 2007)
Log Message:
-----------
PalmLD: GPIO Keys stuff
Modified Paths:
--------------
linux4palm/linux/trunk/arch/arm/mach-pxa/palmld/palmld.c
linux4palm/linux/trunk/include/asm-arm/arch-pxa/palmld-gpio.h
Modified: linux4palm/linux/trunk/arch/arm/mach-pxa/palmld/palmld.c
===================================================================
--- linux4palm/linux/trunk/arch/arm/mach-pxa/palmld/palmld.c 2007-06-02 12:02:54 UTC (rev 1017)
+++ linux4palm/linux/trunk/arch/arm/mach-pxa/palmld/palmld.c 2007-06-02 16:03:07 UTC (rev 1018)
@@ -306,7 +306,27 @@
},
};
+/********************************
+ * GPIO Key - Voice Memo Button *
+ ********************************/
+#ifdef CONFIG_KEYBOARD_GPIO
+static struct gpio_keys_button palmld_pxa_buttons[] = {
+ {KEY_F7, GPIO_NR_PALMLD_POWER_SWITCH, 0, "Power switch" },
+};
+static struct gpio_keys_platform_data palmld_pxa_keys_data = {
+ .buttons = palmld_pxa_buttons,
+ .nbuttons = ARRAY_SIZE(palmld_pxa_buttons),
+};
+
+static struct platform_device palmld_pxa_keys = {
+ .name = "gpio-keys",
+ .dev = {
+ .platform_data = &palmld_pxa_keys_data,
+ },
+};
+#endif
+
/********************
* Power Management *
********************/
Modified: linux4palm/linux/trunk/include/asm-arm/arch-pxa/palmld-gpio.h
===================================================================
--- linux4palm/linux/trunk/include/asm-arm/arch-pxa/palmld-gpio.h 2007-06-02 12:02:54 UTC (rev 1017)
+++ linux4palm/linux/trunk/include/asm-arm/arch-pxa/palmld-gpio.h 2007-06-02 16:03:07 UTC (rev 1018)
@@ -24,7 +24,7 @@
#define GPIO_NR_PALMLD_GPIO_RESET 1
#define GPIO_NR_PALMLD_POWER_DETECT 4
#define GPIO_NR_PALMLD_HOTSYNC_BUTTON_N 10
-#define GPIO_NR_PALMLD_POWER_SWITCH 11
+#define GPIO_NR_PALMLD_POWER_SWITCH 12
#define GPIO_NR_PALMLD_EARPHONE_DETECT 13
#define GPIO_NR_PALMLD_SD_DETECT_N 14 /* SD card inserted; RE FE; Input */
#define GPIO_NR_PALMLD_LOCK_SWITCH 15 /* keypad lock */
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <med...@us...> - 2007-06-06 02:47:23
|
Revision: 1022
http://svn.sourceforge.net/hackndev/?rev=1022&view=rev
Author: medaglia
Date: 2007-06-05 19:47:21 -0700 (Tue, 05 Jun 2007)
Log Message:
-----------
Small fixes to have this kernel building for Palm T|E2.
Modified Paths:
--------------
linux4palm/linux/trunk/Makefile
linux4palm/linux/trunk/arch/arm/mach-pxa/palmte2/palmte2.c
linux4palm/linux/trunk/arch/arm/mach-pxa/palmte2/palmte2_ac97.c
Modified: linux4palm/linux/trunk/Makefile
===================================================================
--- linux4palm/linux/trunk/Makefile 2007-06-03 10:06:21 UTC (rev 1021)
+++ linux4palm/linux/trunk/Makefile 2007-06-06 02:47:21 UTC (rev 1022)
@@ -183,7 +183,7 @@
# Note: Some architectures assign CROSS_COMPILE in their arch/*/Makefile
ARCH := arm
-CROSS_COMPILE ?= arm-softfloat-linux-gnu-
+CROSS_COMPILE ?= arm-none-eabi-
# Architecture as present in compile.h
UTS_MACHINE := $(ARCH)
Modified: linux4palm/linux/trunk/arch/arm/mach-pxa/palmte2/palmte2.c
===================================================================
--- linux4palm/linux/trunk/arch/arm/mach-pxa/palmte2/palmte2.c 2007-06-03 10:06:21 UTC (rev 1021)
+++ linux4palm/linux/trunk/arch/arm/mach-pxa/palmte2/palmte2.c 2007-06-06 02:47:21 UTC (rev 1022)
@@ -39,14 +39,14 @@
#include <sound/ac97_codec.h>
#include "../generic.h"
-#include "../drivers/serial/pxa-serial.h"
+//#include "../drivers/serial/pxa-serial.h"
#define DEBUG
/**
* IRDA
*/
-
+#if 0
static void
palmte2_irda_configure (struct uart_pxa_port *up, int enable)
{
@@ -114,6 +114,8 @@
.get_txrx = palmte2_irda_get_txrx,
};
+#endif
+
struct platform_device palmte2_buttons = {
.name = "palmte2-buttons",
.id = -1,
@@ -184,8 +186,8 @@
}
}
-
-static struct pxafb_mach_info palmte2lcd __initdata = {
+static struct pxafb_mode_info palmte2_lcd_modes[] = {
+{
.pixclock = 0,
.xres = 320,
.yres = 320,
@@ -199,6 +201,14 @@
.lower_margin = 5,
.sync = FB_SYNC_HOR_HIGH_ACT|FB_SYNC_VERT_HIGH_ACT,
+// .sync = FB_SYNC_HOR_HIGH_ACT|FB_SYNC_VERT_HIGH_ACT,
+},
+};
+
+static struct pxafb_mach_info palmte2_lcd_screen = {
+ .modes = palmte2_lcd_modes,
+ .num_modes = ARRAY_SIZE(palmte2_lcd_modes),
+
.lccr0 = 0x000000F9,
.lccr3 = 0x04700006,
.pxafb_backlight_power = palm_backlight_power,
@@ -208,9 +218,9 @@
{
GCR &= ~GCR_PRIRDY_IEN;
- set_pxa_fb_info(&palmte2lcd);
+ set_pxa_fb_info(&palmte2_lcd_screen);
- stuart_device.dev.platform_data = &palmte2_pxa_irda_funcs;
+// stuart_device.dev.platform_data = &palmte2_pxa_irda_funcs;
platform_add_devices(devices, ARRAY_SIZE(devices));
/*
@@ -221,7 +231,7 @@
MACHINE_START(TUNGE2, "Palm Tungsten E2")
/* Maintainer: Carlos E. Medaglia Dyonisio <ca...@ne...> */
- .phys_ram = 0xa0000000,
+ //.phys_ram = 0xa0000000,
.phys_io = 0x40000000,
.io_pg_offst = (io_p2v(0x40000000) >> 18) & 0xfffc,
.map_io = pxa_map_io,
Modified: linux4palm/linux/trunk/arch/arm/mach-pxa/palmte2/palmte2_ac97.c
===================================================================
--- linux4palm/linux/trunk/arch/arm/mach-pxa/palmte2/palmte2_ac97.c 2007-06-03 10:06:21 UTC (rev 1021)
+++ linux4palm/linux/trunk/arch/arm/mach-pxa/palmte2/palmte2_ac97.c 2007-06-06 02:47:21 UTC (rev 1022)
@@ -21,7 +21,8 @@
#include <asm/arch/pxa-regs.h>
#include <asm/arch/irqs.h>
/* XXX: Should be changed! */
-#include <asm/arch-pxa/palmld-ac97.h>
+//#include <asm/arch-pxa/palmld-ac97.h>
+#include <linux/wm97xx.h>
#include <asm/mach-types.h>
#include <asm/mach/arch.h>
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <mar...@us...> - 2007-05-05 12:51:50
|
Revision: 971
http://svn.sourceforge.net/hackndev/?rev=971&view=rev
Author: marex_z71
Date: 2007-05-05 05:51:48 -0700 (Sat, 05 May 2007)
Log Message:
-----------
PalmLD: added bluetooth stuff
Modified Paths:
--------------
linux4palm/linux/trunk/arch/arm/mach-pxa/palmld/palmld.c
linux4palm/linux/trunk/include/asm-arm/arch-pxa/palmld-gpio.h
Modified: linux4palm/linux/trunk/arch/arm/mach-pxa/palmld/palmld.c
===================================================================
--- linux4palm/linux/trunk/arch/arm/mach-pxa/palmld/palmld.c 2007-05-04 17:18:21 UTC (rev 970)
+++ linux4palm/linux/trunk/arch/arm/mach-pxa/palmld/palmld.c 2007-05-05 12:51:48 UTC (rev 971)
@@ -31,6 +31,7 @@
#include <asm/arch/pxapwm-bl.h>
#include <asm/arch/pxa-pm_ll.h>
#include <asm/arch/sx2.h>
+#include <asm/arch/serial.h>
#include <sound/driver.h>
#include <sound/core.h>
@@ -97,7 +98,54 @@
};
+/* Bluetooth */
+void bcm2035_bt_reset(int on)
+{
+ printk(KERN_NOTICE "Switch BT reset %d\n", on);
+ if (on)
+ SET_PALMLD_GPIO( BT_RESET, 1 );
+ else
+ SET_PALMLD_GPIO( BT_RESET, 0 );
+}
+EXPORT_SYMBOL(bcm2035_bt_reset);
+
+void bcm2035_bt_power(int on)
+{
+ printk(KERN_NOTICE "Switch BT power %d\n", on);
+ if (on)
+ SET_PALMLD_GPIO( BT_POWER, 1 );
+ else
+ SET_PALMLD_GPIO( BT_POWER, 0 );
+}
+EXPORT_SYMBOL(bcm2035_bt_power);
+
+
+struct bcm2035_bt_funcs {
+ void (*configure) ( int state );
+};
+
+static struct bcm2035_bt_funcs bt_funcs;
+
+static void
+bcm2035_bt_configure( int state )
+{
+ if (bt_funcs.configure != NULL)
+ bt_funcs.configure( state );
+}
+
+static struct platform_pxa_serial_funcs bcm2035_pxa_bt_funcs = {
+ .configure = bcm2035_bt_configure,
+};
+
+static struct platform_device bcm2035_bt = {
+ .name = "bcm2035-bt",
+ .id = -1,
+ .dev = {
+ .platform_data = &bt_funcs,
+ },
+};
+
/**
* AC97 audio controller
*/
@@ -283,7 +331,7 @@
static struct platform_device *devices[] __initdata = {
&palmld_kbd, &palmld_ac97, &palmld_ide, &palmld_backlight,
- &palmldled_device, &palmldusb2_device, &palmld_pm,
+ &palmldled_device, &palmldusb2_device, &palmld_pm, &bcm2035_bt,
};
/*********************************************************
@@ -375,6 +423,7 @@
pxa_gpio_mode(GPIO31_SYNC_AC97_MD);
set_pxa_fb_info( &palmld_lcd_screen );
+ pxa_set_btuart_info(&bcm2035_pxa_bt_funcs);
pxa_set_mci_info( &palmld_mci_platform_data );
platform_add_devices( devices, ARRAY_SIZE(devices) );
pxa_set_ficp_info( &palmld_ficp_platform_data );
Modified: linux4palm/linux/trunk/include/asm-arm/arch-pxa/palmld-gpio.h
===================================================================
--- linux4palm/linux/trunk/include/asm-arm/arch-pxa/palmld-gpio.h 2007-05-04 17:18:21 UTC (rev 970)
+++ linux4palm/linux/trunk/include/asm-arm/arch-pxa/palmld-gpio.h 2007-05-05 12:51:48 UTC (rev 971)
@@ -80,6 +80,19 @@
#define GPIO_NR_PALMLD_USB_INT 106
#define GPIO_NR_PALMLD_USB_POWER 118
+/* Bluetooth */
+#define GPIO_NR_PALMLD_BT_POWER 17
+#define GPIO_NR_PALMLD_BT_RXD 42
+#define GPIO_NR_PALMLD_BT_TXD 43
+#define GPIO_NR_PALMLD_BT_CTS 44
+#define GPIO_NR_PALMLD_BT_RTS 45
+#define GPIO_NR_PALMLD_BT_RESET 83
+
+#define GPIO_NR_PALMLD_BT_RXD_MD (GPIO_NR_PALMLD_BT_RXD | GPIO_ALT_FN_1_IN)
+#define GPIO_NR_PALMLD_BT_TXD_MD (GPIO_NR_PALMLD_BT_TXD | GPIO_ALT_FN_2_OUT)
+#define GPIO_NR_PALMLD_BT_UART_CTS_MD (GPIO_NR_PALMLD_BT_CTS | GPIO_ALT_FN_1_IN)
+#define GPIO_NR_PALMLD_BT_UART_RTS_MD (GPIO_NR_PALMLD_BT_RTS | GPIO_ALT_FN_2_OUT)
+
/* Utility macros */
#define GET_PALMLD_GPIO(gpio) \
(GPLR(GPIO_NR_PALMLD_ ## gpio) & GPIO_bit(GPIO_NR_PALMLD_ ## gpio))
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <mar...@us...> - 2007-05-22 19:06:26
|
Revision: 989
http://svn.sourceforge.net/hackndev/?rev=989&view=rev
Author: marex_z71
Date: 2007-05-22 12:06:24 -0700 (Tue, 22 May 2007)
Log Message:
-----------
PalmT5: added bluetooth stuff
Modified Paths:
--------------
linux4palm/linux/trunk/arch/arm/configs/palmt5_defconfig
linux4palm/linux/trunk/arch/arm/mach-pxa/palmt5/palmt5.c
linux4palm/linux/trunk/include/asm-arm/arch-pxa/palmt5-gpio.h
Modified: linux4palm/linux/trunk/arch/arm/configs/palmt5_defconfig
===================================================================
--- linux4palm/linux/trunk/arch/arm/configs/palmt5_defconfig 2007-05-22 11:23:20 UTC (rev 988)
+++ linux4palm/linux/trunk/arch/arm/configs/palmt5_defconfig 2007-05-22 19:06:24 UTC (rev 989)
@@ -1,7 +1,7 @@
#
# Automatically generated make config: don't edit
# Linux kernel version: 2.6.20-hnd0
-# Wed Apr 18 11:05:47 2007
+# Tue May 22 19:25:18 2007
#
CONFIG_ARM=y
# CONFIG_GENERIC_TIME is not set
@@ -413,15 +413,22 @@
#
CONFIG_PXA_FICP=y
CONFIG_BT=m
-# CONFIG_BT_L2CAP is not set
-# CONFIG_BT_SCO is not set
+CONFIG_BT_L2CAP=m
+CONFIG_BT_SCO=m
+CONFIG_BT_RFCOMM=m
+CONFIG_BT_RFCOMM_TTY=y
+CONFIG_BT_BNEP=m
+CONFIG_BT_BNEP_MC_FILTER=y
+CONFIG_BT_BNEP_PROTO_FILTER=y
+CONFIG_BT_HIDP=m
#
# Bluetooth device drivers
#
CONFIG_BT_HCIUART=m
-# CONFIG_BT_HCIUART_H4 is not set
+CONFIG_BT_HCIUART_H4=y
# CONFIG_BT_HCIUART_BCSP is not set
+CONFIG_BT_BCM2035UART=m
# CONFIG_BT_HCIVHCI is not set
CONFIG_IEEE80211=m
# CONFIG_IEEE80211_DEBUG is not set
@@ -620,6 +627,7 @@
# CONFIG_TOUCHSCREEN_ADC is not set
# CONFIG_TOUCHSCREEN_ADC_DEBOUNCE is not set
# CONFIG_TOUCHSCREEN_UCB1400 is not set
+# CONFIG_TOUCHSCREEN_PALMTC is not set
CONFIG_TOUCHSCREEN_WM97XX=m
# CONFIG_TOUCHSCREEN_WM9705 is not set
CONFIG_TOUCHSCREEN_WM9712=y
Modified: linux4palm/linux/trunk/arch/arm/mach-pxa/palmt5/palmt5.c
===================================================================
--- linux4palm/linux/trunk/arch/arm/mach-pxa/palmt5/palmt5.c 2007-05-22 11:23:20 UTC (rev 988)
+++ linux4palm/linux/trunk/arch/arm/mach-pxa/palmt5/palmt5.c 2007-05-22 19:06:24 UTC (rev 989)
@@ -36,6 +36,7 @@
#include <asm/arch/irda.h>
#include <asm/arch/pxa27x_keyboard.h>
#include <asm/arch/pxapwm-bl.h>
+#include <asm/arch/serial.h>
#include "../generic.h"
#include <../drivers/pcmcia/soc_common.h>
@@ -256,15 +257,61 @@
.udc_command = palmt5_udc_command,
};
+/* Bluetooth */
+void bcm2035_bt_reset(int on)
+{
+ printk(KERN_NOTICE "Switch BT reset %d\n", on);
+ if (on)
+ SET_PALMT5_GPIO( BT_RESET, 1 );
+ else
+ SET_PALMT5_GPIO( BT_RESET, 0 );
+}
+EXPORT_SYMBOL(bcm2035_bt_reset);
+void bcm2035_bt_power(int on)
+{
+ printk(KERN_NOTICE "Switch BT power %d\n", on);
+ if (on)
+ SET_PALMT5_GPIO( BT_POWER, 1 );
+ else
+ SET_PALMT5_GPIO( BT_POWER, 0 );
+}
+EXPORT_SYMBOL(bcm2035_bt_power);
+
+
+struct bcm2035_bt_funcs {
+ void (*configure) ( int state );
+};
+
+static struct bcm2035_bt_funcs bt_funcs;
+
+static void
+bcm2035_bt_configure( int state )
+{
+ if (bt_funcs.configure != NULL)
+ bt_funcs.configure( state );
+}
+
+static struct platform_pxa_serial_funcs bcm2035_pxa_bt_funcs = {
+ .configure = bcm2035_bt_configure,
+};
+
+static struct platform_device bcm2035_bt = {
+ .name = "bcm2035-bt",
+ .id = -1,
+ .dev = {
+ .platform_data = &bt_funcs,
+ },
+};
+
/*************************
* AC97 audio controller *
*************************/
static pxa2xx_audio_ops_t palmt5_audio_ops = {
/*
- .startup = palmld_audio_startup,
+ .startup = palmt5_audio_startup,
.shutdown = mst_audio_shutdown,
.suspend = mst_audio_suspend,
.resume = mst_audio_resume,
@@ -294,6 +341,7 @@
&palmt5_ac97,
&palmt5_pm,
&palmt5_backlight,
+ &bcm2035_bt,
};
/***************
@@ -372,6 +420,7 @@
pxa_gpio_mode(GPIO31_SYNC_AC97_MD);
set_pxa_fb_info ( &palmt5_lcd_screen );
+ pxa_set_btuart_info(&bcm2035_pxa_bt_funcs);
pxa_set_mci_info ( &palmt5_mci_platform_data );
pxa_set_udc_info ( &palmt5_udc_mach_info );
pxa_set_ficp_info ( &palmt5_ficp_platform_data );
Modified: linux4palm/linux/trunk/include/asm-arm/arch-pxa/palmt5-gpio.h
===================================================================
--- linux4palm/linux/trunk/include/asm-arm/arch-pxa/palmt5-gpio.h 2007-05-22 11:23:20 UTC (rev 988)
+++ linux4palm/linux/trunk/include/asm-arm/arch-pxa/palmt5-gpio.h 2007-05-22 19:06:24 UTC (rev 989)
@@ -68,6 +68,19 @@
#define GPIO_NR_PALMT5_BL_POWER 84
#define GPIO_NR_PALMT5_LCD_POWER 96
+/* Bluetooth */
+#define GPIO_NR_PALMT5_BT_POWER 17
+#define GPIO_NR_PALMT5_BT_RXD 42
+#define GPIO_NR_PALMT5_BT_TXD 43
+#define GPIO_NR_PALMT5_BT_CTS 44
+#define GPIO_NR_PALMT5_BT_RTS 45
+#define GPIO_NR_PALMT5_BT_RESET 83
+
+#define GPIO_NR_PALMT5_BT_RXD_MD (GPIO_NR_PALMT5_BT_RXD | GPIO_ALT_FN_1_IN)
+#define GPIO_NR_PALMT5_BT_TXD_MD (GPIO_NR_PALMT5_BT_TXD | GPIO_ALT_FN_2_OUT)
+#define GPIO_NR_PALMT5_BT_UART_CTS_MD (GPIO_NR_PALMT5_BT_CTS | GPIO_ALT_FN_1_IN)
+#define GPIO_NR_PALMT5_BT_UART_RTS_MD (GPIO_NR_PALMT5_BT_RTS | GPIO_ALT_FN_2_OUT)
+
/* INTERRUPTS */
#define IRQ_GPIO_PALMT5_SD_DETECT_N IRQ_GPIO(GPIO_NR_PALMT5_SD_DETECT_N)
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <mar...@us...> - 2007-05-27 17:42:06
|
Revision: 998
http://svn.sourceforge.net/hackndev/?rev=998&view=rev
Author: marex_z71
Date: 2007-05-27 10:42:01 -0700 (Sun, 27 May 2007)
Log Message:
-----------
PalmLD: PalmLD specific fixes, PalmLD battery, WM97xx fixes, new defconfig
Modified Paths:
--------------
linux4palm/linux/trunk/arch/arm/configs/palmld_defconfig
linux4palm/linux/trunk/arch/arm/mach-pxa/palmld/palmld_battery.c
linux4palm/linux/trunk/include/linux/wm97xx.h
Removed Paths:
-------------
linux4palm/linux/trunk/include/linux/wm9712_ts.h
Modified: linux4palm/linux/trunk/arch/arm/configs/palmld_defconfig
===================================================================
--- linux4palm/linux/trunk/arch/arm/configs/palmld_defconfig 2007-05-27 17:00:31 UTC (rev 997)
+++ linux4palm/linux/trunk/arch/arm/configs/palmld_defconfig 2007-05-27 17:42:01 UTC (rev 998)
@@ -1,11 +1,14 @@
#
# Automatically generated make config: don't edit
-# Linux kernel version: 2.6.20-hnd0
-# Tue Feb 27 17:46:56 2007
+# Linux kernel version: 2.6.21-hnd0
+# Sun May 27 14:49:20 2007
#
CONFIG_ARM=y
-# CONFIG_GENERIC_TIME is not set
+CONFIG_SYS_SUPPORTS_APM_EMULATION=y
+CONFIG_GENERIC_GPIO=y
+CONFIG_GENERIC_TIME=y
CONFIG_MMU=y
+# CONFIG_NO_IOPORT is not set
CONFIG_GENERIC_HARDIRQS=y
CONFIG_TRACE_IRQFLAGS_SUPPORT=y
CONFIG_HARDIRQS_SW_RESEND=y
@@ -15,6 +18,7 @@
# CONFIG_ARCH_HAS_ILOG2_U64 is not set
CONFIG_GENERIC_HWEIGHT=y
CONFIG_GENERIC_CALIBRATE_DELAY=y
+CONFIG_ZONE_DMA=y
CONFIG_ARCH_MTD_XIP=y
CONFIG_VECTORS_BASE=0xffff0000
CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
@@ -34,6 +38,7 @@
CONFIG_SWAP=y
CONFIG_SYSVIPC=y
# CONFIG_IPC_NS is not set
+CONFIG_SYSVIPC_SYSCTL=y
# CONFIG_POSIX_MQUEUE is not set
# CONFIG_BSD_PROCESS_ACCT is not set
# CONFIG_TASKSTATS is not set
@@ -42,6 +47,7 @@
# CONFIG_IKCONFIG is not set
CONFIG_SYSFS_DEPRECATED=y
# CONFIG_RELAY is not set
+CONFIG_BLK_DEV_INITRD=y
# CONFIG_INITRAMFS_SOURCE is not set
CONFIG_CC_OPTIMIZE_FOR_SIZE=y
CONFIG_SYSCTL=y
@@ -120,6 +126,7 @@
# CONFIG_ARCH_IXP2000 is not set
# CONFIG_ARCH_IXP23XX is not set
# CONFIG_ARCH_L7200 is not set
+# CONFIG_ARCH_NS9XXX is not set
# CONFIG_ARCH_PNX4008 is not set
CONFIG_ARCH_PXA=y
# CONFIG_ARCH_RPC is not set
@@ -128,6 +135,8 @@
# CONFIG_ARCH_SHARK is not set
# CONFIG_ARCH_LH7A40X is not set
# CONFIG_ARCH_OMAP is not set
+# CONFIG_BOARD_IRQ_MAP_SMALL is not set
+# CONFIG_BOARD_IRQ_MAP_BIG is not set
#
# Intel PXA2xx Implementations
@@ -156,6 +165,7 @@
# CONFIG_MACH_BLUEANGEL is not set
# CONFIG_MACH_HTCBEETLES is not set
# CONFIG_MACH_HW6900 is not set
+# CONFIG_MACH_HTCATHENA is not set
# CONFIG_ARCH_AXIMX3 is not set
# CONFIG_ARCH_AXIMX5 is not set
# CONFIG_MACH_X50 is not set
@@ -177,6 +187,8 @@
# CONFIG_MACH_PALMZ72 is not set
# CONFIG_MACH_OMAP_PALMTC is not set
# CONFIG_MACH_ZIRE31 is not set
+CONFIG_GPIOED=m
+CONFIG_GPIOEDNG=m
# CONFIG_PXA_SHARPSL is not set
# CONFIG_MACH_TRIZEPS4 is not set
CONFIG_PXA27x=y
@@ -203,20 +215,12 @@
#
CONFIG_ARM_THUMB=y
# CONFIG_CPU_DCACHE_DISABLE is not set
+# CONFIG_OUTER_CACHE is not set
CONFIG_IWMMXT=y
# CONFIG_ARMBOOT_PROC is not set
CONFIG_XSCALE_PMU=y
-# CONFIG_KEXEC is not set
#
-# Compaq/iPAQ Drivers
-#
-
-#
-# Compaq/HP iPAQ Drivers
-#
-
-#
# Bus support
#
@@ -252,6 +256,7 @@
# CONFIG_SPARSEMEM_STATIC is not set
CONFIG_SPLIT_PTLOCK_CPUS=4096
# CONFIG_RESOURCES_64BIT is not set
+CONFIG_ZONE_DMA_FLAG=1
CONFIG_ALIGNMENT_TRAP=y
#
@@ -261,6 +266,8 @@
CONFIG_ZBOOT_ROM_BSS=0x0
CONFIG_CMDLINE=""
# CONFIG_XIP_KERNEL is not set
+# CONFIG_KEXEC is not set
+# CONFIG_TXTOFFSET_DELTA is not set
#
# CPU Frequency scaling
@@ -293,7 +300,7 @@
# CONFIG_PM_DEBUG is not set
# CONFIG_DPM_DEBUG is not set
# CONFIG_PM_SYSFS_DEPRECATED is not set
-CONFIG_APM=y
+CONFIG_APM_EMULATION=y
#
# Networking
@@ -310,7 +317,9 @@
CONFIG_XFRM=y
# CONFIG_XFRM_USER is not set
# CONFIG_XFRM_SUB_POLICY is not set
+# CONFIG_XFRM_MIGRATE is not set
CONFIG_NET_KEY=y
+# CONFIG_NET_KEY_MIGRATE is not set
CONFIG_INET=y
# CONFIG_IP_MULTICAST is not set
# CONFIG_IP_ADVANCED_ROUTER is not set
@@ -437,6 +446,7 @@
# CONFIG_BT_HCIUART_BCSP is not set
# CONFIG_BT_HCIDTL1 is not set
# CONFIG_BT_HCIBT3C is not set
+CONFIG_BT_BCM2035UART=m
# CONFIG_BT_HCIBLUECARD is not set
# CONFIG_BT_HCIBTUART is not set
# CONFIG_BT_HCIVHCI is not set
@@ -520,6 +530,7 @@
# CONFIG_MTD_COMPLEX_MAPPINGS is not set
# CONFIG_MTD_PHYSMAP is not set
# CONFIG_MTD_ARM_INTEGRATOR is not set
+# CONFIG_MTD_IPAQ is not set
# CONFIG_MTD_IMPA7 is not set
# CONFIG_MTD_SHARP_SL is not set
# CONFIG_MTD_PLATRAM is not set
@@ -557,6 +568,7 @@
#
# Plug and Play support
#
+# CONFIG_PNPACPI is not set
#
# Block devices
@@ -569,7 +581,6 @@
CONFIG_BLK_DEV_RAM_COUNT=16
CONFIG_BLK_DEV_RAM_SIZE=4096
CONFIG_BLK_DEV_RAM_BLOCKSIZE=1024
-CONFIG_BLK_DEV_INITRD=y
# CONFIG_CDROM_PKTCDVD is not set
# CONFIG_ATA_OVER_ETH is not set
@@ -597,7 +608,6 @@
CONFIG_IDE_GENERIC=y
# CONFIG_IDE_ARM is not set
# CONFIG_BLK_DEV_IDEDMA is not set
-# CONFIG_IDEDMA_AUTO is not set
# CONFIG_BLK_DEV_HD is not set
#
@@ -753,8 +763,10 @@
# CONFIG_KEYBOARD_XTKBD is not set
# CONFIG_KEYBOARD_NEWTON is not set
# CONFIG_KEYBOARD_STOWAWAY is not set
-# CONFIG_KEYBOARD_GPIO is not set
+# CONFIG_GPIODEV_KEYS is not set
+# CONFIG_GPIODEV_DIAGONAL is not set
CONFIG_KEYBOARD_PXA27x=y
+CONFIG_KEYBOARD_GPIO=y
# CONFIG_INPUT_MOUSE is not set
# CONFIG_INPUT_JOYSTICK is not set
CONFIG_INPUT_TOUCHSCREEN=y
@@ -765,8 +777,6 @@
# CONFIG_TOUCHSCREEN_PENMOUNT is not set
# CONFIG_TOUCHSCREEN_TOUCHRIGHT is not set
# CONFIG_TOUCHSCREEN_TOUCHWIN is not set
-# CONFIG_TOUCHSCREEN_ADC is not set
-# CONFIG_TOUCHSCREEN_ADC_DEBOUNCE is not set
# CONFIG_TOUCHSCREEN_UCB1400 is not set
# CONFIG_TOUCHSCREEN_PALMTC is not set
CONFIG_TOUCHSCREEN_WM97XX=m
@@ -811,6 +821,7 @@
# CONFIG_SERIAL_PXA_IR is not set
CONFIG_SERIAL_CORE=y
CONFIG_SERIAL_CORE_CONSOLE=y
+# CONFIG_RS232_SERIAL is not set
CONFIG_UNIX98_PTYS=y
CONFIG_LEGACY_PTYS=y
CONFIG_LEGACY_PTY_COUNT=256
@@ -829,6 +840,7 @@
CONFIG_SA1100_RTC=y
# CONFIG_DTLK is not set
# CONFIG_R3964 is not set
+# CONFIG_TIHTC is not set
#
# PCMCIA character devices
@@ -866,10 +878,12 @@
# CONFIG_HWMON_VID is not set
#
-# Hardware Monitoring - Battery
+# Hardware Monitoring - external power and batteries
#
-# CONFIG_BATTERY is not set
-# CONFIG_ADC_BATTERY is not set
+CONFIG_EXTERNAL_POWER=m
+CONFIG_BATTERY=m
+CONFIG_PDA_POWER=m
+CONFIG_APM_POWER=m
#
# L3 serial bus support
@@ -877,20 +891,6 @@
# CONFIG_L3 is not set
#
-# SoC drivers
-#
-# CONFIG_SOC_MQ11XX is not set
-# CONFIG_SOC_T7L66XB is not set
-# CONFIG_SOC_TC6387XB is not set
-# CONFIG_SOC_TC6393XB is not set
-# CONFIG_SOC_SAMCOP is not set
-# CONFIG_SOC_HAMCOP is not set
-# CONFIG_HTC_ASIC2 is not set
-# CONFIG_HTC_ASIC3 is not set
-# CONFIG_HTC_ASIC3_DS1WM is not set
-# CONFIG_SOC_TSC2200 is not set
-
-#
# Misc devices
#
# CONFIG_BATTCHARGE_MONITOR is not set
@@ -898,12 +898,25 @@
#
# Multimedia Capabilities Port drivers
#
-# CONFIG_MCP is not set
-# CONFIG_ADC_ADS7846_SSP is not set
-# CONFIG_ADC_AD7877 is not set
-# CONFIG_TIFM_CORE is not set
+# CONFIG_ADC is not set
#
+# Multifunction device drivers
+#
+# CONFIG_MFD_SM501 is not set
+# CONFIG_HTC_ASIC2 is not set
+# CONFIG_HTC_ASIC3 is not set
+# CONFIG_HTC_ASIC3_DS1WM is not set
+# CONFIG_SOC_SAMCOP is not set
+# CONFIG_SOC_HAMCOP is not set
+# CONFIG_SOC_MQ11XX is not set
+# CONFIG_SOC_T7L66XB is not set
+# CONFIG_SOC_TC6387XB is not set
+# CONFIG_SOC_TC6393XB is not set
+# CONFIG_SOC_TSC2101 is not set
+# CONFIG_SOC_TSC2200 is not set
+
+#
# LED devices
#
CONFIG_NEW_LEDS=y
@@ -938,15 +951,26 @@
#
# Graphics support
#
+CONFIG_BACKLIGHT_LCD_SUPPORT=y
+CONFIG_BACKLIGHT_CLASS_DEVICE=m
+CONFIG_LCD_CLASS_DEVICE=m
+# CONFIG_BACKLIGHT_CORGI is not set
+CONFIG_BACKLIGHT_PXAPWM=m
+CONFIG_FB=y
CONFIG_FIRMWARE_EDID=y
-CONFIG_FB=y
+# CONFIG_FB_DDC is not set
CONFIG_FB_CFB_FILLRECT=y
CONFIG_FB_CFB_COPYAREA=y
CONFIG_FB_CFB_IMAGEBLIT=y
+# CONFIG_FB_SVGALIB is not set
# CONFIG_FB_MACMODES is not set
# CONFIG_FB_BACKLIGHT is not set
# CONFIG_FB_MODE_HELPERS is not set
CONFIG_FB_TILEBLITTING=y
+
+#
+# Frame buffer hardware drivers
+#
# CONFIG_FB_IMAGEON is not set
# CONFIG_FB_S1D13XXX is not set
CONFIG_FB_PXA=y
@@ -962,21 +986,22 @@
CONFIG_DUMMY_CONSOLE=y
CONFIG_FRAMEBUFFER_CONSOLE=y
CONFIG_FRAMEBUFFER_CONSOLE_ROTATION=y
-# CONFIG_FONTS is not set
+CONFIG_FONTS=y
CONFIG_FONT_8x8=y
-CONFIG_FONT_8x16=y
+# CONFIG_FONT_8x16 is not set
+# CONFIG_FONT_6x11 is not set
+# CONFIG_FONT_7x14 is not set
+# CONFIG_FONT_PEARL_8x8 is not set
+# CONFIG_FONT_ACORN_8x8 is not set
+# CONFIG_FONT_MINI_4x6 is not set
+# CONFIG_FONT_SUN8x16 is not set
+# CONFIG_FONT_SUN12x22 is not set
+# CONFIG_FONT_10x18 is not set
#
# Logo configuration
#
# CONFIG_LOGO is not set
-CONFIG_BACKLIGHT_LCD_SUPPORT=y
-CONFIG_BACKLIGHT_CLASS_DEVICE=m
-CONFIG_BACKLIGHT_DEVICE=y
-CONFIG_LCD_CLASS_DEVICE=m
-CONFIG_LCD_DEVICE=y
-# CONFIG_BACKLIGHT_CORGI is not set
-CONFIG_BACKLIGHT_PXAPWM=m
#
# Sound
@@ -1040,6 +1065,7 @@
# HID Devices
#
CONFIG_HID=y
+# CONFIG_HID_DEBUG is not set
#
# USB support
@@ -1056,7 +1082,29 @@
#
# USB Gadget Support
#
-# CONFIG_USB_GADGET is not set
+CONFIG_USB_GADGET=m
+# CONFIG_USB_GADGET_DEBUG_FILES is not set
+CONFIG_USB_GADGET_SELECTED=y
+# CONFIG_USB_GADGET_NET2280 is not set
+# CONFIG_USB_GADGET_PXA2XX is not set
+# CONFIG_USB_GADGET_PXA27X is not set
+CONFIG_USB_GADGET_SX2=y
+CONFIG_USB_SX2=m
+# CONFIG_USB_GADGET_GOKU is not set
+# CONFIG_USB_GADGET_MQ11XX is not set
+# CONFIG_USB_GADGET_LH7A40X is not set
+# CONFIG_USB_GADGET_S3C2410 is not set
+# CONFIG_USB_GADGET_OMAP is not set
+# CONFIG_USB_GADGET_AT91 is not set
+# CONFIG_USB_GADGET_DUMMY_HCD is not set
+# CONFIG_USB_GADGET_DUALSPEED is not set
+CONFIG_USB_ZERO=m
+# CONFIG_USB_ETH is not set
+# CONFIG_USB_GADGETFS is not set
+# CONFIG_USB_FILE_STORAGE is not set
+# CONFIG_USB_G_SERIAL is not set
+# CONFIG_USB_MIDI_GADGET is not set
+# CONFIG_USB_G_CHAR is not set
#
# MMC/SD Card support
@@ -1065,7 +1113,6 @@
# CONFIG_MMC_DEBUG is not set
CONFIG_MMC_BLOCK=y
CONFIG_MMC_PXA=y
-# CONFIG_MMC_TIFM_SD is not set
# CONFIG_MMC_TMIO is not set
# CONFIG_MMC_SAMCOP is not set
@@ -1073,10 +1120,32 @@
# Real Time Clock
#
CONFIG_RTC_LIB=y
-# CONFIG_RTC_CLASS is not set
+CONFIG_RTC_CLASS=y
+CONFIG_RTC_HCTOSYS=y
+CONFIG_RTC_HCTOSYS_DEVICE="rtc0"
CONFIG_RTC_EPOCH=1904
+# CONFIG_RTC_DEBUG is not set
#
+# RTC interfaces
+#
+CONFIG_RTC_INTF_SYSFS=y
+CONFIG_RTC_INTF_PROC=y
+CONFIG_RTC_INTF_DEV=y
+# CONFIG_RTC_INTF_DEV_UIE_EMUL is not set
+
+#
+# RTC drivers
+#
+# CONFIG_RTC_DRV_CMOS is not set
+# CONFIG_RTC_DRV_DS1553 is not set
+# CONFIG_RTC_DRV_DS1742 is not set
+# CONFIG_RTC_DRV_M48T86 is not set
+CONFIG_RTC_DRV_SA1100=y
+# CONFIG_RTC_DRV_TEST is not set
+# CONFIG_RTC_DRV_V3020 is not set
+
+#
# File systems
#
CONFIG_EXT2_FS=y
@@ -1271,8 +1340,10 @@
# CONFIG_CRYPTO_GF128MUL is not set
CONFIG_CRYPTO_ECB=m
CONFIG_CRYPTO_CBC=m
+CONFIG_CRYPTO_PCBC=m
# CONFIG_CRYPTO_LRW is not set
# CONFIG_CRYPTO_DES is not set
+# CONFIG_CRYPTO_FCRYPT is not set
# CONFIG_CRYPTO_BLOWFISH is not set
# CONFIG_CRYPTO_TWOFISH is not set
# CONFIG_CRYPTO_SERPENT is not set
@@ -1286,6 +1357,7 @@
# CONFIG_CRYPTO_DEFLATE is not set
# CONFIG_CRYPTO_MICHAEL_MIC is not set
# CONFIG_CRYPTO_CRC32C is not set
+# CONFIG_CRYPTO_CAMELLIA is not set
# CONFIG_CRYPTO_TEST is not set
#
@@ -1303,4 +1375,5 @@
CONFIG_ZLIB_INFLATE=y
CONFIG_ZLIB_DEFLATE=y
CONFIG_PLIST=y
-CONFIG_IOMAP_COPY=y
+CONFIG_HAS_IOMEM=y
+CONFIG_HAS_IOPORT=y
Modified: linux4palm/linux/trunk/arch/arm/mach-pxa/palmld/palmld_battery.c
===================================================================
--- linux4palm/linux/trunk/arch/arm/mach-pxa/palmld/palmld_battery.c 2007-05-27 17:00:31 UTC (rev 997)
+++ linux4palm/linux/trunk/arch/arm/mach-pxa/palmld/palmld_battery.c 2007-05-27 17:42:01 UTC (rev 998)
@@ -8,7 +8,6 @@
* *
************************************************************************/
-
#include <linux/kernel.h>
#include <linux/module.h>
#include <linux/moduleparam.h>
@@ -18,8 +17,9 @@
#include <linux/device.h>
#include <linux/workqueue.h>
#include <linux/battery.h>
+#include <linux/apm-emulation.h>
+#include <linux/wm97xx.h>
-#include <asm/apm.h>
#include <asm/delay.h>
#include <asm/mach-types.h>
#include <asm/mach/arch.h>
@@ -27,19 +27,17 @@
#include <asm/arch/hardware.h>
#include <asm/arch/pxa-regs.h>
#include <asm/arch/irqs.h>
+#include <asm/arch/palmld-gpio.h>
+#include <asm/arch/palmld-init.h>
#include <sound/driver.h>
#include <sound/core.h>
#include <sound/pcm.h>
#include <sound/initval.h>
-#include <linux/wm97xx.h>
-#include <asm/arch/palmld-gpio.h>
-#include <asm/arch/palmld-init.h>
-
struct palmld_battery_dev
{
- struct wm97xx * wm;
+ struct wm97xx *wm;
int battery_registered;
int current_voltage;
int previous_voltage;
@@ -48,7 +46,7 @@
struct palmld_battery_dev bat;
-#if defined(CONFIG_APM) || defined(CONFIG_APM_MODULE)
+#if defined(CONFIG_APM_EMULATION) || defined(CONFIG_APM_MODULE)
/* original APM hook */
static void (*apm_get_power_status_orig)(struct apm_power_info *info);
#endif
@@ -83,6 +81,17 @@
}
}
+int palmld_battery_get_capacity(struct battery *b)
+{
+ if (bat.battery_registered){
+ return ((palmld_battery_get_voltage(b)-palmld_battery_min_voltage(b))
+ /(palmld_battery_max_voltage(b)-palmld_battery_min_voltage(b)));
+ }
+ else{
+ printk("palmld_battery: cannot get capacity -> battery driver unregistered\n");
+ return 0;
+ }
+}
int palmld_battery_get_status(struct battery *b)
{
@@ -101,13 +110,53 @@
return BATTERY_STATUS_DISCHARGING;
}
+int tmp;
+
+static void *palmld_battery_get_property(struct battery *b, enum battery_property bp)
+{
+ switch (bp) {
+ case BATTERY_PROP_VOLTAGE_MAX_DESIGN:
+ tmp = palmld_battery_max_voltage(b);
+ return &tmp;
+ case BATTERY_PROP_VOLTAGE_MIN_DESIGN:
+ tmp = palmld_battery_min_voltage(b);
+ return &tmp;
+ case BATTERY_PROP_CHARGE_FULL_DESIGN:
+ tmp = 100;
+ return &tmp;
+ case BATTERY_PROP_CHARGE_EMPTY_DESIGN:
+ tmp = 0;
+ return &tmp;
+ case BATTERY_PROP_CHARGE_NOW:
+ tmp = palmld_battery_get_capacity(b);
+ return &tmp;
+ case BATTERY_PROP_VOLTAGE_NOW:
+ tmp = palmld_battery_get_voltage(b);
+ return &tmp;
+ case BATTERY_PROP_STATUS:
+ tmp = palmld_battery_get_status(b);
+ return &tmp;
+ default: break;
+ };
+
+ return NULL;
+}
+
+static enum battery_property palmld_battery_props[] = {
+ BATTERY_PROP_VOLTAGE_MAX_DESIGN,
+ BATTERY_PROP_VOLTAGE_MIN_DESIGN,
+ BATTERY_PROP_CHARGE_FULL_DESIGN,
+ BATTERY_PROP_CHARGE_EMPTY_DESIGN,
+ BATTERY_PROP_CHARGE_NOW,
+ BATTERY_PROP_VOLTAGE_NOW,
+ BATTERY_PROP_STATUS,
+};
+
struct battery palmld_battery = {
- .name = "palmld_battery",
- .id = "battery0",
- .get_min_voltage = palmld_battery_min_voltage,
- .get_max_voltage = palmld_battery_max_voltage,
- .get_voltage = palmld_battery_get_voltage,
- .get_status = palmld_battery_get_status,
+ .name = "palmld_battery",
+ .get_property = palmld_battery_get_property,
+ .properties = palmld_battery_props,
+ .num_properties = ARRAY_SIZE(palmld_battery_props),
};
static int palmld_wm97xx_probe(struct device *dev)
@@ -125,7 +174,7 @@
static void
palmld_wm97xx_shutdown(struct device *dev)
{
-#if defined(CONFIG_APM) || defined(CONFIG_APM_MODULE)
+#if defined(CONFIG_APM_EMULATION) || defined(CONFIG_APM_MODULE)
apm_get_power_status = apm_get_power_status_orig;
#endif
}
@@ -154,7 +203,7 @@
.shutdown = palmld_wm97xx_shutdown
};
-#if defined(CONFIG_APM) || defined(CONFIG_APM_MODULE)
+#if defined(CONFIG_APM_EMULATION) || defined(CONFIG_APM_MODULE)
/* APM status query callback implementation */
static void palmld_apm_get_power_status(struct apm_power_info *info)
@@ -200,14 +249,14 @@
/* register battery to APM layer */
bat.battery_registered = 0;
- if(battery_class_register(&palmld_battery)) {
+ if(battery_register(NULL, &palmld_battery)) {
printk(KERN_ERR "palmld_ac97_probe: could not register battery class\n");
}
else {
bat.battery_registered = 1;
printk("Battery registered\n");
}
-#if defined(CONFIG_APM) || defined(CONFIG_APM_MODULE)
+#if defined(CONFIG_APM_EMULATION) || defined(CONFIG_APM_MODULE)
apm_get_power_status_orig = apm_get_power_status;
apm_get_power_status = palmld_apm_get_power_status;
#endif
@@ -223,7 +272,7 @@
static void __exit palmld_wm97xx_exit(void)
{
/* TODO - recover APM callback to original state */
- battery_class_unregister(&palmld_battery);
+ battery_unregister(&palmld_battery);
driver_unregister(&palmld_wm97xx_driver);
}
@@ -231,6 +280,7 @@
module_exit(palmld_wm97xx_exit);
/* Module information */
-MODULE_AUTHOR("Sergey Lapin <sl...@ha...> Jan Herman <2h...@se...>");
+MODULE_AUTHOR("Sergey Lapin <sl...@ha...> Jan Herman <2h...@se...>"
+ "Marek Vasut <mar...@gm...");
MODULE_DESCRIPTION("wm97xx battery driver");
MODULE_LICENSE("GPL");
Deleted: linux4palm/linux/trunk/include/linux/wm9712_ts.h
===================================================================
--- linux4palm/linux/trunk/include/linux/wm9712_ts.h 2007-05-27 17:00:31 UTC (rev 997)
+++ linux4palm/linux/trunk/include/linux/wm9712_ts.h 2007-05-27 17:42:01 UTC (rev 998)
@@ -1,29 +0,0 @@
-/*
- * Support for the WM9712 AC97 touchscreen codec.
- *
- * Author: Alex Osborne <bob...@gm...>
- * Created: 2006-06-10
- *
- */
-
-#ifndef __LINUX_WM9712_TS_H
-#define __LINUX_WM9712_TS_H
-
-#include <sound/ac97_codec.h>
-
-struct wm9712_platform_data {
- int pendown_irq;
- int interrupt_irq;
-
- int x_axis_max;
- int x_axis_min;
-
- int y_axis_max;
- int y_axis_min;
-
- int pressure_min;
- int pressure_max;
- int pressure_threshold;
-}
-
-#endif
Modified: linux4palm/linux/trunk/include/linux/wm97xx.h
===================================================================
--- linux4palm/linux/trunk/include/linux/wm97xx.h 2007-05-27 17:00:31 UTC (rev 997)
+++ linux4palm/linux/trunk/include/linux/wm97xx.h 2007-05-27 17:42:01 UTC (rev 998)
@@ -243,7 +243,7 @@
u16 dig_save[3]; /* saved during aux reading */
struct wm97xx_codec_drv *codec; /* attached codec driver*/
struct input_dev* input_dev; /* touchscreen input device */
- ac97_t *ac97; /* ALSA codec access */
+ struct snd_ac97 *ac97; /* ALSA codec access */
struct device *dev; /* ALSA device */
struct device *battery_dev;
struct device *touch_dev;
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <mar...@us...> - 2007-05-27 23:36:15
|
Revision: 1006
http://svn.sourceforge.net/hackndev/?rev=1006&view=rev
Author: marex_z71
Date: 2007-05-27 16:36:07 -0700 (Sun, 27 May 2007)
Log Message:
-----------
PalmT3: Make this compile again, needs revision though!!
Modified Paths:
--------------
linux4palm/linux/trunk/arch/arm/mach-pxa/palmt3/palmt3_battery.c
linux4palm/linux/trunk/drivers/mfd/tsc2101.c
linux4palm/linux/trunk/drivers/mmc/wbsd-palmt3.c
Modified: linux4palm/linux/trunk/arch/arm/mach-pxa/palmt3/palmt3_battery.c
===================================================================
--- linux4palm/linux/trunk/arch/arm/mach-pxa/palmt3/palmt3_battery.c 2007-05-27 22:05:00 UTC (rev 1005)
+++ linux4palm/linux/trunk/arch/arm/mach-pxa/palmt3/palmt3_battery.c 2007-05-27 23:36:07 UTC (rev 1006)
@@ -24,10 +24,10 @@
#include <linux/jiffies.h>
#include <linux/platform_device.h>
#include <linux/battchargemon.h>
+#include <linux/apm-emulation.h>
#include <asm/io.h>
#include <asm/irq.h>
-#include <asm/apm.h>
#include <asm/arch/hardware.h>
#include <asm/arch/pxa-regs.h>
Modified: linux4palm/linux/trunk/drivers/mfd/tsc2101.c
===================================================================
--- linux4palm/linux/trunk/drivers/mfd/tsc2101.c 2007-05-27 22:05:00 UTC (rev 1005)
+++ linux4palm/linux/trunk/drivers/mfd/tsc2101.c 2007-05-27 23:36:07 UTC (rev 1006)
@@ -18,7 +18,9 @@
#include <linux/interrupt.h>
#include <linux/module.h>
#include <linux/slab.h>
-#include <linux/soc/tsc2101.h>
+#include <linux/soc/tsc2101.h>
+#include <linux/irq.h>
+#include <linux/platform_device.h>
#include "tsc2101.h"
extern void tsc2101_ts_setup(struct device *dev);
@@ -239,11 +241,11 @@
static int tsc2101_suspend(struct device *dev, u32 state, u32 level)
{
struct tsc2101_data *devdata = dev_get_drvdata(dev);
-
- if (level == SUSPEND_POWER_DOWN) {
+/* comment this out like in old driver, it's sick though */
+/* if (level == SUSPEND_POWER_DOWN) { */
tsc2101_ts_disable(devdata);
devdata->platform->suspend();
- }
+/* } */
return 0;
}
@@ -252,10 +254,11 @@
{
struct tsc2101_data *devdata = dev_get_drvdata(dev);
- if (level == RESUME_POWER_ON) {
+/* comment this out like in old driver, it's sick though */
+/* if (level == RESUME_POWER_ON) { */
devdata->platform->resume();
tsc2101_ts_enable(devdata);
- }
+/* } */
return 0;
}
Modified: linux4palm/linux/trunk/drivers/mmc/wbsd-palmt3.c
===================================================================
--- linux4palm/linux/trunk/drivers/mmc/wbsd-palmt3.c 2007-05-27 22:05:00 UTC (rev 1005)
+++ linux4palm/linux/trunk/drivers/mmc/wbsd-palmt3.c 2007-05-27 23:36:07 UTC (rev 1006)
@@ -1369,9 +1369,9 @@
mmc->max_hw_segs = MAX_HW_SEGMENTS;
mmc->max_phys_segs = MAX_PHYS_SEGMENTS;
- mmc->max_sectors = SAFE_MAX_SECTORS;
+/* mmc->max_sectors = SAFE_MAX_SECTORS;
mmc->max_seg_size = MAX_SEGMENT_SIZE;
-
+*/
dev_set_drvdata(dev, mmc);
init_timer(&host->delayed_timer);
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <mar...@us...> - 2007-05-28 15:50:50
|
Revision: 1008
http://svn.sourceforge.net/hackndev/?rev=1008&view=rev
Author: marex_z71
Date: 2007-05-28 08:50:47 -0700 (Mon, 28 May 2007)
Log Message:
-----------
l4p: battery driver fixes + correction of palmt5 battery voltage (thanx snua12)
Modified Paths:
--------------
linux4palm/linux/trunk/arch/arm/mach-pxa/palmld/palmld_battery.c
linux4palm/linux/trunk/arch/arm/mach-pxa/palmt5/palmt5_battery.c
linux4palm/linux/trunk/arch/arm/mach-pxa/palmtx/palmtx_battery.c
linux4palm/linux/trunk/arch/arm/mach-pxa/palmz72/palmz72_battery.c
linux4palm/linux/trunk/include/asm-arm/arch-pxa/palmt5-init.h
Modified: linux4palm/linux/trunk/arch/arm/mach-pxa/palmld/palmld_battery.c
===================================================================
--- linux4palm/linux/trunk/arch/arm/mach-pxa/palmld/palmld_battery.c 2007-05-28 14:30:17 UTC (rev 1007)
+++ linux4palm/linux/trunk/arch/arm/mach-pxa/palmld/palmld_battery.c 2007-05-28 15:50:47 UTC (rev 1008)
@@ -84,8 +84,8 @@
int palmld_battery_get_capacity(struct battery *b)
{
if (bat.battery_registered){
- return ((palmld_battery_get_voltage(b)-palmld_battery_min_voltage(b))
- /(palmld_battery_max_voltage(b)-palmld_battery_min_voltage(b)));
+ return (((palmld_battery_get_voltage(b)-palmld_battery_min_voltage(b))
+ /(palmld_battery_max_voltage(b)-palmld_battery_min_voltage(b)))*100);
}
else{
printk("palmld_battery: cannot get capacity -> battery driver unregistered\n");
Modified: linux4palm/linux/trunk/arch/arm/mach-pxa/palmt5/palmt5_battery.c
===================================================================
--- linux4palm/linux/trunk/arch/arm/mach-pxa/palmt5/palmt5_battery.c 2007-05-28 14:30:17 UTC (rev 1007)
+++ linux4palm/linux/trunk/arch/arm/mach-pxa/palmt5/palmt5_battery.c 2007-05-28 15:50:47 UTC (rev 1008)
@@ -83,8 +83,8 @@
int palmt5_battery_get_capacity(struct battery *b)
{
if (bat.battery_registered){
- return ((palmt5_battery_get_voltage(b)-palmt5_battery_min_voltage(b))
- /(palmt5_battery_max_voltage(b)-palmt5_battery_min_voltage(b)));
+ return (((palmt5_battery_get_voltage(b)-palmt5_battery_min_voltage(b))
+ /(palmt5_battery_max_voltage(b)-palmt5_battery_min_voltage(b)))*100);
}
else{
printk("palmt5_battery: cannot get capacity -> battery driver unregistered\n");
Modified: linux4palm/linux/trunk/arch/arm/mach-pxa/palmtx/palmtx_battery.c
===================================================================
--- linux4palm/linux/trunk/arch/arm/mach-pxa/palmtx/palmtx_battery.c 2007-05-28 14:30:17 UTC (rev 1007)
+++ linux4palm/linux/trunk/arch/arm/mach-pxa/palmtx/palmtx_battery.c 2007-05-28 15:50:47 UTC (rev 1008)
@@ -88,8 +88,8 @@
int palmtx_battery_get_capacity(struct battery *b)
{
if (bat.battery_registered){
- return ((palmtx_battery_get_voltage(b)-palmtx_battery_min_voltage(b))
- /(palmtx_battery_max_voltage(b)-palmtx_battery_min_voltage(b)));
+ return (((palmtx_battery_get_voltage(b)-palmtx_battery_min_voltage(b))
+ /(palmtx_battery_max_voltage(b)-palmtx_battery_min_voltage(b)))*100);
}
else{
printk("palmtx_battery: cannot get capacity -> battery driver unregistered\n");
Modified: linux4palm/linux/trunk/arch/arm/mach-pxa/palmz72/palmz72_battery.c
===================================================================
--- linux4palm/linux/trunk/arch/arm/mach-pxa/palmz72/palmz72_battery.c 2007-05-28 14:30:17 UTC (rev 1007)
+++ linux4palm/linux/trunk/arch/arm/mach-pxa/palmz72/palmz72_battery.c 2007-05-28 15:50:47 UTC (rev 1008)
@@ -88,8 +88,8 @@
int palmz72_battery_get_capacity(struct battery *b)
{
if (bat.battery_registered){
- return ((palmz72_battery_get_voltage(b)-palmz72_battery_min_voltage(b))
- /(palmz72_battery_max_voltage(b)-palmz72_battery_min_voltage(b)));
+ return (((palmz72_battery_get_voltage(b)-palmz72_battery_min_voltage(b))
+ /(palmz72_battery_max_voltage(b)-palmz72_battery_min_voltage(b)))*100);
}
else{
printk("palmz72_battery: cannot get capacity -> battery driver unregistered\n");
Modified: linux4palm/linux/trunk/include/asm-arm/arch-pxa/palmt5-init.h
===================================================================
--- linux4palm/linux/trunk/include/asm-arm/arch-pxa/palmt5-init.h 2007-05-28 14:30:17 UTC (rev 1007)
+++ linux4palm/linux/trunk/include/asm-arm/arch-pxa/palmt5-init.h 2007-05-28 15:50:47 UTC (rev 1008)
@@ -52,7 +52,7 @@
// BATTERY
-#define PALMT5_BAT_MAX_VOLTAGE 4100 // 3.99v current voltage at max charge as from Filez
+#define PALMT5_BAT_MAX_VOLTAGE 4000 // 4.00v current voltage at max charge as from Filez
#define PALMT5_BAT_MIN_VOLTAGE 3550 // 3.55v critical voltage as from FileZ
#define PALMT5_BAT_MAX_CURRENT 0 // unknokn
#define PALMT5_BAT_MIN_CURRENT 0 // unknown
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <mis...@us...> - 2007-06-13 15:59:46
|
Revision: 1034
http://svn.sourceforge.net/hackndev/?rev=1034&view=rev
Author: miska_tx
Date: 2007-06-13 08:59:41 -0700 (Wed, 13 Jun 2007)
Log Message:
-----------
Some patches to aufs to make it possible to compile it.
Modified Paths:
--------------
linux4palm/linux/trunk/fs/aufs/Kconfig
linux4palm/linux/trunk/fs/aufs/sysaufs.c
linux4palm/linux/trunk/fs/aufs/wkq.c
linux4palm/linux/trunk/include/linux/aufs_type.h
Modified: linux4palm/linux/trunk/fs/aufs/Kconfig
===================================================================
--- linux4palm/linux/trunk/fs/aufs/Kconfig 2007-06-13 15:16:08 UTC (rev 1033)
+++ linux4palm/linux/trunk/fs/aufs/Kconfig 2007-06-13 15:59:41 UTC (rev 1034)
@@ -10,7 +10,26 @@
different from Unionfs while keeping the basic features.
See Unionfs for the basic features.
if AUFS
-comment "These options are generated automatically for 2.6.21-hnd1"
+config AUFS_NWKQ_DEF
+ int "Number of aufs kernel threads"
+ depends on AUFS
+ default "4"
+ help
+ Those threads stay in the system and handle the special I/O requests
+ from aufs. The default value is 4. If you enable CONFIG_SYSFS, you can
+ check this value through <sysfs>/module/aufs/parameters/nwkq. So how
+ many threads is enough? You can check it by <sysfs>/fs/aufs/stat,
+ if you enable CONFIG_AUFS_SUSAUFS too. It shows the maximum number of the
+ enqueued work at a time per a thread. Usually they are all small numbers or
+ 0. If your work- load is heavy and you feel the response is low, then check
+ these values. If there are no zero and any of them is larger than 2 or 3,
+ you should set 'nwkq' module parameter greater then the default value.
+ But the reason of the bad response is in your branch filesystem, to
+ increase the number of aufs thread will not help you. The last number in
+ <sysfs>/fs/aufs/stat after comma is the maxi- mum number of the 'no-wait'
+ enqueued work at a time. Aufs enqueues such work to the system global
+ workqueue called 'events', but doesn't wait for its completion. Usually they
+ does no harm the time-performance of aufs.
config AUFS_FAKE_DM
bool "Use simplified (fake) nameidata"
depends on AUFS
Modified: linux4palm/linux/trunk/fs/aufs/sysaufs.c
===================================================================
--- linux4palm/linux/trunk/fs/aufs/sysaufs.c 2007-06-13 15:16:08 UTC (rev 1033)
+++ linux4palm/linux/trunk/fs/aufs/sysaufs.c 2007-06-13 15:59:41 UTC (rev 1034)
@@ -596,7 +596,7 @@
return err;
}
-void __exit sysaufs_fin(void)
+void sysaufs_fin(void)
{
mutex_lock(&aufs_sbilist_mtx);
unreg(&aufs_subsys, g_array, ARRAY_SIZE(g_array), &fs_subsys);
Modified: linux4palm/linux/trunk/fs/aufs/wkq.c
===================================================================
--- linux4palm/linux/trunk/fs/aufs/wkq.c 2007-06-13 15:16:08 UTC (rev 1033)
+++ linux4palm/linux/trunk/fs/aufs/wkq.c 2007-06-13 15:59:41 UTC (rev 1034)
@@ -91,8 +91,12 @@
old = wkq->max_busy;
if (new <= old)
break;
+#ifdef __LINUX_ARM_ARCH__
+ } while (atomic_cmpxchg((atomic_t *)(&wkq->max_busy), old, new) == old);
+#else
} while (cmpxchg(&wkq->max_busy, old, new) == old);
#endif
+#endif
}
static int enqueue(struct au_wkq *wkq, struct au_wkinfo *wkinfo)
Modified: linux4palm/linux/trunk/include/linux/aufs_type.h
===================================================================
--- linux4palm/linux/trunk/include/linux/aufs_type.h 2007-06-13 15:16:08 UTC (rev 1033)
+++ linux4palm/linux/trunk/include/linux/aufs_type.h 2007-06-13 15:59:41 UTC (rev 1034)
@@ -27,12 +27,10 @@
/* ---------------------------------------------------------------------- */
+typedef short aufs_bindex_t;
#ifdef CONFIG_AUFS_BRANCH_MAX_127
-typedef char aufs_bindex_t;
#define AUFS_BRANCH_MAX 127
-#else
-typedef short aufs_bindex_t;
-#ifdef CONFIG_AUFS_BRANCH_MAX_511
+#elif CONFIG_AUFS_BRANCH_MAX_511
#define AUFS_BRANCH_MAX 511
#elif defined(CONFIG_AUFS_BRANCH_MAX_1023)
#define AUFS_BRANCH_MAX 1023
@@ -41,7 +39,6 @@
#else
#error unknown CONFIG_AUFS_BRANCH_MAX value
#endif
-#endif
#define AUFS_NAME "aufs"
#define AUFS_FSTYPE AUFS_NAME
@@ -56,7 +53,11 @@
#define AUFS_DIRWH_DEF 3
#define AUFS_RDCACHE_DEF 10 /* seconds */
#define AUFS_WKQ_NAME AUFS_NAME "d"
+#ifdef CONFIG_AUFS_NWKQ_DEF
+#define AUFS_NWKQ_DEF CONFIG_AUFS_NWKQ_DEF
+#else
#define AUFS_NWKQ_DEF 4
+#endif
#ifdef CONFIG_AUFS_COMPAT
#define AUFS_DIROPQ_NAME "__dir_opaque"
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <mar...@us...> - 2007-06-14 16:04:47
|
Revision: 1036
http://svn.sourceforge.net/hackndev/?rev=1036&view=rev
Author: marex_z71
Date: 2007-06-14 09:03:49 -0700 (Thu, 14 Jun 2007)
Log Message:
-----------
PalmTC: corrected GPIO functions
Modified Paths:
--------------
linux4palm/linux/trunk/drivers/input/touchscreen/palmtc_ts.c
linux4palm/linux/trunk/include/asm-arm/arch-pxa/palmtc-gpio.h
Modified: linux4palm/linux/trunk/drivers/input/touchscreen/palmtc_ts.c
===================================================================
--- linux4palm/linux/trunk/drivers/input/touchscreen/palmtc_ts.c 2007-06-14 15:47:55 UTC (rev 1035)
+++ linux4palm/linux/trunk/drivers/input/touchscreen/palmtc_ts.c 2007-06-14 16:03:49 UTC (rev 1036)
@@ -459,8 +459,8 @@
int ucb1400_battery_get_status(struct battery *b)
{
- int ac_connected = gpio_get_value(GPIO_NR_PALMTC_POWER_DETECT);
- int usb_connected = !gpio_get_value(GPIO_NR_PALMTC_USB_DETECT);
+ int ac_connected = !(gpio_get_value(GPIO_NR_PALMTC_CRADLE_DETECT_N));
+ int usb_connected = gpio_get_value(GPIO_NR_PALMTC_USB_DETECT);
ucb1400_adc_enable(bat.ucb);
if (ucb1400_adc_read(bat.ucb, UCB_ADC_INP_AD0) <= 0)
Modified: linux4palm/linux/trunk/include/asm-arm/arch-pxa/palmtc-gpio.h
===================================================================
--- linux4palm/linux/trunk/include/asm-arm/arch-pxa/palmtc-gpio.h 2007-06-14 15:47:55 UTC (rev 1035)
+++ linux4palm/linux/trunk/include/asm-arm/arch-pxa/palmtc-gpio.h 2007-06-14 16:03:49 UTC (rev 1036)
@@ -12,15 +12,55 @@
/* Palm Tungsten C GPIOs */
#define GPIO_NR_PALMTC_EARPHONE_DETECT 2
-#define GPIO_NR_PALMTC_USB_DETECT 4
-#define GPIO_NR_PALMTC_POWER_DETECT 5
+#define GPIO_NR_PALMTC_CRADLE_DETECT_N 4
+#define GPIO_NR_PALMTC_USB_DETECT 5
#define GPIO_NR_PALMTC_HOTSYNC_BUTTON 7
#define GPIO_NR_PALMTC_SD_DETECT 12 // low->high when out, high->low when inserted
#define GPIO_NR_PALMTC_BL_POWER 16
+#define GPIO_NR_PALMTC_USB_POWER 36
//#define GPIO_NR_PALMLD_STD_RXD 46 /* IRDA */
//#define GPIO_NR_PALMLD_STD_TXD 47
#define IRQ_GPIO_PALMTC_SD_DETECT IRQ_GPIO(GPIO_NR_PALMTC_SD_DETECT)
+/* Utility macros */
+
+#define GET_PALMTC_GPIO(gpio) \
+ (GPLR(GPIO_NR_PALMTC_ ## gpio) & GPIO_bit(GPIO_NR_PALMTC_ ## gpio))
+
+#define SET_PALMTC_GPIO(gpio, setp) \
+ do { \
+ if (setp) \
+ GPSR(GPIO_NR_PALMTC_ ## gpio) = GPIO_bit(GPIO_NR_PALMTC_ ## gpio); \
+ else \
+ GPCR(GPIO_NR_PALMTC_ ## gpio) = GPIO_bit(GPIO_NR_PALMTC_ ## gpio); \
+ } while (0)
+
+#define SET_PALMTC_GPIO_N(gpio, setp) \
+ do { \
+ if (setp) \
+ GPCR(GPIO_NR_PALMTC_ ## gpio) = GPIO_bit(GPIO_NR_PALMTC_ ## gpio); \
+ else \
+ GPSR(GPIO_NR_PALMTC_ ## gpio) = GPIO_bit(GPIO_NR_PALMTC_ ## gpio); \
+ } while (0)
+
+#define GET_GPIO(gpio) (GPLR(gpio) & GPIO_bit(gpio))
+
+#define SET_GPIO(gpio, setp) \
+ do { \
+ if (setp) \
+ GPSR(gpio) = GPIO_bit(gpio); \
+ else \
+ GPCR(gpio) = GPIO_bit(gpio); \
+ } while (0)
+
+#define SET_GPIO_N(gpio, setp) \
+ do { \
+ if (setp) \
+ GPCR(gpio) = GPIO_bit(gpio); \
+ else \
+ GPSR(gpio) = GPIO_bit(gpio); \
+ } while (0)
+
#endif /* _PALMTC_GPIO_H_ */
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <hap...@us...> - 2007-06-26 10:48:59
|
Revision: 1077
http://svn.sourceforge.net/hackndev/?rev=1077&view=rev
Author: happy-slapin
Date: 2007-06-26 03:48:55 -0700 (Tue, 26 Jun 2007)
Log Message:
-----------
PXA270+OV9640: moving platform code out
Modified Paths:
--------------
linux4palm/linux/trunk/arch/arm/mach-pxa/palmz72/Kconfig
linux4palm/linux/trunk/arch/arm/mach-pxa/palmz72/gpio_map.txt
linux4palm/linux/trunk/arch/arm/mach-pxa/palmz72/palmz72.c
linux4palm/linux/trunk/arch/arm/mach-pxa/palmz72/palmz72_pm.c
linux4palm/linux/trunk/drivers/i2c/chips/i2c-ov9640.c
linux4palm/linux/trunk/drivers/i2c/chips/i2c-ov9640.h
Modified: linux4palm/linux/trunk/arch/arm/mach-pxa/palmz72/Kconfig
===================================================================
--- linux4palm/linux/trunk/arch/arm/mach-pxa/palmz72/Kconfig 2007-06-26 10:15:26 UTC (rev 1076)
+++ linux4palm/linux/trunk/arch/arm/mach-pxa/palmz72/Kconfig 2007-06-26 10:48:55 UTC (rev 1077)
@@ -15,6 +15,7 @@
config PALMZ72_BATTERY
tristate "Palm Zire 72 Battery support"
select TOUCHSCREEN_WM97XX
+ select POWER_SUPPLY
depends on MACH_PALMZ72
default m
help
Modified: linux4palm/linux/trunk/arch/arm/mach-pxa/palmz72/gpio_map.txt
===================================================================
--- linux4palm/linux/trunk/arch/arm/mach-pxa/palmz72/gpio_map.txt 2007-06-26 10:15:26 UTC (rev 1076)
+++ linux4palm/linux/trunk/arch/arm/mach-pxa/palmz72/gpio_map.txt 2007-06-26 10:48:55 UTC (rev 1077)
@@ -111,7 +111,7 @@
GPIO109 0 O 00
GPIO110 0 O 00
GPIO111 0 O 00
-GPIO112 0 O 00
+GPIO112 0 O 00 CAMERA?
GPIO113 1 O 00
GPIO114 1 O 00
GPIO115 0 I 00
@@ -119,4 +119,4 @@
GPIO117 1 O 01 SCL
GPIO118 1 O 01 SDA
GPIO119 0 O 00
-GPIO120 0 O 00
+GPIO120 0 O 00 CAMERA?
Modified: linux4palm/linux/trunk/arch/arm/mach-pxa/palmz72/palmz72.c
===================================================================
--- linux4palm/linux/trunk/arch/arm/mach-pxa/palmz72/palmz72.c 2007-06-26 10:15:26 UTC (rev 1076)
+++ linux4palm/linux/trunk/arch/arm/mach-pxa/palmz72/palmz72.c 2007-06-26 10:48:55 UTC (rev 1077)
@@ -447,6 +447,42 @@
platform_add_devices( devices, ARRAY_SIZE(devices) );
}
+/***********************************************************************
+ *
+ * OV9640 Functions
+ *
+ ***********************************************************************/
+void ov9640_gpio_init(void)
+{
+ set_GPIO_mode(81 | GPIO_ALT_FN_2_IN); /* CIF_DD[0] */
+ set_GPIO_mode(55 | GPIO_ALT_FN_1_IN); /* CIF_DD[1] */
+ set_GPIO_mode(51 | GPIO_ALT_FN_1_IN); /* CIF_DD[2] */
+ set_GPIO_mode(50 | GPIO_ALT_FN_1_IN); /* CIF_DD[3] */
+ set_GPIO_mode(52 | GPIO_ALT_FN_1_IN); /* CIF_DD[4] */
+ set_GPIO_mode(48 | GPIO_ALT_FN_1_IN); /* CIF_DD[5] */
+ set_GPIO_mode(93 | GPIO_ALT_FN_1_IN); /* CIF_DD[6] */
+ set_GPIO_mode(108 | GPIO_ALT_FN_1_IN); /* CIF_DD[7] */
+ set_GPIO_mode(53 | GPIO_ALT_FN_2_OUT); /* CIF_MCLK */
+ set_GPIO_mode(54 | GPIO_ALT_FN_3_IN); /* CIF_PCLK */
+ set_GPIO_mode(85 | GPIO_ALT_FN_3_IN); /* CIF_LV */
+ set_GPIO_mode(84 | GPIO_ALT_FN_3_IN); /* CIF_FV */
+
+#if 0
+ set_GPIO_mode(50 | GPIO_OUT); /*CIF_PD */
+ set_GPIO_mode(19 | GPIO_IN); /*CIF_RST */
+#endif
+
+ return;
+}
+
+EXPORT_SYMBOL_GPL(ov9640_gpio_init)
+/***********************************************************************
+ *
+ * end of OV9640 Functions
+ *
+ ***********************************************************************/
+
+
MACHINE_START(PALMZ72, "Palm Zire 72")
/********************************************************/
Modified: linux4palm/linux/trunk/arch/arm/mach-pxa/palmz72/palmz72_pm.c
===================================================================
--- linux4palm/linux/trunk/arch/arm/mach-pxa/palmz72/palmz72_pm.c 2007-06-26 10:15:26 UTC (rev 1076)
+++ linux4palm/linux/trunk/arch/arm/mach-pxa/palmz72/palmz72_pm.c 2007-06-26 10:48:55 UTC (rev 1077)
@@ -15,6 +15,7 @@
#include <linux/pm.h>
#include <linux/fb.h>
#include <linux/platform_device.h>
+#include <linux/delay.h>
#include <asm/mach-types.h>
#include <asm/hardware.h>
@@ -52,6 +53,9 @@
/* Turn off USB power */
SET_PALMZ72_GPIO(USB_POWER,0);
+ SET_PALMZ72_GPIO(BL_POWER, 0);
+ mdelay(50);
+
/* disable GPIO reset - DO NOT REMOVE! */
PCFR &= PCFR_GPR_EN;
@@ -77,6 +81,9 @@
SET_PALMZ72_GPIO(SCREEN,1);
/* Turn on USB power */
SET_PALMZ72_GPIO(USB_POWER,1);
+ /* Hack - something seems to switch it off in-between */
+ SET_PALMZ72_GPIO(BL_POWER, 1);
+ mdelay(50);
return 0;
}
Modified: linux4palm/linux/trunk/drivers/i2c/chips/i2c-ov9640.c
===================================================================
--- linux4palm/linux/trunk/drivers/i2c/chips/i2c-ov9640.c 2007-06-26 10:15:26 UTC (rev 1076)
+++ linux4palm/linux/trunk/drivers/i2c/chips/i2c-ov9640.c 2007-06-26 10:48:55 UTC (rev 1077)
@@ -337,41 +337,6 @@
mdelay(100);
}
-/***********************************************************************
- *
- * OV9640 Functions
- *
- ***********************************************************************/
-static void ov9640_gpio_init()
-{
-
- set_GPIO_mode(27 | GPIO_ALT_FN_3_IN); /* CIF_DD[0] */
- set_GPIO_mode(114 | GPIO_ALT_FN_1_IN); /* CIF_DD[1] */
- set_GPIO_mode(51 | GPIO_ALT_FN_1_IN); /* CIF_DD[2] */
- set_GPIO_mode(115 | GPIO_ALT_FN_2_IN); /* CIF_DD[3] */
- set_GPIO_mode(95 | GPIO_ALT_FN_2_IN); /* CIF_DD[4] */
- set_GPIO_mode(94 | GPIO_ALT_FN_2_IN); /* CIF_DD[5] */
- set_GPIO_mode(17 | GPIO_ALT_FN_2_IN); /* CIF_DD[6] */
- set_GPIO_mode(108 | GPIO_ALT_FN_1_IN); /* CIF_DD[7] */
- set_GPIO_mode(23 | GPIO_ALT_FN_1_OUT); /* CIF_MCLK */
- set_GPIO_mode(54 | GPIO_ALT_FN_3_IN); /* CIF_PCLK */
- set_GPIO_mode(85 | GPIO_ALT_FN_3_IN); /* CIF_LV */
- set_GPIO_mode(84 | GPIO_ALT_FN_3_IN); /* CIF_FV */
- set_GPIO_mode(50 | GPIO_OUT); /*CIF_PD */
- set_GPIO_mode(19 | GPIO_IN); /*CIF_RST */
-
-
- return;
-
-}
-
-/***********************************************************************
- *
- * end of OV9640 Functions
- *
- ***********************************************************************/
-
-
int i2c_ov9640_init(void)
{
int res;
Modified: linux4palm/linux/trunk/drivers/i2c/chips/i2c-ov9640.h
===================================================================
--- linux4palm/linux/trunk/drivers/i2c/chips/i2c-ov9640.h 2007-06-26 10:15:26 UTC (rev 1076)
+++ linux4palm/linux/trunk/drivers/i2c/chips/i2c-ov9640.h 2007-06-26 10:48:55 UTC (rev 1077)
@@ -40,5 +40,7 @@
int blockaddr; /* current using block address. */
unsigned long last_updated; /* In jiffies */
};
+void ov9640_gpio_init(void);
+
#endif
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <hap...@us...> - 2007-06-30 15:52:47
|
Revision: 1098
http://svn.sourceforge.net/hackndev/?rev=1098&view=rev
Author: happy-slapin
Date: 2007-06-30 08:52:40 -0700 (Sat, 30 Jun 2007)
Log Message:
-----------
z72: making stuff work for now
Modified Paths:
--------------
linux4palm/linux/trunk/arch/arm/mach-pxa/palmz72/palmz72.c
linux4palm/linux/trunk/drivers/media/video/pxa_camera_ioctl.c
linux4palm/linux/trunk/drivers/usb/storage/sddr55.c
linux4palm/linux/trunk/drivers/usb/storage/sddr55.h
Modified: linux4palm/linux/trunk/arch/arm/mach-pxa/palmz72/palmz72.c
===================================================================
--- linux4palm/linux/trunk/arch/arm/mach-pxa/palmz72/palmz72.c 2007-06-30 12:03:02 UTC (rev 1097)
+++ linux4palm/linux/trunk/arch/arm/mach-pxa/palmz72/palmz72.c 2007-06-30 15:52:40 UTC (rev 1098)
@@ -406,7 +406,7 @@
.reset_gpio = 34,
.power_gpio = 32,
};
-
+#if 0
static struct platform_device ov9640 = {
.name = "ov96xx",
.id = -1,
@@ -414,8 +414,8 @@
.platform_data = &ov9640_data,
},
};
+#endif
-
/****************
* Init Machine *
****************/
@@ -430,7 +430,9 @@
#endif
&palmz72_led_device,
&bcm2035_bt,
+#if 0
&ov9640,
+#endif
};
/***********************************************************************
@@ -453,40 +455,22 @@
pxa_gpio_mode(85 | GPIO_ALT_FN_3_IN); /* CIF_LV */
pxa_gpio_mode(84 | GPIO_ALT_FN_3_IN); /* CIF_FV */
+#if 0
pxa_gpio_mode(32 | GPIO_OUT);
pxa_gpio_mode(34 | GPIO_OUT);
-#if 0
set_GPIO_mode(50 | GPIO_OUT); /*CIF_PD */
set_GPIO_mode(19 | GPIO_IN); /*CIF_RST */
#endif
-
- return;
}
-#if 0
-void ov9640_set_powerdown_gpio(void)
-{
- /* Not implemented */
-}
-void ov9640_clear_powerdown_gpio(void)
-{
- /* Not implemented */
-}
-EXPORT_SYMBOL_GPL(ov9640_gpio_init);
-EXPORT_SYMBOL_GPL(ov9640_set_powerdown_gpio);
-EXPORT_SYMBOL_GPL(ov9640_clear_powerdown_gpio);
/***********************************************************************
*
* end of OV9640 Functions
*
***********************************************************************/
-#endif
-
static void __init palmz72_init(void)
{
- GCR &= ~GCR_PRIRDY_IEN;
-
// disable interrupt to prevent WM9712 constantly interrupting the CPU
// and preventing the boot process to complete (Thanx Alex & Shadowmite!)
Modified: linux4palm/linux/trunk/drivers/media/video/pxa_camera_ioctl.c
===================================================================
--- linux4palm/linux/trunk/drivers/media/video/pxa_camera_ioctl.c 2007-06-30 12:03:02 UTC (rev 1097)
+++ linux4palm/linux/trunk/drivers/media/video/pxa_camera_ioctl.c 2007-06-30 15:52:40 UTC (rev 1098)
@@ -104,6 +104,7 @@
}
return 0;
}
+
static int pxa_camera_VIDIOCGWIN(p_camera_context_t cam_ctx, void * param)
{
struct video_window vw;
@@ -116,6 +117,7 @@
}
return 0;
}
+
static int pxa_camera_VIDIOCSWIN(p_camera_context_t cam_ctx, void * param)
{
struct video_window vw;
@@ -147,6 +149,7 @@
return camera_set_capture_format(cam_ctx);
}
+
static int pxa_camera_VIDIOCSPICT(p_camera_context_t cam_ctx, void * param)
{
struct video_picture vp;
Modified: linux4palm/linux/trunk/drivers/usb/storage/sddr55.c
===================================================================
--- linux4palm/linux/trunk/drivers/usb/storage/sddr55.c 2007-06-30 12:03:02 UTC (rev 1097)
+++ linux4palm/linux/trunk/drivers/usb/storage/sddr55.c 2007-06-30 15:52:40 UTC (rev 1098)
@@ -1,6 +1,6 @@
/* Driver for SanDisk SDDR-55 SmartMedia reader
*
- * $Id:$
+ * $Id$
*
* SDDR55 driver v0.1:
*
Modified: linux4palm/linux/trunk/drivers/usb/storage/sddr55.h
===================================================================
--- linux4palm/linux/trunk/drivers/usb/storage/sddr55.h 2007-06-30 12:03:02 UTC (rev 1097)
+++ linux4palm/linux/trunk/drivers/usb/storage/sddr55.h 2007-06-30 15:52:40 UTC (rev 1098)
@@ -1,7 +1,7 @@
/* Driver for SanDisk SDDR-55 SmartMedia reader
* Header File
*
- * $Id:$
+ * $Id$
*
* Current development and maintenance by:
* (c) 2002 Simon Munton
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
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.
|
|
From: <sle...@us...> - 2007-07-07 10:14:59
|
Revision: 1114
http://svn.sourceforge.net/hackndev/?rev=1114&view=rev
Author: sleep_walker
Date: 2007-07-07 03:14:52 -0700 (Sat, 07 Jul 2007)
Log Message:
-----------
palmtt3: cumulative patch - UDC, HW UART, BT UART, IrDA support added (BT+IrDA still not working), Power Button reworked, suspend LED problem fixed, created palmtt3-gpio.h, starting to rename from palmt3 to correct palmtt3
Modified Paths:
--------------
linux4palm/linux/trunk/arch/arm/mach-pxa/palmt3/palmt3.c
linux4palm/linux/trunk/arch/arm/mach-pxa/palmt3/palmt3_battery.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/leds-palmtt3.c
Added Paths:
-----------
linux4palm/linux/trunk/include/asm-arm/arch-pxa/palmtt3-gpio.h
Removed Paths:
-------------
linux4palm/linux/trunk/drivers/input/misc/palmtt3-pwr_btn.c
Modified: linux4palm/linux/trunk/arch/arm/mach-pxa/palmt3/palmt3.c
===================================================================
--- linux4palm/linux/trunk/arch/arm/mach-pxa/palmt3/palmt3.c 2007-07-07 09:02:20 UTC (rev 1113)
+++ linux4palm/linux/trunk/arch/arm/mach-pxa/palmt3/palmt3.c 2007-07-07 10:14:52 UTC (rev 1114)
@@ -30,25 +30,28 @@
#include <asm/arch/ssp.h>
#include <asm/arch/irq.h> //test
#include <asm/arch/hardware.h> //test
+#include <asm/arch/irda.h>
+#include <linux/delay.h>
+#include <asm/arch/udc.h>
+#include <asm/arch/serial.h>
#include <linux/input.h>
#include <linux/soc/tsc2101.h>
#include <asm/arch/pxa-pm_ll.h>
#include <asm/arch/pxapwm-bl.h>
+#include <asm/arch/palmtt3-gpio.h>
+#include <asm/arch/tps65010.h>
#include "../generic.h"
// 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)
#define DEBUG 1
/*** FRAMEBUFFER ***/
-static void palmt3_pxafb_backlight_power(int level)
+static void palmtt3_pxafb_backlight_power(int level)
{
// just turn it on/off, other controls via backlight class
if(level)
@@ -57,7 +60,7 @@
CKEN = CKEN & (~CKEN1_PWM1);
}
-static void palmt3_pxafb_lcd_power(int level, struct fb_var_screeninfo *var)
+static void palmtt3_pxafb_lcd_power(int level, struct fb_var_screeninfo *var)
{
if(level) {
GPSR1 = GPIO_bit(38);
@@ -74,7 +77,7 @@
/*** framebuffer ***/
-static struct pxafb_mode_info palmt3_lcd_modes[] = {
+static struct pxafb_mode_info palmtt3_lcd_modes[] = {
{
.pixclock = 0,
.xres = 320,
@@ -90,32 +93,30 @@
}
};
-static struct pxafb_mach_info palmt3_lcd_screen[] = {
- {
- .modes = palmt3_lcd_modes,
- .num_modes = ARRAY_SIZE(palmt3_lcd_modes),
+static struct pxafb_mach_info palmtt3_lcd_screen = {
+ .modes = palmtt3_lcd_modes,
+ .num_modes = ARRAY_SIZE(palmtt3_lcd_modes),
.lccr0 = 0x003008F9,
.lccr3 = 0x03700002,
- .pxafb_backlight_power = &palmt3_pxafb_backlight_power,
- .pxafb_lcd_power = &palmt3_pxafb_lcd_power,
- }
+ .pxafb_backlight_power = &palmtt3_pxafb_backlight_power,
+ .pxafb_lcd_power = &palmtt3_pxafb_lcd_power,
};
/*** SSP ***/
-static struct ssp_dev palmt3_ssp_dev;
+static struct ssp_dev palmtt3_ssp_dev;
-void palmt3_ssp_init(void)
+void palmtt3_ssp_init(void)
{
- printk(KERN_WARNING "palmt3_tsc2101: Resetting SSP, move this to garux?\n");
+ printk(KERN_WARNING "palmtt3_tsc2101: Resetting SSP, move this to garux?\n");
SSCR0 &= ~SSCR0_SSE;
SSCR1 = SSCR1 & 0x3FFC;
- if (ssp_init(&palmt3_ssp_dev, 1, 0))
- printk(KERN_ERR "palmt3_tsc2101: Unable to register SSP handler!\n");
+ if (ssp_init(&palmtt3_ssp_dev, 1, 0))
+ printk(KERN_ERR "palmtt3_tsc2101: Unable to register SSP handler!\n");
else {
- ssp_enable(&palmt3_ssp_dev);
- printk(KERN_INFO "palmt3_tsc2101: SSP device initialized\n");
+ ssp_enable(&palmtt3_ssp_dev);
+ printk(KERN_INFO "palmtt3_tsc2101: SSP device initialized\n");
}
return;
@@ -123,77 +124,77 @@
struct ssp_state ssp1;
-void palmt3_ssp_suspend(void)
+void palmtt3_ssp_suspend(void)
{
- ssp_disable(&palmt3_ssp_dev);
- ssp_save_state(&palmt3_ssp_dev,&ssp1);
+ ssp_disable(&palmtt3_ssp_dev);
+ ssp_save_state(&palmtt3_ssp_dev,&ssp1);
// FIXME power off TSC2101?
}
-void palmt3_ssp_resume(void)
+void palmtt3_ssp_resume(void)
{
// FIXME power on TSC2101?
- ssp_restore_state(&palmt3_ssp_dev,&ssp1);
- ssp_enable(&palmt3_ssp_dev);
+ ssp_restore_state(&palmtt3_ssp_dev,&ssp1);
+ ssp_enable(&palmtt3_ssp_dev);
}
/*** Touchscreen/Sound/Battery Status ***/
-void palmt3_tsc2101_send(int read, int command, int *values, int numval)
+void palmtt3_tsc2101_send(int read, int command, int *values, int numval)
{
u32 ret;
int i;
- GPCR0 = GPIO_bit(PALMT3_GPIO_TSC2101_SS);
+ GPCR0 = GPIO_bit(PALMTT3_GPIO_TSC2101_SS);
- ssp_write_word(&palmt3_ssp_dev, command | read);
- ssp_read_word(&palmt3_ssp_dev, &ret); /* Dummy read */
+ ssp_write_word(&palmtt3_ssp_dev, command | read);
+ ssp_read_word(&palmtt3_ssp_dev, &ret); /* Dummy read */
for (i = 0; i < numval; i++) {
if (read) {
- ssp_write_word(&palmt3_ssp_dev, 0);
- ssp_read_word(&palmt3_ssp_dev, &values[i]);
+ ssp_write_word(&palmtt3_ssp_dev, 0);
+ ssp_read_word(&palmtt3_ssp_dev, &values[i]);
} else {
- ssp_write_word(&palmt3_ssp_dev, values[i]);
- ssp_read_word(&palmt3_ssp_dev, &ret); /* Dummy read */
+ ssp_write_word(&palmtt3_ssp_dev, values[i]);
+ ssp_read_word(&palmtt3_ssp_dev, &ret); /* Dummy read */
}
}
- GPSR0 = GPIO_bit(PALMT3_GPIO_TSC2101_SS);
+ GPSR0 = GPIO_bit(PALMTT3_GPIO_TSC2101_SS);
}
-static int palmt3_tsc2101_pendown(void)
+static int palmtt3_tsc2101_pendown(void)
{
// FIXME PALMT3_GPIO_PENDOWN
- if ((GPLR(PALMT3_GPIO_PENDOWN) & GPIO_bit(PALMT3_GPIO_PENDOWN)) == 0)
+ if ((GPLR(PALMTT3_GPIO_PENDOWN) & GPIO_bit(PALMTT3_GPIO_PENDOWN)) == 0)
return 1;
return 0;
}
-static struct tsc2101_platform_info palmt3_tsc2101_info = {
- .send = palmt3_tsc2101_send,
- .suspend = palmt3_ssp_suspend,
- .resume = palmt3_ssp_resume,
- .irq = PALMT3_IRQ_GPIO_PENDOWN,
- .pendown = palmt3_tsc2101_pendown,
+static struct tsc2101_platform_info palmtt3_tsc2101_info = {
+ .send = palmtt3_tsc2101_send,
+ .suspend = palmtt3_ssp_suspend,
+ .resume = palmtt3_ssp_resume,
+ .irq = PALMTT3_IRQ_GPIO_PENDOWN,
+ .pendown = palmtt3_tsc2101_pendown,
};
struct platform_device tsc2101_device = {
.name = "tsc2101",
.dev = {
- .platform_data = &palmt3_tsc2101_info,
+ .platform_data = &palmtt3_tsc2101_info,
},
.id = -1,
};
/*** Buttons ***/
-static struct platform_device palmt3_btn_device = {
- .name = "palmt3-btn",
+static struct platform_device palmtt3_btn_device = {
+ .name = "palmtt3-btn",
.id = -1,
};
/* Backlight ***/
-static struct pxapwmbl_platform_data palmt3_backlight_data = {
+static struct pxapwmbl_platform_data palmtt3_backlight_data = {
.pwm = 1,
.max_intensity = 0x100,
.default_intensity = 0x50,
@@ -210,23 +211,195 @@
/*** Power button ***/
static struct platform_device palmtt3_power_button = {
- .name = "palmtt3-pwr_btn",
+ .name = "tps65010-pwr_btn",
.id = -1,
};
-static struct platform_device palmt3_backlight_device = {
+/*** IRDA ***/
+
+static void palmtt3_irda_transceiver_mode(struct device *dev, int mode)
+{
+ unsigned long flags;
+
+ local_irq_save(flags);
+
+ if (mode & IR_SIRMODE){
+ printk (KERN_INFO "IrDA: setting mode to SIR\n");
+ }
+ else if (mode & IR_FIRMODE){
+ printk (KERN_INFO "IrDA: setting mode to FIR\n");
+ }
+ if (mode & IR_OFF){
+ printk (KERN_INFO "IrDA: turning OFF\n");
+ SET_GPIO(GPIO_NR_PALMTT3_IR_DISABLE, 1);
+ }
+ else {
+ printk (KERN_INFO "IrDA: turning ON\n");
+ SET_GPIO(GPIO_NR_PALMTT3_IR_DISABLE, 0);
+ SET_GPIO(GPIO46_STRXD_MD, 1);
+ mdelay(30);
+ SET_GPIO(GPIO46_STRXD_MD, 0);
+ }
+
+ local_irq_restore(flags);
+}
+
+
+static struct pxaficp_platform_data palmtt3_ficp_platform_data = {
+ .transceiver_cap = IR_SIRMODE | IR_FIRMODE | IR_OFF,
+ .transceiver_mode = palmtt3_irda_transceiver_mode,
+};
+
+
+/*** Backlight ***/
+static struct platform_device palmtt3_backlight_device = {
.name = "pxapwm-bl",
.dev = {
- .platform_data = &palmt3_backlight_data,
+ .platform_data = &palmtt3_backlight_data,
},
};
+/*******
+ * USB *
+ *******/
+
+static int palmtt3_udc_is_connected (void){
+ int ret = GET_GPIO(GPIO_NR_PALMTT3_USB_DETECT);
+ if (ret)
+ printk (KERN_INFO "palmtt3_udc: device detected [USB_DETECT: %d]\n",ret);
+ else
+ printk (KERN_INFO "palmtt3_udc: no device detected [USB_DETECT: %d]\n",ret);
+
+ return ret;
+}
+
+static void palmtt3_udc_command (int cmd){
+
+ switch (cmd) {
+ case PXA2XX_UDC_CMD_DISCONNECT:
+ SET_GPIO(GPIO_NR_PALMTT3_PUC_USB_POWER, 0);
+ SET_GPIO(GPIO_NR_PALMTT3_USB_POWER, 1);
+ printk(KERN_INFO "palmtt3_udc: got command PXA2XX_UDC_CMD_DISCONNECT\n");
+ break;
+ case PXA2XX_UDC_CMD_CONNECT:
+ SET_GPIO(GPIO_NR_PALMTT3_USB_POWER, 0);
+ SET_GPIO(GPIO_NR_PALMTT3_PUC_USB_POWER, 1);
+ printk(KERN_INFO "palmtt3_udc: got command PXA2XX_UDC_CMD_CONNECT\n");
+ break;
+ default:
+ printk("palmtt3_udc: unknown command '%d'\n", cmd);
+ }
+}
+
+static struct pxa2xx_udc_mach_info palmtt3_udc_mach_info __initdata = {
+ .udc_is_connected = palmtt3_udc_is_connected,
+ .udc_command = palmtt3_udc_command,
+};
+
+
+/*** HW UART - serial in PUC ***/
+int palmtt3_hwuart_state;
+
+void palmtt3_hwuart_configure(int state)
+{
+ switch (state) {
+ case PXA_UART_CFG_PRE_STARTUP:
+ break;
+ case PXA_UART_CFG_POST_STARTUP:
+ SET_GPIO(35,0);
+ SET_GPIO(35,1);
+ palmtt3_hwuart_state = 1;
+ break;
+ case PXA_UART_CFG_PRE_SHUTDOWN:
+ SET_GPIO(35,0);
+ palmtt3_hwuart_state = 0;
+ break;
+ case PXA_UART_CFG_POST_SHUTDOWN:
+ break;
+ default:
+ printk("palmtt3_hwuart_configure: bad request %d\n",state);
+ break;
+ }
+}
+
+static int palmtt3_hwuart_suspend(struct platform_device *dev, pm_message_t state)
+{
+ palmtt3_hwuart_configure(PXA_UART_CFG_PRE_SHUTDOWN);
+ return 0;
+}
+
+static int palmtt3_hwuart_resume(struct platform_device *dev)
+{
+ palmtt3_hwuart_configure(PXA_UART_CFG_POST_STARTUP);
+ return 0;
+}
+
+struct platform_pxa_serial_funcs palmtt3_hwuart = {
+ .configure = palmtt3_hwuart_configure,
+/*
+ .set_txrx = palmtt3_hwuart_set_txrx,
+ .get_txrx = NULL,
+*/
+ .suspend = palmtt3_hwuart_suspend,
+ .resume = palmtt3_hwuart_resume,
+};
+
+/* Bluetooth */
+
+void bcm2035_bt_reset(int on)
+{
+ printk(KERN_NOTICE "Switch BT reset %d\n", on);
+ if (on)
+ SET_GPIO(GPIO_NR_PALMTT3_RESET, 1);
+ else
+ SET_GPIO(GPIO_NR_PALMTT3_RESET, 0 );
+}
+EXPORT_SYMBOL(bcm2035_bt_reset);
+
+void bcm2035_bt_power(int on)
+{
+ printk(KERN_NOTICE "Switch BT power %d\n", on);
+ if (on)
+ tps65010_set_gpio_out_value(GPIO_NR_PALMTT3_TPS65010_BT_POWER,1);
+ else
+ tps65010_set_gpio_out_value(GPIO_NR_PALMTT3_TPS65010_BT_POWER,0);
+}
+EXPORT_SYMBOL(bcm2035_bt_power);
+
+
+struct bcm2035_bt_funcs {
+ void (*configure) ( int state );
+};
+
+static struct bcm2035_bt_funcs bt_funcs;
+
+static void
+bcm2035_bt_configure( int state )
+{
+ if (bt_funcs.configure != NULL)
+ bt_funcs.configure( state );
+}
+
+static struct platform_pxa_serial_funcs bcm2035_pxa_bt_funcs = {
+ .configure = bcm2035_bt_configure,
+};
+
+static struct platform_device bcm2035_bt = {
+ .name = "bcm2035-bt",
+ .id = -1,
+ .dev = {
+ .platform_data = &bt_funcs,
+ },
+};
+
+
+
/*** Suspend/Resume ***/
#ifdef CONFIG_PM
static long int _PM_backup[3];
-void palmt3_suspend(unsigned long ret)
+void palmtt3_suspend(unsigned long ret)
{
unsigned long * addr;
@@ -242,12 +415,24 @@
_PM_backup[2] = *addr;
*addr = ret;
- PWER = 0x5C0F;
- PFER = 0x3;
- PEDR = 0x3;
+ /* event settings for waking-up */
+ PWER = 0;
+ PWER |= PWER_RTC; /* enabling RTC alarm for wake-up */
+ PWER |= PWER_WEP1; /* enabling RTC alarm for wake-up */
+ PWER |= PWER_GPIO0; /* calendar/contacts/voice */
+ PWER |= PWER_GPIO1; /* Active low GP_reset */
+/* PWER |= PWER_GPIO2; card insert - disabled - linux dislike ejecting card with mounted filesystem :) */
+ PWER |= PWER_GPIO3; /* slider */
+ PWER |= PWER_GPIO10; /* 5nav up/down/left/right */
+ PWER |= PWER_GPIO11; /* memo/todo/center */
+ PWER |= PWER_GPIO12; /* HotSync button on cradle */
+ PWER |= PWER_GPIO14; /* power button */
+
+ PFER = PWER_GPIO0 | PWER_GPIO1 | PWER_GPIO11 | PWER_GPIO14;
+ PEDR = PWER_GPIO0 | PWER_GPIO1;
}
-void palmt3_resume(void)
+void palmtt3_resume(void)
{
unsigned long * addr;
@@ -261,9 +446,9 @@
*addr = _PM_backup[2];
}
-static struct pxa_ll_pm_ops palmt3_pm_ops = {
- .suspend = palmt3_suspend,
- .resume = palmt3_resume,
+static struct pxa_ll_pm_ops palmtt3_pm_ops = {
+ .suspend = palmtt3_suspend,
+ .resume = palmtt3_resume,
};
#endif
@@ -272,19 +457,25 @@
static struct platform_device *devices[] __initdata = {
//&palmt3_bl_device,
&tsc2101_device,
- &palmt3_btn_device,
- &palmt3_backlight_device,
+ &palmtt3_btn_device,
+ &palmtt3_backlight_device,
&palmtt3_led_device,
&palmtt3_power_button,
+ &bcm2035_bt,
};
-static void __init palmt3_init(void)
+
+static void __init palmtt3_init(void)
{
- set_pxa_fb_info(palmt3_lcd_screen);
#ifdef CONFIG_PM
- pxa_pm_set_ll_ops(&palmt3_pm_ops);
+ pxa_pm_set_ll_ops(&palmtt3_pm_ops);
#endif
- palmt3_ssp_init();
+ palmtt3_ssp_init();
+ pxa_set_ficp_info(&palmtt3_ficp_platform_data);
+ set_pxa_fb_info(&palmtt3_lcd_screen);
+ pxa_set_udc_info(&palmtt3_udc_mach_info);
+ pxa_set_hwuart_info(&palmtt3_hwuart);
+ pxa_set_btuart_info(&bcm2035_pxa_bt_funcs);
platform_add_devices (devices, ARRAY_SIZE (devices));
}
@@ -296,5 +487,5 @@
.map_io = pxa_map_io,
.init_irq = pxa_init_irq,
.timer = &pxa_timer,
- .init_machine = palmt3_init
+ .init_machine = palmtt3_init
MACHINE_END
Modified: linux4palm/linux/trunk/arch/arm/mach-pxa/palmt3/palmt3_battery.c
===================================================================
--- linux4palm/linux/trunk/arch/arm/mach-pxa/palmt3/palmt3_battery.c 2007-07-07 09:02:20 UTC (rev 1113)
+++ linux4palm/linux/trunk/arch/arm/mach-pxa/palmt3/palmt3_battery.c 2007-07-07 10:14:52 UTC (rev 1114)
@@ -37,13 +37,13 @@
#define BATTERY_CHECK_INTERVAL (HZ * 60) /* every 60 seconds */
-int palmt3_battery_get_max_voltage(struct battery *bat)
+int palmtt3_battery_get_max_voltage(struct battery *bat)
{
//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)
+int palmtt3_battery_get_min_voltage(struct battery *bat)
{
return 3710; // 3.71 V, Critical Threshold set by PalmOS
}
@@ -53,7 +53,7 @@
return 1;
}
-int palmt3_battery_get_voltage(struct battery *bat)
+int palmtt3_battery_get_voltage(struct battery *bat)
{
struct device_driver *tscdrv;
struct device *tscdev;
@@ -83,51 +83,51 @@
return (batv*6250)/4096;
}
-int palmt3_charger_get_usb_status(struct charger *cha)
+int palmtt3_charger_get_usb_status(struct charger *cha)
{
u8 tps65010_get_chgstatus(void);
return ((tps65010_get_chgstatus() & TPS_CHG_USB)?1:0);
}
-int palmt3_charger_get_ac_status(struct charger *cha)
+int palmtt3_charger_get_ac_status(struct charger *cha)
{
u8 tps65010_get_chgstatus(void);
return ((tps65010_get_chgstatus() & TPS_CHG_AC)?1:0);
}
#ifdef CONFIG_BATTCHARGE_MONITOR
-static struct battery palmt3_battery = {
- .name = "palmt3_batt",
+static struct battery palmtt3_battery = {
+ .name = "palmtt3_batt",
.id = "Li-Ion battery",
.min_voltage = 3710,
.max_voltage = 4156,
.v_current = -1,
.temp = -1,
- .get_voltage = palmt3_battery_get_voltage,
+ .get_voltage = palmtt3_battery_get_voltage,
};
-static struct charger palmt3_usb_charger = {
- .name = "palmt3_usb",
+static struct charger palmtt3_usb_charger = {
+ .name = "palmtt3_usb",
.id = "USB",
- .get_status = palmt3_charger_get_usb_status,
+ .get_status = palmtt3_charger_get_usb_status,
};
-static struct charger palmt3_ac_charger = {
- .name = "palmt3_ac",
+static struct charger palmtt3_ac_charger = {
+ .name = "palmtt3_ac",
.id = "AC",
- .get_status = palmt3_charger_get_ac_status,
+ .get_status = palmtt3_charger_get_ac_status,
};
#endif
/* -------------------------- APM ------------------------------------- */
-static void palmt3_apm_get_power_status(struct apm_power_info *info)
+static void palmtt3_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 = palmtt3_battery_get_voltage(NULL);
+ min = palmtt3_battery_get_min_voltage(NULL);
+ max = palmtt3_battery_get_max_voltage(NULL);
curr = curr - min;
if (curr < 0) curr = 0;
@@ -167,58 +167,58 @@
/* -------------------------------------------------------------------- */
-static int palmt3_battery_probe(struct device *dev)
+static int palmtt3_battery_probe(struct device *dev)
{
- printk("Battery interface for palmt3 series\n");
+ printk("Battery interface for palmtt3 series\n");
return 0;
}
-static struct device_driver palmt3_battery_driver = {
- .name = "palmt3_battchargemon",
+static struct device_driver palmtt3_battery_driver = {
+ .name = "palmtt3_battchargemon",
.bus = &platform_bus_type,
- .probe = palmt3_battery_probe,
+ .probe = palmtt3_battery_probe,
};
-static int __init palmt3_battery_init(void)
+static int __init palmtt3_battery_init(void)
{
int retval;
- retval = driver_register(&palmt3_battery_driver);
+ retval = driver_register(&palmtt3_battery_driver);
if (retval)
return retval;
#ifdef CONFIG_BATTCHARGE_MONITOR
- retval = battery_class_register(&palmt3_battery);
- retval = charger_class_register(&palmt3_usb_charger);
- retval = charger_class_register(&palmt3_ac_charger);
+ retval = battery_class_register(&palmtt3_battery);
+ retval = charger_class_register(&palmtt3_usb_charger);
+ retval = charger_class_register(&palmtt3_ac_charger);
- battery_attach_charger(&palmt3_battery, &palmt3_usb_charger);
- battery_attach_charger(&palmt3_battery, &palmt3_ac_charger);
+ battery_attach_charger(&palmtt3_battery, &palmtt3_usb_charger);
+ battery_attach_charger(&palmtt3_battery, &palmtt3_ac_charger);
- battery_update_charge_link(&palmt3_battery);
+ battery_update_charge_link(&palmtt3_battery);
#endif
if (!retval) {
#ifdef CONFIG_PM
- set_apm_get_power_status(palmt3_apm_get_power_status);
+ set_apm_get_power_status(palmtt3_apm_get_power_status);
#endif
}
return retval;
}
-static void __exit palmt3_battery_exit(void)
+static void __exit palmtt3_battery_exit(void)
{
#ifdef CONFIG_BATTCHARGE_MONITOR
- battery_remove_charger(0, &palmt3_ac_charger);
- battery_remove_charger(0, &palmt3_usb_charger);
+ battery_remove_charger(0, &palmtt3_ac_charger);
+ battery_remove_charger(0, &palmtt3_usb_charger);
- charger_class_unregister(&palmt3_usb_charger);
- charger_class_unregister(&palmt3_ac_charger);
- battery_class_unregister(&palmt3_battery);
- driver_unregister(&palmt3_battery_driver);
+ charger_class_unregister(&palmtt3_usb_charger);
+ charger_class_unregister(&palmtt3_ac_charger);
+ battery_class_unregister(&palmtt3_battery);
+ driver_unregister(&palmtt3_battery_driver);
#endif
}
-module_init(palmt3_battery_init);
-module_exit(palmt3_battery_exit);
+module_init(palmtt3_battery_init);
+module_exit(palmtt3_battery_exit);
MODULE_LICENSE("GPL");
MODULE_AUTHOR("Vladimir Pouzanov");
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-07 09:02:20 UTC (rev 1113)
+++ linux4palm/linux/trunk/arch/arm/mach-pxa/palmt3/palmt3_buttons.c 2007-07-07 10:14:52 UTC (rev 1114)
@@ -1,5 +1,5 @@
/*
- * Palm T|T3 hardware buttons
+ * Palm Tungsten|T3 hardware buttons
*
* Author: Vladimir "Farcaller" Pouzanov <far...@gm...>, Martin Kupec
*
@@ -77,24 +77,24 @@
struct input_dev *buttons_dev;
-static struct workqueue_struct *palmt3_workqueue;
-static struct work_struct palmt3_irq_task;
+static struct workqueue_struct *palmtt3_workqueue;
+static struct work_struct palmtt3_irq_task;
static spinlock_t btn_lock = SPIN_LOCK_UNLOCKED;
u16 key_status;
u8 slider;
-static irqreturn_t palmt3_btn_handle(int irq, void *dev_id)
+static irqreturn_t palmtt3_btn_handle(int irq, void *dev_id)
{
if((int) dev_id == 3)
slider = 1;
- queue_work(palmt3_workqueue, &palmt3_irq_task);
+ queue_work(palmtt3_workqueue, &palmtt3_irq_task);
return IRQ_HANDLED;
}
-static void palmt3_irq_queuework(struct work_struct *data)
+static void palmtt3_irq_queuework(struct work_struct *data)
{
unsigned long flags;
int row, gpio, i;
@@ -225,7 +225,7 @@
}
}
-static int palmt3_btn_probe(struct platform_device *dev)
+static int palmtt3_btn_probe(struct platform_device *dev)
{
unsigned long flags, ret;
@@ -251,8 +251,8 @@
key_status = 0;
- palmt3_workqueue = create_workqueue("palmt3btnw");
- INIT_WORK(&palmt3_irq_task, palmt3_irq_queuework);
+ palmtt3_workqueue = create_workqueue("palmtt3btnw");
+ INIT_WORK(&palmtt3_irq_task, palmtt3_irq_queuework);
/* Configure GPIOs as Output and low */
spin_lock_irqsave(&btn_lock, flags);
@@ -274,7 +274,7 @@
spin_unlock_irqrestore(&btn_lock, flags);
#define REG_GPIO(x, e) \
- ret = request_irq (IRQ_GPIO(x), palmt3_btn_handle, SA_SAMPLE_RANDOM, "palmt3_btn", (void*)x); \
+ ret = request_irq (IRQ_GPIO(x), palmtt3_btn_handle, SA_SAMPLE_RANDOM, "palmtt3_btn", (void*)x); \
set_irq_type (IRQ_GPIO(x), e); \
if(ret!=0) { \
DBG("Request GPIO: %d failed\n", x); \
@@ -291,9 +291,9 @@
return 0;
}
-static int palmt3_btn_remove (struct platform_device *dev)
+static int palmtt3_btn_remove (struct platform_device *dev)
{
- destroy_workqueue(palmt3_workqueue);
+ destroy_workqueue(palmtt3_workqueue);
input_unregister_device(buttons_dev);
free_irq(IRQ_GPIO(0), (void*) 0);
@@ -303,31 +303,31 @@
return 0;
}
-static struct platform_driver palmt3_buttons_driver = {
+static struct platform_driver palmtt3_buttons_driver = {
.driver = {
- .name = "palmt3-btn",
+ .name = "palmtt3-btn",
.owner = THIS_MODULE,
},
- .probe = palmt3_btn_probe,
- .remove = palmt3_btn_remove,
+ .probe = palmtt3_btn_probe,
+ .remove = palmtt3_btn_remove,
#ifdef CONFIG_PM
.suspend = NULL,
.resume = NULL,
#endif
};
-static int __init palmt3_btn_init(void)
+static int __init palmtt3_btn_init(void)
{
- return platform_driver_register(&palmt3_buttons_driver);
+ return platform_driver_register(&palmtt3_buttons_driver);
}
-static void __exit palmt3_btn_cleanup(void)
+static void __exit palmtt3_btn_cleanup(void)
{
- platform_driver_unregister(&palmt3_buttons_driver);
+ platform_driver_unregister(&palmtt3_buttons_driver);
}
-module_init(palmt3_btn_init);
-module_exit(palmt3_btn_cleanup);
+module_init(palmtt3_btn_init);
+module_exit(palmtt3_btn_cleanup);
MODULE_AUTHOR("Martin Kupec");
MODULE_DESCRIPTION("Palm T|T3 Buttons driver");
Modified: linux4palm/linux/trunk/drivers/i2c/chips/Kconfig
===================================================================
--- linux4palm/linux/trunk/drivers/i2c/chips/Kconfig 2007-07-07 09:02:20 UTC (rev 1113)
+++ linux4palm/linux/trunk/drivers/i2c/chips/Kconfig 2007-07-07 10:14:52 UTC (rev 1114)
@@ -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 && INPUT_PALMTT3_PWRBTN))
+ depends on I2C && (ARCH_OMAP || MACH_T3XSCALE)
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
@@ -126,6 +126,14 @@
This driver can also be built as a module. If so, the module
will be called tps65010.
+config TPS65010_PWRBTN
+ bool "TPS65010 Power button support"
+ depends on TPS65010
+ default y if MACH_T3XSCALE
+ help
+ If you say yes here you get support for PB_ONOFF pins on TPS6501x
+ series of Power Management chips. This will create input device.
+
config SENSORS_M41T00
tristate "ST M41T00 RTC chip"
depends on I2C && PPC32
Modified: linux4palm/linux/trunk/drivers/i2c/chips/tps65010.c
===================================================================
--- linux4palm/linux/trunk/drivers/i2c/chips/tps65010.c 2007-07-07 09:02:20 UTC (rev 1113)
+++ linux4palm/linux/trunk/drivers/i2c/chips/tps65010.c 2007-07-07 10:14:52 UTC (rev 1114)
@@ -41,8 +41,15 @@
// 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);
+#ifdef CONFIG_TPS65010_PWRBTN
+#include <linux/input.h>
+#include <linux/input_pda.h>
+#include <linux/platform_device.h>
+
+#define BTN_HOLD_DELAY msecs_to_jiffies(100)
+
+int tps65010_pwr_btn_press(void);
+int tps65010_pwr_btn_release(void);
#endif
#define T3_TPS65010_GPIO 14
@@ -103,6 +110,10 @@
unsigned model:8;
u16 vbus;
unsigned long flags;
+#ifdef CONFIG_TPS65010_PWRBTN
+ u8 button_pressed;
+#endif
+
#define FLAG_VBUS_CHANGED 0
#define FLAG_IRQ_ENABLE 1
@@ -113,7 +124,7 @@
/* not currently tracking GPIO state */
};
-#define POWER_POLL_DELAY msecs_to_jiffies(500)
+#define POWER_POLL_DELAY msecs_to_jiffies(5000)
/*-------------------------------------------------------------------------*/
@@ -211,6 +222,16 @@
#endif
+/*
+ * This function clears button press information on suspend.
+ * Without this resuming up with power button sends event to suspend.
+ */
+static int tps65010_resume(struct i2c_client *client)
+{
+ i2c_smbus_read_byte_data(client, TPS_REGSTATUS);
+ return 0;
+}
+
#ifdef CONFIG_DEBUG_FS
static int dbg_show(struct seq_file *s, void *_)
@@ -363,8 +384,9 @@
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();
+#ifdef CONFIG_TPS65010_PWRBTN
+ tps65010_pwr_btn_press();
+ tps->button_pressed = 1;
#endif
#if 0
@@ -459,6 +481,16 @@
tps->chgconf = tmp;
show_chgconfig(tps->por, "update vbus", tmp);
}
+#ifdef CONFIG_TPS65010_PWRBTN
+ if (tps->button_pressed) {
+ if ((1 << 7) & i2c_smbus_read_byte_data(&tps->client, TPS_REGSTATUS))
+ schedule_delayed_work(&tps->work, BTN_HOLD_DELAY);
+ else {
+ tps->button_pressed = 0;
+ tps65010_pwr_btn_release();
+ }
+ }
+#endif
if (test_and_clear_bit(FLAG_IRQ_ENABLE, &tps->flags))
enable_irq(tps->irq);
@@ -540,6 +572,10 @@
tps->client.addr = address;
tps->client.adapter = bus;
tps->client.driver = &tps65010_driver;
+ tps->client.driver->resume = &tps65010_resume;
+#ifdef CONFIG_TPS65010_PWRBTN
+ tps->button_pressed = 0;
+#endif
strlcpy(tps->client.name, DRIVER_NAME, I2C_NAME_SIZE);
status = i2c_attach_client(&tps->client);
@@ -650,8 +686,8 @@
*/
tps->nmask1 = ~0;
(void) i2c_smbus_write_byte_data(&tps->client, TPS_MASK1, ~tps->nmask1);
+ tps->nmask2 = TPS_REG_ONOFF;
- tps->nmask2 = TPS_REG_ONOFF;
if (tps->model == TPS65013)
tps->nmask2 |= TPS_REG_NO_CHG;
(void) i2c_smbus_write_byte_data(&tps->client, TPS_MASK2, ~tps->nmask2);
@@ -1052,7 +1088,83 @@
EXPORT_SYMBOL(tps65013_set_low_pwr);
/*-------------------------------------------------------------------------*/
+/* NOTE: PB_ONOFF pins are supported here as input_device
+ *
+ */
+#ifdef CONFIG_TPS65010_PWRBTN
+#define PWRBTN_REPEAT_DELAY 1000
+#define PWRBTN_REPEAT_PERIOD 500
+struct input_dev *pwr_btn_input;
+char keycode = KEY_F8;
+
+
+int tps65010_pwr_btn_press(void)
+{
+ printk("tps65010_pwr_btn_press\n");
+ input_report_key(pwr_btn_input, keycode, 1);
+ input_sync(pwr_btn_input);
+ return 0;
+}
+
+int tps65010_pwr_btn_release(void)
+{
+ printk("tps65010_pwr_btn_release\n");
+ input_report_key(pwr_btn_input, keycode, 0);
+ input_sync(pwr_btn_input);
+ return 0;
+}
+
+
+static int __init tps65010_pwr_btn_probe(struct platform_device *pdev)
+{
+
+ pwr_btn_input = input_allocate_device();
+ if (!pwr_btn_input) {
+ printk("Input device wasn't allocated!\n");
+ goto err1;
+ }
+
+ pwr_btn_input->name = "tps65010-pwr_btn";
+ pwr_btn_input->id.bustype = BUS_HOST;
+ set_bit(EV_KEY, pwr_btn_input->evbit);
+
+ set_bit(EV_REP, pwr_btn_input->evbit);
+/*
+ pwr_btn_input->rep[REP_DELAY] = PWRBTN_REPEAT_DELAY;
+ pwr_btn_input->rep[REP_PERIOD] = PWRBTN_REPEAT_PERIOD;
+*/
+ set_bit(keycode,pwr_btn_input->keybit);
+ input_register_device(pwr_btn_input);
+
+ return 0;
+err1:
+ return -ENOMEM;
+}
+
+
+static int tps65010_pwr_btn_remove(struct platform_device *pdev)
+{
+ input_unregister_device(pwr_btn_input);
+ return 0;
+}
+
+static struct platform_driver tps65010_pwr_btn_driver = {
+ .driver = {
+ .name = "tps65010-pwr_btn",
+ .owner = THIS_MODULE,
+ },
+ .probe = tps65010_pwr_btn_probe,
+ .remove = tps65010_pwr_btn_remove,
+ .suspend = NULL,
+ .resume = NULL,
+
+};
+#endif
+
+
+
+
static int __init tps_init(void)
{
u32 tries = 3;
@@ -1120,6 +1232,9 @@
}
#endif
+#ifdef CONFIG_TPS65010_PWRBTN
+ status &= platform_driver_register(&tps65010_pwr_btn_driver);
+#endif
return status;
}
/* NOTE: this MUST be initialized before the other parts of the system
@@ -1133,7 +1248,9 @@
static void __exit tps_exit(void)
{
+#ifdef CONFIG_TPS65010_PWRBTN
+ platform_driver_unregister(&tps65010_pwr_btn_driver);
+#endif
i2c_del_driver(&tps65010_driver);
}
module_exit(tps_exit);
-
Modified: linux4palm/linux/trunk/drivers/input/misc/Kconfig
===================================================================
--- linux4palm/linux/trunk/drivers/i...
[truncated message content] |
|
From: <sle...@us...> - 2007-07-08 19:54:28
|
Revision: 1122
http://svn.sourceforge.net/hackndev/?rev=1122&view=rev
Author: sleep_walker
Date: 2007-07-08 12:54:23 -0700 (Sun, 08 Jul 2007)
Log Message:
-----------
palmtt3: BT separation, TPS65010 can be module again
Modified Paths:
--------------
linux4palm/linux/trunk/arch/arm/mach-pxa/palmtt3/Kconfig
linux4palm/linux/trunk/arch/arm/mach-pxa/palmtt3/Makefile
linux4palm/linux/trunk/arch/arm/mach-pxa/palmtt3/palmtt3.c
linux4palm/linux/trunk/include/asm-arm/arch-pxa/palmtt3-gpio.h
Modified: linux4palm/linux/trunk/arch/arm/mach-pxa/palmtt3/Kconfig
===================================================================
--- linux4palm/linux/trunk/arch/arm/mach-pxa/palmtt3/Kconfig 2007-07-08 14:34:34 UTC (rev 1121)
+++ linux4palm/linux/trunk/arch/arm/mach-pxa/palmtt3/Kconfig 2007-07-08 19:54:23 UTC (rev 1122)
@@ -16,6 +16,14 @@
help
Adds battery driver support
+config PALMTT3_BLUETOOTH
+ tristate "Bluetooth support for Palm Tungsten|T3"
+ depends on MACH_T3XSCALE && BT && TPS65010 && BT_BCM2035UART
+ default m if TPS65010=m && BT_BCM2035UART=m
+ default y if TPS65010=y || BT_BCM2035UART=y
+ help
+ Adds bluetooth support for Palm Tungsten|T3
+
config PALMTT3_FBKEYBOARD
bool "On-screen keyboard (BROKEN)"
depends on PALMTT3_TSC2101
Modified: linux4palm/linux/trunk/arch/arm/mach-pxa/palmtt3/Makefile
===================================================================
--- linux4palm/linux/trunk/arch/arm/mach-pxa/palmtt3/Makefile 2007-07-08 14:34:34 UTC (rev 1121)
+++ linux4palm/linux/trunk/arch/arm/mach-pxa/palmtt3/Makefile 2007-07-08 19:54:23 UTC (rev 1122)
@@ -5,4 +5,5 @@
obj-$(CONFIG_MACH_T3XSCALE) += palmtt3.o
obj-$(CONFIG_PALMTT3_BUTTONS) += palmtt3_buttons.o
obj-$(CONFIG_PALMTT3_BATTERY) += palmtt3_battery.o
+obj-$(CONFIG_PALMTT3_BLUETOOTH) += palmtt3_bt.o
obj-$(CONFIG_PALMTT3_FBKEYBOARD) += palmtt3_fbkeyb.o
\ No newline at end of file
Modified: linux4palm/linux/trunk/arch/arm/mach-pxa/palmtt3/palmtt3.c
===================================================================
--- linux4palm/linux/trunk/arch/arm/mach-pxa/palmtt3/palmtt3.c 2007-07-08 14:34:34 UTC (rev 1121)
+++ linux4palm/linux/trunk/arch/arm/mach-pxa/palmtt3/palmtt3.c 2007-07-08 19:54:23 UTC (rev 1122)
@@ -42,11 +42,8 @@
#include <asm/arch/palmtt3-gpio.h>
#include <asm/arch/tps65010.h>
-
#include "../generic.h"
-// FIXME move this to include/asm/arch/palmtt3.h some time
-
#define DEBUG 1
/*** FRAMEBUFFER ***/
@@ -345,29 +342,8 @@
.resume = palmtt3_hwuart_resume,
};
-/* Bluetooth */
-
-void bcm2035_bt_reset(int on)
-{
- printk(KERN_NOTICE "Switch BT reset %d\n", on);
- if (on)
- SET_GPIO(GPIO_NR_PALMTT3_RESET, 1);
- else
- SET_GPIO(GPIO_NR_PALMTT3_RESET, 0 );
-}
-EXPORT_SYMBOL(bcm2035_bt_reset);
-
-void bcm2035_bt_power(int on)
-{
- printk(KERN_NOTICE "Switch BT power %d\n", on);
- if (on)
- tps65010_set_gpio_out_value(GPIO_NR_PALMTT3_TPS65010_BT_POWER,1);
- else
- tps65010_set_gpio_out_value(GPIO_NR_PALMTT3_TPS65010_BT_POWER,0);
-}
-EXPORT_SYMBOL(bcm2035_bt_power);
-
-
+/*** Bluetooth ***/
+#ifdef CONFIGURE_PALMTT3_BLUETOOTH
struct bcm2035_bt_funcs {
void (*configure) ( int state );
};
@@ -392,9 +368,8 @@
.platform_data = &bt_funcs,
},
};
+#endif //CONFIG_PALMTT3_BLUETOOTH
-
-
/*** Suspend/Resume ***/
#ifdef CONFIG_PM
static long int _PM_backup[3];
@@ -461,7 +436,9 @@
&palmtt3_backlight_device,
&palmtt3_led_device,
&palmtt3_power_button,
+#ifdef CONFIGURE_PALMTT3_BLUETOOTH
&bcm2035_bt,
+#endif
};
@@ -475,7 +452,9 @@
set_pxa_fb_info(&palmtt3_lcd_screen);
pxa_set_udc_info(&palmtt3_udc_mach_info);
pxa_set_hwuart_info(&palmtt3_hwuart);
+#ifdef CONFIGURE_PALMTT3_BLUETOOTH
pxa_set_btuart_info(&bcm2035_pxa_bt_funcs);
+#endif
platform_add_devices (devices, ARRAY_SIZE (devices));
}
Modified: linux4palm/linux/trunk/include/asm-arm/arch-pxa/palmtt3-gpio.h
===================================================================
--- linux4palm/linux/trunk/include/asm-arm/arch-pxa/palmtt3-gpio.h 2007-07-08 14:34:34 UTC (rev 1121)
+++ linux4palm/linux/trunk/include/asm-arm/arch-pxa/palmtt3-gpio.h 2007-07-08 19:54:23 UTC (rev 1122)
@@ -19,6 +19,8 @@
#ifndef _INCLUDE_PALMTT3_GPIO_H_
#define _INCLUDE_PALMTT3_GPIO_H_
+#include <asm/arch/pxa-regs.h>
+#include <asm/arch/gpio.h>
#define T3_TPS65010_GPIO 14
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <sle...@us...> - 2007-07-09 22:35:13
|
Revision: 1124
http://svn.sourceforge.net/hackndev/?rev=1124&view=rev
Author: sleep_walker
Date: 2007-07-09 15:35:05 -0700 (Mon, 09 Jul 2007)
Log Message:
-----------
palmtt3: fixing IrDA, removing useless dependencies in mmc-card led trigger
Modified Paths:
--------------
linux4palm/linux/trunk/arch/arm/mach-pxa/palmtt3/palmtt3.c
linux4palm/linux/trunk/drivers/leds/Kconfig
linux4palm/linux/trunk/include/linux/leds.h
Modified: linux4palm/linux/trunk/arch/arm/mach-pxa/palmtt3/palmtt3.c
===================================================================
--- linux4palm/linux/trunk/arch/arm/mach-pxa/palmtt3/palmtt3.c 2007-07-08 20:04:44 UTC (rev 1123)
+++ linux4palm/linux/trunk/arch/arm/mach-pxa/palmtt3/palmtt3.c 2007-07-09 22:35:05 UTC (rev 1124)
@@ -42,6 +42,7 @@
#include <asm/arch/palmtt3-gpio.h>
#include <asm/arch/tps65010.h>
+//#include "palmtt3_bt.h"
#include "../generic.h"
#define DEBUG 1
@@ -214,7 +215,6 @@
/*** IRDA ***/
-
static void palmtt3_irda_transceiver_mode(struct device *dev, int mode)
{
unsigned long flags;
@@ -222,21 +222,19 @@
local_irq_save(flags);
if (mode & IR_SIRMODE){
- printk (KERN_INFO "IrDA: setting mode to SIR\n");
+ printk ("IrDA: setting mode to SIR\n");
}
else if (mode & IR_FIRMODE){
- printk (KERN_INFO "IrDA: setting mode to FIR\n");
+ printk ("IrDA: setting mode to FIR\n");
}
if (mode & IR_OFF){
- printk (KERN_INFO "IrDA: turning OFF\n");
+ printk ("IrDA: turning OFF\n");
SET_GPIO(GPIO_NR_PALMTT3_IR_DISABLE, 1);
+
}
else {
printk (KERN_INFO "IrDA: turning ON\n");
SET_GPIO(GPIO_NR_PALMTT3_IR_DISABLE, 0);
- SET_GPIO(GPIO46_STRXD_MD, 1);
- mdelay(30);
- SET_GPIO(GPIO46_STRXD_MD, 0);
}
local_irq_restore(flags);
@@ -244,7 +242,7 @@
static struct pxaficp_platform_data palmtt3_ficp_platform_data = {
- .transceiver_cap = IR_SIRMODE | IR_FIRMODE | IR_OFF,
+ .transceiver_cap = IR_SIRMODE | IR_OFF,
.transceiver_mode = palmtt3_irda_transceiver_mode,
};
@@ -334,10 +332,6 @@
struct platform_pxa_serial_funcs palmtt3_hwuart = {
.configure = palmtt3_hwuart_configure,
-/*
- .set_txrx = palmtt3_hwuart_set_txrx,
- .get_txrx = NULL,
-*/
.suspend = palmtt3_hwuart_suspend,
.resume = palmtt3_hwuart_resume,
};
Modified: linux4palm/linux/trunk/drivers/leds/Kconfig
===================================================================
--- linux4palm/linux/trunk/drivers/leds/Kconfig 2007-07-08 20:04:44 UTC (rev 1123)
+++ linux4palm/linux/trunk/drivers/leds/Kconfig 2007-07-09 22:35:05 UTC (rev 1124)
@@ -197,8 +197,9 @@
If unsure, say Y.
config LEDS_TRIGGER_MMC_CARD
- bool "LED MMC Card Trigger"
- depends on LEDS_TRIGGERS && ARCH_PXA && (MMC_PXA || MMC_WBSD_PALMT3)
+ tristate "LED MMC Card Trigger"
+ depends LEDS_TRIGGERS
+ default m
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/include/linux/leds.h
===================================================================
--- linux4palm/linux/trunk/include/linux/leds.h 2007-07-08 20:04:44 UTC (rev 1123)
+++ linux4palm/linux/trunk/include/linux/leds.h 2007-07-09 22:35:05 UTC (rev 1124)
@@ -174,7 +174,7 @@
#else
#define ledtrig_ide_activity() do {} while(0)
#endif
-#ifdef CONFIG_LEDS_TRIGGER_MMC_CARD
+#if defined(CONFIG_LEDS_TRIGGER_MMC_CARD) || defined(CONFIG_LEDS_TRIGGER_MMC_CARD_MODULE)
extern void ledtrig_mmc_activity(void);
#else
#define ledtrig_mmc_activity() do {} while(0)
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <sle...@us...> - 2007-07-10 10:24:18
|
Revision: 1125
http://svn.sourceforge.net/hackndev/?rev=1125&view=rev
Author: sleep_walker
Date: 2007-07-10 03:24:09 -0700 (Tue, 10 Jul 2007)
Log Message:
-----------
palmtt3: fixed tsc2101 and sound dependencies, GPIO header update
Modified Paths:
--------------
linux4palm/linux/trunk/arch/arm/mach-pxa/palmtt3/palmtt3.c
linux4palm/linux/trunk/arch/arm/mach-pxa/palmtt3/palmtt3_bt.c
linux4palm/linux/trunk/drivers/input/touchscreen/Kconfig
linux4palm/linux/trunk/drivers/mfd/Kconfig
linux4palm/linux/trunk/include/asm-arm/arch-pxa/palmtt3-gpio.h
linux4palm/linux/trunk/sound/arm/Kconfig
Modified: linux4palm/linux/trunk/arch/arm/mach-pxa/palmtt3/palmtt3.c
===================================================================
--- linux4palm/linux/trunk/arch/arm/mach-pxa/palmtt3/palmtt3.c 2007-07-09 22:35:05 UTC (rev 1124)
+++ linux4palm/linux/trunk/arch/arm/mach-pxa/palmtt3/palmtt3.c 2007-07-10 10:24:09 UTC (rev 1125)
@@ -396,6 +396,7 @@
PWER |= PWER_GPIO11; /* memo/todo/center */
PWER |= PWER_GPIO12; /* HotSync button on cradle */
PWER |= PWER_GPIO14; /* power button */
+ PWER |= PWER_GPIO15; /* Bluetooth wakeup? */
PFER = PWER_GPIO0 | PWER_GPIO1 | PWER_GPIO11 | PWER_GPIO14;
PEDR = PWER_GPIO0 | PWER_GPIO1;
Modified: linux4palm/linux/trunk/arch/arm/mach-pxa/palmtt3/palmtt3_bt.c
===================================================================
--- linux4palm/linux/trunk/arch/arm/mach-pxa/palmtt3/palmtt3_bt.c 2007-07-09 22:35:05 UTC (rev 1124)
+++ linux4palm/linux/trunk/arch/arm/mach-pxa/palmtt3/palmtt3_bt.c 2007-07-10 10:24:09 UTC (rev 1125)
@@ -18,10 +18,14 @@
void bcm2035_bt_reset(int on)
{
printk(KERN_NOTICE "Switch BT reset %d\n", on);
- if (on)
- SET_GPIO(GPIO_NR_PALMTT3_RESET, 1);
- else
- SET_GPIO(GPIO_NR_PALMTT3_RESET, 0 );
+ if (on) {
+ /* FIXME: it's just template, GPIOs are not the right ones */
+ pxa_gpio_mode(GPIO83_NSSP_TX);
+ pxa_gpio_mode(GPIO84_NSSP_TX);
+ }
+ else {
+
+ }
}
EXPORT_SYMBOL(bcm2035_bt_reset);
Modified: linux4palm/linux/trunk/drivers/input/touchscreen/Kconfig
===================================================================
--- linux4palm/linux/trunk/drivers/input/touchscreen/Kconfig 2007-07-09 22:35:05 UTC (rev 1124)
+++ linux4palm/linux/trunk/drivers/input/touchscreen/Kconfig 2007-07-10 10:24:09 UTC (rev 1125)
@@ -56,9 +56,8 @@
config TOUCHSCREEN_TSC2101
tristate "TI TSC2101 touchscreen input driver"
- depends on (MACH_HX2750 || MACH_T3XSCALE) && INPUT && INPUT_TOUCHSCREEN
- select SOC_TSC2101
- default y
+ depends on (MACH_HX2750 || MACH_T3XSCALE) && INPUT_TOUCHSCREEN
+ default y
help
Say Y here to enable the driver for the touchscreen on the
iPAQ hx2750 series of PDAs or Palm Tungsten|T3.
Modified: linux4palm/linux/trunk/drivers/mfd/Kconfig
===================================================================
--- linux4palm/linux/trunk/drivers/mfd/Kconfig 2007-07-09 22:35:05 UTC (rev 1124)
+++ linux4palm/linux/trunk/drivers/mfd/Kconfig 2007-07-10 10:24:09 UTC (rev 1125)
@@ -104,6 +104,10 @@
config SOC_TSC2101
tristate "Support for TI TSC2101 Touchscreen and Audio Codec"
+ depends TOUCHSCREEN_TSC2101 && SOUND && SND && SND_PXA2xx_I2SOUND
+# depends TOUCHSCREEN_TSC2101
+# select SND_PXA2xx_I2SOUND
+ default m
help
Support for TI TSC2101 Touchscreen and Audio Codec
Modified: linux4palm/linux/trunk/include/asm-arm/arch-pxa/palmtt3-gpio.h
===================================================================
--- linux4palm/linux/trunk/include/asm-arm/arch-pxa/palmtt3-gpio.h 2007-07-09 22:35:05 UTC (rev 1124)
+++ linux4palm/linux/trunk/include/asm-arm/arch-pxa/palmtt3-gpio.h 2007-07-10 10:24:09 UTC (rev 1125)
@@ -28,19 +28,15 @@
#define PALMTT3_GPIO_PENDOWN (37)
#define PALMTT3_IRQ_GPIO_PENDOWN IRQ_GPIO(PALMTT3_GPIO_PENDOWN)
-#define GPIO_NR_PALMTT3_ICP_RXD 46 // Infrared receive pin
-#define GPIO_NR_PALMTT3_ICP_TXD 47 // Infrared transmit pin
#define GPIO_NR_PALMTT3_IR_DISABLE 36
-#define GPIO_NR_PALMTT3_ICP_RXD_MD (GPIO_NR_PALMTT3_ICP_RXD | GPIO_ALT_FN_1_IN)
-#define GPIO_NR_PALMTT3_ICP_TXD_MD (GPIO_NR_PALMTT3_ICP_TXD | GPIO_ALT_FN_2_OUT)
#define GPIO_NR_PALMTT3_USB_POWER 53
#define GPIO_NR_PALMTT3_PUC_USB_POWER 85
#define GPIO_NR_PALMTT3_USB_DETECT 9
#define GPIO_NR_PALMTT3_TPS65010_BT_POWER 4
-#define GPIO_NR_PALMTT3_RESET 84
+#define GPIO_NR_PALMTT3_BT_WAKEUP 15
#define GET_GPIO(gpio) (GPLR(gpio) & GPIO_bit(gpio))
Modified: linux4palm/linux/trunk/sound/arm/Kconfig
===================================================================
--- linux4palm/linux/trunk/sound/arm/Kconfig 2007-07-09 22:35:05 UTC (rev 1124)
+++ linux4palm/linux/trunk/sound/arm/Kconfig 2007-07-10 10:24:09 UTC (rev 1125)
@@ -108,6 +108,7 @@
config SND_PXA2xx_I2SOUND
tristate "PXA2 I2Sound support"
+ depends on SND
select SND_PCM
config SND_PXA2XX_PCM
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <mis...@us...> - 2007-07-13 21:53:10
|
Revision: 1143
http://svn.sourceforge.net/hackndev/?rev=1143&view=rev
Author: miska_tx
Date: 2007-07-13 14:53:03 -0700 (Fri, 13 Jul 2007)
Log Message:
-----------
palmtx: Some macro corrections. Used LCCRman for nicer LCD settings and changed battery limit.
Modified Paths:
--------------
linux4palm/linux/trunk/arch/arm/mach-pxa/palmtx/palmtx.c
linux4palm/linux/trunk/include/asm-arm/arch-pxa/palmtx-init.h
Modified: linux4palm/linux/trunk/arch/arm/mach-pxa/palmtx/palmtx.c
===================================================================
--- linux4palm/linux/trunk/arch/arm/mach-pxa/palmtx/palmtx.c 2007-07-13 13:40:13 UTC (rev 1142)
+++ linux4palm/linux/trunk/arch/arm/mach-pxa/palmtx/palmtx.c 2007-07-13 21:53:03 UTC (rev 1143)
@@ -39,6 +39,7 @@
#include <asm/arch/udc.h>
#include <asm/arch/irda.h>
#include <asm/arch/serial.h>
+#include <asm/arch/bitfield.h>
#include <asm/arch/pxa27x_keyboard.h>
#include <asm/arch/pxapwm-bl.h>
Modified: linux4palm/linux/trunk/include/asm-arm/arch-pxa/palmtx-init.h
===================================================================
--- linux4palm/linux/trunk/include/asm-arm/arch-pxa/palmtx-init.h 2007-07-13 13:40:13 UTC (rev 1142)
+++ linux4palm/linux/trunk/include/asm-arm/arch-pxa/palmtx-init.h 2007-07-13 21:53:03 UTC (rev 1143)
@@ -31,10 +31,16 @@
//
// values as dumped from device
-#define PALMTX_INIT_LCD_LLC0 0x07b008f9
+//#define PALMTX_INIT_LCD_LLC0 0x07b008f9
+#define PALMTX_INIT_LCD_LLC0 LCCR0_ENB | LCCR0_Color | LCCR0_Sngl | LCCR0_LDM \
+ | LCCR0_SFM | LCCR0_IUM | LCCR0_EFM | LCCR0_Act | LCCR0_4PixMono | \
+ LCCR0_QDM | LCCR0_BM | LCCR0_OUM | LCCR0_RDSTM | LCCR0_CMDIM | \
+ LCCR0_OUC | LCCR0_LDDALT
#define PALMTX_INIT_LCD_LLC1 0x1f030d3f
#define PALMTX_INIT_LCD_LLC2 0x070801df
-#define PALMTX_INIT_LCD_LLC3 0x04700004
+//#define PALMTX_INIT_LCD_LLC3 0x04700004
+#define PALMTX_INIT_LCD_LLC3 LCCR3_PixClkDiv(2) | LCCR3_HorSnchL | \
+ LCCR3_VrtSnchL | LCCR3_PixFlEdg | LCCR3_OutEnH | LCCR3_Bpp(4)
// KEYPAD configuration
@@ -54,7 +60,7 @@
// BATTERY
#define PALMTX_BAT_MAX_VOLTAGE 4000 // 4.00v current voltage at max charge as from ZLauncher
-#define PALMTX_BAT_MIN_VOLTAGE 3600 // 3.60v critical voltage as from FileZ
+#define PALMTX_BAT_MIN_VOLTAGE 3500 // 3.60v critical voltage as from FileZ
#define PALMTX_BAT_MAX_CURRENT 0 // unknokn
#define PALMTX_BAT_MIN_CURRENT 0 // unknown
#define PALMTX_BAT_MAX_CHARGE 1 // unknown
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|