9
0
Fork 0

at91sam9n12ek: add lcd support

Signed-off-by: Jean-Christophe PLAGNIOL-VILLARD <plagnioj@jcrosoft.com>
Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
This commit is contained in:
Jean-Christophe PLAGNIOL-VILLARD 2013-01-31 12:55:00 +01:00 committed by Sascha Hauer
parent 9b9d765098
commit 6858e091df
3 changed files with 82 additions and 1 deletions

View File

@ -1,5 +1,12 @@
#!/bin/sh
splash=/env/splash.png
if [ -f ${splash} -a -e /dev/fb0 ]; then
splash -o ${splash}
fb0.enable=1
fi
button_name="dfu_bp"
button_wait=5

View File

@ -124,6 +124,75 @@ static void __init ek_add_device_ks8851(void)
static void __init ek_add_device_ks8851(void) {}
#endif /* CONFIG_DRIVER_NET_KS8851_MLL */
#if defined(CONFIG_DRIVER_VIDEO_ATMEL_HLCD)
static int ek_gpio_request_output(int gpio, const char *name)
{
int ret;
ret = gpio_request(gpio, name);
if (ret) {
pr_err("%s: can not request gpio %d (%d)\n", name, gpio, ret);
return ret;
}
ret = gpio_direction_output(gpio, 1);
if (ret)
pr_err("%s: can not configure gpio %d as output (%d)\n", name, gpio, ret);
return ret;
}
/*
* LCD Controller
*/
static struct fb_videomode at91_tft_vga_modes[] = {
{
.name = "QD",
.refresh = 60,
.xres = 480, .yres = 272,
.pixclock = KHZ2PICOS(9000),
.left_margin = 8, .right_margin = 43,
.upper_margin = 4, .lower_margin = 12,
.hsync_len = 5, .vsync_len = 10,
.sync = 0,
.vmode = FB_VMODE_NONINTERLACED,
},
};
/* Default output mode is TFT 24 bit */
#define BPP_OUT_DEFAULT_LCDCFG5 (LCDC_LCDCFG5_MODE_OUTPUT_24BPP)
static void at91_lcdc_power_control(int on)
{
gpio_set_value(AT91_PIN_PC25, !on);
}
/* Driver datas */
static struct atmel_lcdfb_platform_data ek_lcdc_data = {
.lcdcon_is_backlight = true,
.default_bpp = 16,
.default_dmacon = ATMEL_LCDC_DMAEN,
.default_lcdcon2 = BPP_OUT_DEFAULT_LCDCFG5,
.guard_time = 9,
.lcd_wiring_mode = ATMEL_LCDC_WIRING_RGB,
.atmel_lcdfb_power_control = at91_lcdc_power_control,
.mode_list = at91_tft_vga_modes,
.num_modes = ARRAY_SIZE(at91_tft_vga_modes),
};
static void ek_add_device_lcdc(void)
{
if (ek_gpio_request_output(AT91_PIN_PC25, "lcdc_power"))
return;
at91_add_device_lcdc(&ek_lcdc_data);
}
#else
static void ek_add_device_lcdc(void) {}
#endif
/*
* MCI (SD/MMC)
*/
@ -244,6 +313,7 @@ static int at91sam9n12ek_devices_init(void)
ek_add_device_i2c();
ek_add_device_ks8851();
ek_add_device_buttons();
ek_add_device_lcdc();
armlinux_set_bootparams((void *)(AT91_CHIPSELECT_1 + 0x100));
armlinux_set_architecture(CONFIG_MACH_AT91SAM9N12EK);

View File

@ -6,6 +6,7 @@ CONFIG_ARM_OPTIMZED_STRING_FUNCTIONS=y
CONFIG_PBL_IMAGE=y
CONFIG_MMU=y
CONFIG_TEXT_BASE=0x26f00000
CONFIG_MALLOC_SIZE=0xa00000
CONFIG_BAREBOX_MAX_IMAGE_SIZE=0x40000
CONFIG_EXPERIMENTAL=y
CONFIG_MALLOC_TLSF=y
@ -41,6 +42,7 @@ CONFIG_CMD_GO=y
CONFIG_CMD_OFTREE=y
CONFIG_CMD_MTEST=y
CONFIG_CMD_MTEST_ALTERNATIVE=y
CONFIG_CMD_SPLASH=y
CONFIG_CMD_TIMEOUT=y
CONFIG_CMD_PARTITION=y
CONFIG_CMD_GPIO=y
@ -71,6 +73,8 @@ CONFIG_UBI=y
CONFIG_USB_GADGET=y
CONFIG_USB_GADGET_DFU=y
CONFIG_USB_GADGET_SERIAL=y
CONFIG_VIDEO=y
CONFIG_DRIVER_VIDEO_ATMEL_HLCD=y
CONFIG_MCI=y
CONFIG_MCI_STARTUP=y
CONFIG_MCI_ATMEL=y
@ -84,4 +88,4 @@ CONFIG_FS_TFTP=y
CONFIG_FS_FAT=y
CONFIG_FS_FAT_WRITE=y
CONFIG_FS_FAT_LFN=y
CONFIG_ZLIB=y
CONFIG_PNG=y