|
From: <cri...@us...> - 2006-12-03 13:46:45
|
Revision: 692
http://svn.sourceforge.net/hackndev/?rev=692&view=rev
Author: cristianop
Date: 2006-12-03 05:46:39 -0800 (Sun, 03 Dec 2006)
Log Message:
-----------
palmtx: added irda support; some cleanup ...
Modified Paths:
--------------
linux4palm/linux/trunk/arch/arm/mach-pxa/palmtx/Makefile
linux4palm/linux/trunk/arch/arm/mach-pxa/palmtx/palmtx.c
linux4palm/linux/trunk/arch/arm/mach-pxa/palmtx/palmtx_lcd.c
linux4palm/linux/trunk/include/asm-arm/arch-pxa/palmtx-gpio.h
linux4palm/linux/trunk/include/asm-arm/arch-pxa/palmtx-init.h
Modified: linux4palm/linux/trunk/arch/arm/mach-pxa/palmtx/Makefile
===================================================================
--- linux4palm/linux/trunk/arch/arm/mach-pxa/palmtx/Makefile 2006-12-02 19:44:15 UTC (rev 691)
+++ linux4palm/linux/trunk/arch/arm/mach-pxa/palmtx/Makefile 2006-12-03 13:46:39 UTC (rev 692)
@@ -5,4 +5,5 @@
obj-$(CONFIG_MACH_XSCALE_PALMTX) += palmtx.o
obj-$(CONFIG_PALMTX_AC97) += palmld_ac97.o
obj-$(CONFIG_PALMTX_LCD) += palmtx_lcd.o
+obj-$(CONFIG_PM) += palmtx_pm.o
#obj-$(CONFIG_PALMTX_PCMCIA) += palmtx_pcmcia.o
Modified: linux4palm/linux/trunk/arch/arm/mach-pxa/palmtx/palmtx.c
===================================================================
--- linux4palm/linux/trunk/arch/arm/mach-pxa/palmtx/palmtx.c 2006-12-02 19:44:15 UTC (rev 691)
+++ linux4palm/linux/trunk/arch/arm/mach-pxa/palmtx/palmtx.c 2006-12-03 13:46:39 UTC (rev 692)
@@ -36,6 +36,7 @@
#include <asm/arch/pxa-dmabounce.h>
#include <asm/arch/pxa-regs.h>
#include <asm/arch/udc.h>
+#include <asm/arch/irda.h>
#include <asm/arch/pxa27x_keyboard.h>
#include <asm/arch/pxapwm-bl.h>
@@ -187,86 +188,58 @@
.name = "palmtx-lcd",
};
-/**
- * IRDA
- */
-/* Uncomment the following line to get serial console via SIR work from
- * the very early booting stage. This is not useful for end-user.
- */
-// #define EARLY_SIR_CONSOLE
-#define IR_TRANSCEIVER_ON SET_HX4700_GPIO_N(IR_ON, 1)
-#define IR_TRANSCEIVER_OFF SET_HX4700_GPIO_N(IR_ON, 0)
+// IRDA
-static void palmtx_irda_configure (struct uart_pxa_port *up, int enable)
+static void palmtx_irda_transceiver_mode(struct device *dev, int mode)
{
- /* Switch STUART RX/TX pins to SIR */
- pxa_gpio_mode( GPIO_NR_PALMTX_ICP_RXD_MD );
- pxa_gpio_mode( GPIO_NR_PALMTX_ICP_TXD_MD );
+ unsigned long flags;
- /* make sure FIR ICP is off */
- ICCR0 = 0;
+ local_irq_save(flags);
- if (enable) {
- /* configure STUART to for SIR */
- STISR = STISR_XMODE | STISR_RCVEIR | STISR_RXPL;
- //IR_TRANSCEIVER_ON;
- } else {
- STISR = 0;
- //IR_TRANSCEIVER_OFF;
- }
-}
+ if (mode & IR_SIRMODE){
+ printk (KERN_INFO "palmtx_irda: setting mode to SIR\n");
+ }
+ else if (mode & IR_FIRMODE){
+ printk (KERN_INFO "palmtx_irda: setting mode to FIR\n");
+ }
+ if (mode & IR_OFF){
+ printk (KERN_INFO "palmtx_irda: turning tranceiver OFF\n");
+ SET_GPIO(GPIO_NR_PALMTX_IR_DISABLE, 1);
+ }
+ else {
+ printk (KERN_INFO "palmtx_irda: turning tranceiver ON\n");
+ SET_GPIO(GPIO_NR_PALMTX_IR_DISABLE, 0);
+ SET_GPIO(GPIO_NR_PALMTX_ICP_TXD_MD, 1);
+ mdelay(30);
+ SET_GPIO(GPIO_NR_PALMTX_ICP_TXD_MD, 0);
+ }
-
-static void palmtx_irda_set_txrx (struct uart_pxa_port *up, int txrx)
-{
- unsigned old_stisr = STISR;
- unsigned new_stisr = old_stisr;
-
- if (txrx & PXA_SERIAL_TX) {
- /* Ignore RX if TX is set */
- txrx &= PXA_SERIAL_TX;
- new_stisr |= STISR_XMITIR;
- } else
- new_stisr &= ~STISR_XMITIR;
-
- if (txrx & PXA_SERIAL_RX)
- new_stisr |= STISR_RCVEIR;
- else
- new_stisr &= ~STISR_RCVEIR;
-
- if (new_stisr != old_stisr) {
- while (!(STLSR & LSR_TEMT))
- ;
- //IR_TRANSCEIVER_OFF;
- STISR = new_stisr;
- //IR_TRANSCEIVER_ON;
- }
+ local_irq_restore(flags);
}
-static int palmtx_irda_get_txrx (struct uart_pxa_port *up)
-{
- return ((STISR & STISR_XMITIR) ? PXA_SERIAL_TX : 0) |
- ((STISR & STISR_RCVEIR) ? PXA_SERIAL_RX : 0);
+static struct pxaficp_platform_data palmtx_ficp_platform_data = {
+ .transceiver_cap = IR_SIRMODE | IR_FIRMODE | IR_OFF,
+ .transceiver_mode = palmtx_irda_transceiver_mode,
+};
-}
-static struct platform_pxa_serial_funcs palmtx_pxa_irda_funcs = {
- .configure = palmtx_irda_configure,
- .set_txrx = palmtx_irda_set_txrx,
- .get_txrx = palmtx_irda_get_txrx,
-};
+
// UDC (USB gadget controller)
static int palmtx_udc_is_connected (void){
int ret = !(GET_GPIO(GPIO_NR_PALMTX_USB_DETECT));
- printk (KERN_INFO "palmtx_udc: gpio status is %d\n",ret);
+ if (ret)
+ printk (KERN_INFO "palmtx_udc: device detected [USB_DETECT: %d]\n",ret);
+ else
+ printk (KERN_INFO "palmtx_udc: no device detected [USB_DETECT: %d]\n",ret);
+
return ret;
}
@@ -371,63 +344,41 @@
};
-// grabbed Alex' initialization code: thx!
static void __init palmtx_map_io(void)
{
pxa_map_io();
iotable_init(palmtx_io_desc, ARRAY_SIZE(palmtx_io_desc));
-
- /* wake up on */
-
- PWER |= PWER_GPIO0 | PWER_RTC | PWER_GPIO12;
- PFER |= PWER_GPIO0 | 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;
-
- PGSR2 |= (1<<30);
- PGSR3 |= (1<<7) | (1<<8) | (1<<9);
-
- PKWR |= GPIO_bit(0) | GPIO_bit(12) | GPIO_bit(3) | (1<<17);
- PKSR = 0xffffffff; // clear
-
- /* Clear reset status */
- RCSR = RCSR_HWR | RCSR_WDR | RCSR_SMR | RCSR_GPR;
}
+
static void __init palmtx_init(void)
{
-
- // disable interrupt to prevent WM9712 constantly interrupting the CPU
+ // disable primary codec interrupt to prevent WM9712 constantly interrupting the CPU
// and preventing the boot process to complete (Thanx Alex & Shadowmite!)
GCR &= ~GCR_PRIRDY_IEN;
- // set AC97's GPIOs
+ // configure AC97's GPIOs
pxa_gpio_mode(GPIO28_BITCLK_AC97_MD);
pxa_gpio_mode(GPIO29_SDATA_IN_AC97_MD);
pxa_gpio_mode(GPIO30_SDATA_OUT_AC97_MD);
pxa_gpio_mode(GPIO31_SYNC_AC97_MD);
- set_pxa_fb_info(&palmtx_fb);
- pxa_set_mci_info( &palmtx_mci_platform_data );
- pxa_set_udc_info(&palmtx_udc_mach_info);
-
- platform_add_devices( devices, ARRAY_SIZE(devices) );
+ set_pxa_fb_info ( &palmtx_fb );
+ pxa_set_mci_info ( &palmtx_mci_platform_data );
+ pxa_set_udc_info ( &palmtx_udc_mach_info );
+ pxa_set_ficp_info ( &palmtx_ficp_platform_data );
- stuart_device.dev.platform_data = &palmtx_pxa_irda_funcs;
+ platform_add_devices( devices, ARRAY_SIZE(devices) );
+
+ //stuart_device.dev.platform_data = &palmtx_pxa_irda_funcs;
}
MACHINE_START(XSCALE_PALMTX, "Palm TX")
- //.phys_ram = PALMTX_PHYS_RAM_START,
.phys_io = PALMTX_PHYS_IO_START,
- //.io_pg_offst = (io_p2v(0x40000000) >> 18) & 0xfffc,
.io_pg_offst = io_p2v(0x40000000),
.boot_params = 0xa0000100,
.map_io = palmtx_map_io,
Modified: linux4palm/linux/trunk/arch/arm/mach-pxa/palmtx/palmtx_lcd.c
===================================================================
--- linux4palm/linux/trunk/arch/arm/mach-pxa/palmtx/palmtx_lcd.c 2006-12-02 19:44:15 UTC (rev 691)
+++ linux4palm/linux/trunk/arch/arm/mach-pxa/palmtx/palmtx_lcd.c 2006-12-03 13:46:39 UTC (rev 692)
@@ -100,24 +100,13 @@
static int palmtx_lcd_suspend(struct device *dev, pm_message_t state)
{
- struct pm_save_data *save;
-
- if (!dev->power.saved_state)
- dev->power.saved_state = kmalloc(sizeof(struct pm_save_data), GFP_KERNEL);
- if (!dev->power.saved_state)
- return -ENOMEM;
- save = dev->power.saved_state;
+ palmtx_lcd_set_power(pxafb_lcd_device, FB_BLANK_UNBLANK);
return 0;
}
static int palmtx_lcd_resume(struct device *dev)
{
- if (dev->power.saved_state) {
- struct pm_save_data *save = dev->power.saved_state;
- kfree(dev->power.saved_state);
- dev->power.saved_state = NULL;
- }
-
+ palmtx_lcd_set_power(pxafb_lcd_device, FB_BLANK_POWERDOWN);
return 0;
}
#endif
Modified: linux4palm/linux/trunk/include/asm-arm/arch-pxa/palmtx-gpio.h
===================================================================
--- linux4palm/linux/trunk/include/asm-arm/arch-pxa/palmtx-gpio.h 2006-12-02 19:44:15 UTC (rev 691)
+++ linux4palm/linux/trunk/include/asm-arm/arch-pxa/palmtx-gpio.h 2006-12-03 13:46:39 UTC (rev 692)
@@ -28,6 +28,7 @@
#define _INCLUDE_PALMTX_GPIO_H_
/* GPIOs */
+#define GPIO_NR_PALMTX_GPIO_RESET 1
#define GPIO_NR_PALMTX_POWER_DETECT 90
#define GPIO_NR_PALMTX_HOTSYNC_BUTTON_N 10
@@ -56,6 +57,7 @@
#define GPIO_NR_PALMTX_ICP_RXD 46 // Infrared receive pin
#define GPIO_NR_PALMTX_ICP_TXD 47 // Infrared transmit pin
+#define GPIO_NR_PALMTX_IR_DISABLE 40 // connected to SD pin of tranceiver (TFBS4710?) ?
#define GPIO_NR_PALMTX_ICP_RXD_MD (GPIO_NR_PALMTX_ICP_RXD | GPIO_ALT_FN_1_IN)
#define GPIO_NR_PALMTX_ICP_TXD_MD (GPIO_NR_PALMTX_ICP_TXD | GPIO_ALT_FN_2_OUT)
@@ -75,4 +77,6 @@
#define IRQ_GPIO_PALMTX_USB_DETECT IRQ_GPIO(GPIO_NR_PALMTX_USB_DETECT)
+#define IRQ_GPIO_PALMTX_GPIO_RESET IRQ_GPIO(GPIO_NR_PALMTX_GPIO_RESET)
+
#endif
Modified: linux4palm/linux/trunk/include/asm-arm/arch-pxa/palmtx-init.h
===================================================================
--- linux4palm/linux/trunk/include/asm-arm/arch-pxa/palmtx-init.h 2006-12-02 19:44:15 UTC (rev 691)
+++ linux4palm/linux/trunk/include/asm-arm/arch-pxa/palmtx-init.h 2006-12-03 13:46:39 UTC (rev 692)
@@ -46,6 +46,11 @@
#define PALMTX_KM_COLS 3
+// TOUCHSCREEN
+
+#define AC97_LINK_FRAME 21
+
+
// BATTERY
#define PALMTX_BAT_MAX_VOLTAGE 4000 // 3.99v current voltage at max charge as from Filez
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|