Added initial support for the FDI3250 board for kernel linux-2.6.34_lpc32x0_v1.04
authorKevin Wells <wellsk40@gmail.com>
Fri, 24 Sep 2010 16:38:00 +0000 (09:38 -0700)
committerKevin Wells <wellsk40@gmail.com>
Fri, 24 Sep 2010 16:38:00 +0000 (09:38 -0700)
version 2.6.34

arch/arm/mach-lpc32xx/Kconfig
arch/arm/mach-lpc32xx/Makefile
arch/arm/mach-lpc32xx/include/mach/debug-macro.S
arch/arm/mach-lpc32xx/include/mach/uncompress.h
drivers/serial/lpc32xx_hs.c

index 898f953..16f0f8c 100644 (file)
@@ -16,6 +16,11 @@ choice
         help
             Support for the Embedded Artists LPC3250 Developer's Kit
 
+    config MACH_FDI3250
+        bool "Future Designs LPC3250 Touch screen kit"
+        help
+            Support for the Future Designs LPC3250 Touch screen kit
+
 endchoice
 
 menu "Embedded Artists Display Selection"
@@ -33,6 +38,33 @@ config EA3250_QVGA_2_8_OLED
 
 endmenu
 
+
+config SOM9DIMM3250_LCD_PANEL
+       bool "Enables support for SOM9DIMM-LPC3250 (FDI board) LCDs"
+       depends on MACH_FDI3250
+       default TRUE
+       help
+         Say Y here to enable QVGA/VGA panel support
+         
+choice
+    prompt "FDI LCD Display"
+    depends on SOM9DIMM3250_LCD_PANEL
+    default SOM9DIMM3250_LCD_OKAYA_VGA
+    help
+        Select type of LCD display to be used.
+
+config SOM9DIMM3250_LCD_OKAYA_VGA_35
+    bool "OKAYA VGA LCD on 3-5 LCD CARRIER board"
+    help
+      Select this option if you are using an OKAYA RV640480T on a FDI 3-5 LCD CARRIER board
+      
+config SOM9DIMM3250_LCD_TOSHIBA_QVGA_35
+    bool "Toshiba QVGA LCD on 3-5 LCD CARRIER board"
+    help
+      Select this option if you are using a Toshiba LTA057A347F on a FDI 3-5 LCD CARRIER board
+
+endchoice
+
 menu "Standard UARTS"
 
 config ARCH_LPC32XX_UART3_SELECT
index cc4c3af..44721a6 100644 (file)
@@ -6,4 +6,5 @@ obj-y   := timer.o irq.o common.o serial.o clock.o
 obj-y  +=  dma.o gpiolib.o pm.o suspend.o
 obj-$(CONFIG_MACH_PHY3250)     += phy3250.o
 obj-$(CONFIG_MACH_EA3250)      += ea3250.o
+obj-$(CONFIG_MACH_FDI3250)     += fdi3250.o
 
index 621744d..7b047ad 100644 (file)
  * Debug output is hardcoded to standard UART 5
 */
 
+#if defined(CONFIG_SERIAL_HS_LPC32XX_CONSOLE)
+               .macro  addruart,rx, tmp
+               mrc     p15, 0, \rx, c1, c0
+               tst     \rx, #1                 @ MMU enabled?
+               ldreq   \rx, =0x40014000        @ physical
+               ldrne   \rx, =0xF4014000        @ virtual
+1003:
+               .endm
+
+               .macro  senduart,rd,rx
+               str     \rd, [\rx, #0]
+               .endm
+
+               .macro  busyuart,rd,rx
+1002:          ldr     \rd, [\rx, #0x0]
+               ldr     \rd, [\rx, #0x4]
+               cmp     \rd, #0
+               bne     1002b
+               .endm
+
+               .macro  waituart,rd,rx
+1001:          ldr     \rd, [\rx, #0x0]
+               ldr     \rd, [\rx, #0x4]
+               cmp     \rd, #0
+               bne     1001b
+               .endm
+
+#else
        .macro  addruart,rx, tmp
        mrc     p15, 0, \rx, c1, c0
        tst     \rx, #1                         @ MMU enabled?
@@ -29,3 +57,5 @@
 
 #define UART_SHIFT     2
 #include <asm/hardware/debug-8250.S>
+#endif
+
index c142487..c4ffa37 100644 (file)
 #include <mach/hardware.h>
 #include <mach/platform.h>
 
+#if defined(CONFIG_SERIAL_HS_LPC32XX_CONSOLE)
+
+#define HSUART_FIFO     (*(volatile unsigned char *)(LPC32XX_HS_UART1_BASE + 0x00))
+#define HSUART_LEVEL    (*(volatile unsigned short *)(LPC32XX_HS_UART1_BASE + 0x04))
+
+static inline void putc(int ch)
+{
+    /* Wait for transmit FIFO to empty */
+    while ((HSUART_LEVEL & 0xFF00) != 0);
+    HSUART_FIFO = ch;
+}
+
+static inline void flush(void)
+{
+
+    /* Don't see a reset? */
+
+    /* Then just wait for transmition to complete */
+    while ((HSUART_LEVEL & 0xFF00) != 0);
+}
+
+#else
 /*
  * Uncompress output is hardcoded to standard UART 5
  */
@@ -52,6 +74,7 @@ static inline void flush(void)
        __raw_writel(__raw_readl(_UARTREG(LPC32XX_UART_IIRFCR_O)) |
                UART_FIFO_CTL_TX_RESET, _UARTREG(LPC32XX_UART_IIRFCR_O));
 }
+#endif
 
 /* NULL functions; we don't presently need them */
 #define arch_decomp_setup()
index f949580..1fa2056 100644 (file)
@@ -97,7 +97,7 @@ struct lpc32xx_hsuart_port {
 #define LPC32XX_TTY_MAJOR 204
 static struct lpc32xx_hsuart_port lpc32xx_hs_ports[MAX_PORTS];
 
-#ifdef SERIAL_HS_LPC32XX_CONSOLE
+#ifdef CONFIG_SERIAL_HS_LPC32XX_CONSOLE
 static void wait_for_xmit_empty(struct uart_port *port)
 {
        unsigned int timeout = 10000;