~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~

TOMOYO Linux Cross Reference
Linux/arch/avr32/boards/atngw100/evklcd10x.c

Version: ~ [ linux-5.13-rc1 ] ~ [ linux-5.12.2 ] ~ [ linux-5.11.19 ] ~ [ linux-5.10.35 ] ~ [ linux-5.9.16 ] ~ [ linux-5.8.18 ] ~ [ linux-5.7.19 ] ~ [ linux-5.6.19 ] ~ [ linux-5.5.19 ] ~ [ linux-5.4.117 ] ~ [ linux-5.3.18 ] ~ [ linux-5.2.21 ] ~ [ linux-5.1.21 ] ~ [ linux-5.0.21 ] ~ [ linux-4.20.17 ] ~ [ linux-4.19.190 ] ~ [ linux-4.18.20 ] ~ [ linux-4.17.19 ] ~ [ linux-4.16.18 ] ~ [ linux-4.15.18 ] ~ [ linux-4.14.232 ] ~ [ linux-4.13.16 ] ~ [ linux-4.12.14 ] ~ [ linux-4.11.12 ] ~ [ linux-4.10.17 ] ~ [ linux-4.9.268 ] ~ [ linux-4.8.17 ] ~ [ linux-4.7.10 ] ~ [ linux-4.6.7 ] ~ [ linux-4.5.7 ] ~ [ linux-4.4.268 ] ~ [ linux-4.3.6 ] ~ [ linux-4.2.8 ] ~ [ linux-4.1.52 ] ~ [ linux-4.0.9 ] ~ [ linux-3.18.140 ] ~ [ linux-3.16.85 ] ~ [ linux-3.14.79 ] ~ [ linux-3.12.74 ] ~ [ linux-3.10.108 ] ~ [ linux-2.6.32.71 ] ~ [ linux-2.6.0 ] ~ [ linux-2.4.37.11 ] ~ [ unix-v6-master ] ~ [ ccs-tools-1.8.5 ] ~ [ policy-sample ] ~
Architecture: ~ [ i386 ] ~ [ alpha ] ~ [ m68k ] ~ [ mips ] ~ [ ppc ] ~ [ sparc ] ~ [ sparc64 ] ~

  1 /*
  2  * Board-specific setup code for the ATEVKLCD10X addon board to the ATNGW100
  3  * Network Gateway
  4  *
  5  * Copyright (C) 2008 Atmel Corporation
  6  *
  7  * This program is free software; you can redistribute it and/or modify it
  8  * under the terms of the GNU General Public License version 2 as published by
  9  * the Free Software Foundation.
 10  */
 11 
 12 #include <linux/init.h>
 13 #include <linux/linkage.h>
 14 #include <linux/gpio.h>
 15 #include <linux/fb.h>
 16 #include <linux/platform_device.h>
 17 
 18 #include <video/atmel_lcdc.h>
 19 
 20 #include <asm/setup.h>
 21 
 22 #include <mach/at32ap700x.h>
 23 #include <mach/portmux.h>
 24 #include <mach/board.h>
 25 
 26 #include <sound/atmel-ac97c.h>
 27 
 28 static struct ac97c_platform_data __initdata ac97c0_data = {
 29         .reset_pin = GPIO_PIN_PB(19),
 30 };
 31 
 32 #ifdef CONFIG_BOARD_ATNGW100_EVKLCD10X_VGA
 33 static struct fb_videomode __initdata tcg057vglad_modes[] = {
 34         {
 35                 .name           = "640x480 @ 50",
 36                 .refresh        = 50,
 37                 .xres           = 640,          .yres           = 480,
 38                 .pixclock       = KHZ2PICOS(25180),
 39 
 40                 .left_margin    = 64,           .right_margin   = 96,
 41                 .upper_margin   = 34,           .lower_margin   = 11,
 42                 .hsync_len      = 64,           .vsync_len      = 15,
 43 
 44                 .sync           = 0,
 45                 .vmode          = FB_VMODE_NONINTERLACED,
 46         },
 47 };
 48 
 49 static struct fb_monspecs __initdata atevklcd10x_default_monspecs = {
 50         .manufacturer           = "KYO",
 51         .monitor                = "TCG057VGLAD",
 52         .modedb                 = tcg057vglad_modes,
 53         .modedb_len             = ARRAY_SIZE(tcg057vglad_modes),
 54         .hfmin                  = 19948,
 55         .hfmax                  = 31478,
 56         .vfmin                  = 50,
 57         .vfmax                  = 67,
 58         .dclkmax                = 28330000,
 59 };
 60 
 61 static struct atmel_lcdfb_pdata __initdata atevklcd10x_lcdc_data = {
 62         .default_bpp            = 16,
 63         .default_dmacon         = ATMEL_LCDC_DMAEN | ATMEL_LCDC_DMA2DEN,
 64         .default_lcdcon2        = (ATMEL_LCDC_DISTYPE_TFT
 65                                    | ATMEL_LCDC_CLKMOD_ALWAYSACTIVE
 66                                    | ATMEL_LCDC_MEMOR_BIG),
 67         .default_monspecs       = &atevklcd10x_default_monspecs,
 68         .guard_time             = 2,
 69 };
 70 #elif CONFIG_BOARD_ATNGW100_EVKLCD10X_QVGA
 71 static struct fb_videomode __initdata tcg057qvlad_modes[] = {
 72         {
 73                 .name           = "320x240 @ 50",
 74                 .refresh        = 50,
 75                 .xres           = 320,          .yres           = 240,
 76                 .pixclock       = KHZ2PICOS(6300),
 77 
 78                 .left_margin    = 34,           .right_margin   = 46,
 79                 .upper_margin   = 7,            .lower_margin   = 15,
 80                 .hsync_len      = 64,           .vsync_len      = 12,
 81 
 82                 .sync           = 0,
 83                 .vmode          = FB_VMODE_NONINTERLACED,
 84         },
 85 };
 86 
 87 static struct fb_monspecs __initdata atevklcd10x_default_monspecs = {
 88         .manufacturer           = "KYO",
 89         .monitor                = "TCG057QVLAD",
 90         .modedb                 = tcg057qvlad_modes,
 91         .modedb_len             = ARRAY_SIZE(tcg057qvlad_modes),
 92         .hfmin                  = 19948,
 93         .hfmax                  = 31478,
 94         .vfmin                  = 50,
 95         .vfmax                  = 67,
 96         .dclkmax                = 7000000,
 97 };
 98 
 99 static struct atmel_lcdfb_pdata __initdata atevklcd10x_lcdc_data = {
100         .default_bpp            = 16,
101         .default_dmacon         = ATMEL_LCDC_DMAEN | ATMEL_LCDC_DMA2DEN,
102         .default_lcdcon2        = (ATMEL_LCDC_DISTYPE_TFT
103                                    | ATMEL_LCDC_CLKMOD_ALWAYSACTIVE
104                                    | ATMEL_LCDC_MEMOR_BIG),
105         .default_monspecs       = &atevklcd10x_default_monspecs,
106         .guard_time             = 2,
107 };
108 #elif CONFIG_BOARD_ATNGW100_EVKLCD10X_POW_QVGA
109 static struct fb_videomode __initdata ph320240t_modes[] = {
110         {
111                 .name           = "320x240 @ 60",
112                 .refresh        = 60,
113                 .xres           = 320,          .yres           = 240,
114                 .pixclock       = KHZ2PICOS(6300),
115 
116                 .left_margin    = 38,           .right_margin   = 20,
117                 .upper_margin   = 15,           .lower_margin   = 5,
118                 .hsync_len      = 30,           .vsync_len      = 3,
119 
120                 .sync           = 0,
121                 .vmode          = FB_VMODE_NONINTERLACED,
122         },
123 };
124 
125 static struct fb_monspecs __initdata atevklcd10x_default_monspecs = {
126         .manufacturer           = "POW",
127         .monitor                = "PH320240T",
128         .modedb                 = ph320240t_modes,
129         .modedb_len             = ARRAY_SIZE(ph320240t_modes),
130         .hfmin                  = 14400,
131         .hfmax                  = 21600,
132         .vfmin                  = 50,
133         .vfmax                  = 90,
134         .dclkmax                = 6400000,
135 };
136 
137 static struct atmel_lcdfb_pdata __initdata atevklcd10x_lcdc_data = {
138         .default_bpp            = 16,
139         .default_dmacon         = ATMEL_LCDC_DMAEN | ATMEL_LCDC_DMA2DEN,
140         .default_lcdcon2        = (ATMEL_LCDC_DISTYPE_TFT
141                                    | ATMEL_LCDC_CLKMOD_ALWAYSACTIVE
142                                    | ATMEL_LCDC_MEMOR_BIG),
143         .default_monspecs       = &atevklcd10x_default_monspecs,
144         .guard_time             = 2,
145 };
146 #endif
147 
148 static void atevklcd10x_lcdc_power_control(struct atmel_lcdfb_pdata *pdata, int on)
149 {
150         gpio_set_value(GPIO_PIN_PB(15), on);
151 }
152 
153 static int __init atevklcd10x_init(void)
154 {
155         /* PB15 is connected to the enable line on the boost regulator
156          * controlling the backlight for the LCD panel.
157          */
158         at32_select_gpio(GPIO_PIN_PB(15), AT32_GPIOF_OUTPUT);
159         gpio_request(GPIO_PIN_PB(15), "backlight");
160         gpio_direction_output(GPIO_PIN_PB(15), 0);
161 
162         atevklcd10x_lcdc_data.atmel_lcdfb_power_control =
163                 atevklcd10x_lcdc_power_control;
164 
165         at32_add_device_lcdc(0, &atevklcd10x_lcdc_data,
166                         fbmem_start, fbmem_size,
167 #ifdef CONFIG_BOARD_ATNGW100_MKII
168                         ATMEL_LCDC_PRI_18BIT | ATMEL_LCDC_PC_DVAL
169 #else
170                         ATMEL_LCDC_ALT_18BIT | ATMEL_LCDC_PE_DVAL
171 #endif
172                         );
173 
174         at32_add_device_ac97c(0, &ac97c0_data, AC97C_BOTH);
175 
176         return 0;
177 }
178 postcore_initcall(atevklcd10x_init);
179 

~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~

kernel.org | git.kernel.org | LWN.net | Project Home | Wiki (Japanese) | Wiki (English) | SVN repository | Mail admin

Linux® is a registered trademark of Linus Torvalds in the United States and other countries.
TOMOYO® is a registered trademark of NTT DATA CORPORATION.

osdn.jp