Gitweb:     
http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=5170874816fc1eb2b0b865a70b6f520268227908
Commit:     5170874816fc1eb2b0b865a70b6f520268227908
Parent:     b66545e7ae80b4b0eef3f7884ef9260455070be9
Author:     Andrew Victor <[EMAIL PROTECTED]>
AuthorDate: Tue Nov 20 09:40:12 2007 +0100
Committer:  Russell King <[EMAIL PROTECTED]>
CommitDate: Sat Jan 26 15:00:30 2008 +0000

    [ARM] 4610/2: AT91: Support for STN LCD on SAM9261-EK board.
    
    Add STN LCD support on the Atmel AT91SAM9261-EK board.
    Uses a black and white screen from Hitachi: SP06Q002.
    
    Signed-off-by: Nicolas Ferre <[EMAIL PROTECTED]>
    Signed-off-by: Andrew Victor <[EMAIL PROTECTED]>
    Signed-off-by: Russell King <[EMAIL PROTECTED]>
---
 arch/arm/mach-at91/board-sam9261ek.c |   76 ++++++++++++++++++++++++++++++---
 1 files changed, 69 insertions(+), 7 deletions(-)

diff --git a/arch/arm/mach-at91/board-sam9261ek.c 
b/arch/arm/mach-at91/board-sam9261ek.c
index 550ae59..594c5c1 100644
--- a/arch/arm/mach-at91/board-sam9261ek.c
+++ b/arch/arm/mach-at91/board-sam9261ek.c
@@ -280,6 +280,68 @@ static struct spi_board_info ek_spi_devices[] = {
  * LCD Controller
  */
 #if defined(CONFIG_FB_ATMEL) || defined(CONFIG_FB_ATMEL_MODULE)
+
+#if defined(CONFIG_FB_ATMEL_STN)
+
+/* STN */
+static struct fb_videomode at91_stn_modes[] = {
+        {
+               .name           = "SP06Q002 @ 75",
+               .refresh        = 75,
+               .xres           = 320,          .yres           = 240,
+               .pixclock       = KHZ2PICOS(1440),
+
+               .left_margin    = 1,            .right_margin   = 1,
+               .upper_margin   = 0,            .lower_margin   = 0,
+               .hsync_len      = 1,            .vsync_len      = 1,
+
+               .sync           = FB_SYNC_HOR_HIGH_ACT | FB_SYNC_VERT_HIGH_ACT,
+               .vmode          = FB_VMODE_NONINTERLACED,
+        },
+};
+
+static struct fb_monspecs at91fb_default_stn_monspecs = {
+        .manufacturer   = "HIT",
+        .monitor        = "SP06Q002",
+
+        .modedb         = at91_stn_modes,
+        .modedb_len     = ARRAY_SIZE(at91_stn_modes),
+        .hfmin          = 15000,
+        .hfmax          = 64000,
+        .vfmin          = 50,
+        .vfmax          = 150,
+};
+
+#define AT91SAM9261_DEFAULT_STN_LCDCON2        (ATMEL_LCDC_MEMOR_LITTLE \
+                                       | ATMEL_LCDC_DISTYPE_STNMONO \
+                                       | ATMEL_LCDC_CLKMOD_ALWAYSACTIVE \
+                                       | ATMEL_LCDC_IFWIDTH_4 \
+                                       | ATMEL_LCDC_SCANMOD_SINGLE)
+
+static void at91_lcdc_stn_power_control(int on)
+{
+       /* backlight */
+       if (on) {       /* power up */
+               at91_set_gpio_value(AT91_PIN_PC14, 0);
+               at91_set_gpio_value(AT91_PIN_PC15, 0);
+       } else {        /* power down */
+               at91_set_gpio_value(AT91_PIN_PC14, 1);
+               at91_set_gpio_value(AT91_PIN_PC15, 1);
+       }
+}
+
+static struct atmel_lcdfb_info __initdata ek_lcdc_data = {
+       .default_bpp                    = 1,
+       .default_dmacon                 = ATMEL_LCDC_DMAEN,
+       .default_lcdcon2                = AT91SAM9261_DEFAULT_STN_LCDCON2,
+       .default_monspecs               = &at91fb_default_stn_monspecs,
+       .atmel_lcdfb_power_control      = at91_lcdc_stn_power_control,
+       .guard_time                     = 1,
+};
+
+#else
+
+/* TFT */
 static struct fb_videomode at91_tft_vga_modes[] = {
        {
                .name           = "TX09D50VM1CCA @ 60",
@@ -296,7 +358,7 @@ static struct fb_videomode at91_tft_vga_modes[] = {
        },
 };
 
-static struct fb_monspecs at91fb_default_monspecs = {
+static struct fb_monspecs at91fb_default_tft_monspecs = {
        .manufacturer   = "HIT",
        .monitor        = "TX09D50VM1CCA",
 
@@ -308,11 +370,11 @@ static struct fb_monspecs at91fb_default_monspecs = {
        .vfmax          = 150,
 };
 
-#define AT91SAM9261_DEFAULT_LCDCON2    (ATMEL_LCDC_MEMOR_LITTLE \
+#define AT91SAM9261_DEFAULT_TFT_LCDCON2        (ATMEL_LCDC_MEMOR_LITTLE \
                                        | ATMEL_LCDC_DISTYPE_TFT    \
                                        | ATMEL_LCDC_CLKMOD_ALWAYSACTIVE)
 
-static void at91_lcdc_power_control(int on)
+static void at91_lcdc_tft_power_control(int on)
 {
        if (on)
                at91_set_gpio_value(AT91_PIN_PA12, 0);  /* power up */
@@ -320,15 +382,15 @@ static void at91_lcdc_power_control(int on)
                at91_set_gpio_value(AT91_PIN_PA12, 1);  /* power down */
 }
 
-/* Driver datas */
 static struct atmel_lcdfb_info __initdata ek_lcdc_data = {
        .default_bpp                    = 16,
        .default_dmacon                 = ATMEL_LCDC_DMAEN,
-       .default_lcdcon2                = AT91SAM9261_DEFAULT_LCDCON2,
-       .default_monspecs               = &at91fb_default_monspecs,
-       .atmel_lcdfb_power_control      = at91_lcdc_power_control,
+       .default_lcdcon2                = AT91SAM9261_DEFAULT_TFT_LCDCON2,
+       .default_monspecs               = &at91fb_default_tft_monspecs,
+       .atmel_lcdfb_power_control      = at91_lcdc_tft_power_control,
        .guard_time                     = 1,
 };
+#endif
 
 #else
 static struct atmel_lcdfb_info __initdata ek_lcdc_data;
-
To unsubscribe from this list: send the line "unsubscribe git-commits-head" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to