summaryrefslogtreecommitdiffstats
path: root/arch/arm/mach-at91/at91sam9x5_devices.c
diff options
context:
space:
mode:
authorJean-Christophe PLAGNIOL-VILLARD <plagnioj@jcrosoft.com>2013-01-31 12:54:57 +0100
committerSascha Hauer <s.hauer@pengutronix.de>2013-01-31 19:05:50 +0100
commitb43287e220a8ff6236a7c7abbb4524fc2b13deb5 (patch)
treeaa4a9335357d97008e6e6093082be99123ede820 /arch/arm/mach-at91/at91sam9x5_devices.c
parentf15fb7b428129205aaaf2b23235753c0b3773aa3 (diff)
downloadbarebox-b43287e220a8ff6236a7c7abbb4524fc2b13deb5.tar.gz
barebox-b43287e220a8ff6236a7c7abbb4524fc2b13deb5.tar.xz
at91sam9x5: add lcd support
the sam9x5 have multiple overlay but only register the base one Signed-off-by: Jean-Christophe PLAGNIOL-VILLARD <plagnioj@jcrosoft.com> Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
Diffstat (limited to 'arch/arm/mach-at91/at91sam9x5_devices.c')
-rw-r--r--arch/arm/mach-at91/at91sam9x5_devices.c55
1 files changed, 55 insertions, 0 deletions
diff --git a/arch/arm/mach-at91/at91sam9x5_devices.c b/arch/arm/mach-at91/at91sam9x5_devices.c
index 21aead94db..9f211e3bdd 100644
--- a/arch/arm/mach-at91/at91sam9x5_devices.c
+++ b/arch/arm/mach-at91/at91sam9x5_devices.c
@@ -391,6 +391,61 @@ void at91_add_device_spi(int spi_id, struct at91_spi_platform_data *pdata) {}
#endif
/* --------------------------------------------------------------------
+ * LCD Controller
+ * -------------------------------------------------------------------- */
+
+#if defined(CONFIG_DRIVER_VIDEO_ATMEL_HLCD)
+void __init at91_add_device_lcdc(struct atmel_lcdfb_platform_data *data)
+{
+ BUG_ON(!data);
+
+ if (cpu_is_at91sam9g25() || cpu_is_at91sam9x25()) {
+ pr_warn("AT91: no lcd on at91sam9g25 or at91sam9x25\n");
+ return;
+ }
+
+ at91_set_A_periph(AT91_PIN_PC26, 0); /* LCDPWM */
+
+ at91_set_A_periph(AT91_PIN_PC27, 0); /* LCDVSYNC */
+ at91_set_A_periph(AT91_PIN_PC28, 0); /* LCDHSYNC */
+
+ at91_set_A_periph(AT91_PIN_PC24, 0); /* LCDDISP */
+ at91_set_A_periph(AT91_PIN_PC29, 0); /* LCDDEN */
+ at91_set_A_periph(AT91_PIN_PC30, 0); /* LCDPCK */
+
+ at91_set_A_periph(AT91_PIN_PC0, 0); /* LCDD0 */
+ at91_set_A_periph(AT91_PIN_PC1, 0); /* LCDD1 */
+ at91_set_A_periph(AT91_PIN_PC2, 0); /* LCDD2 */
+ at91_set_A_periph(AT91_PIN_PC3, 0); /* LCDD3 */
+ at91_set_A_periph(AT91_PIN_PC4, 0); /* LCDD4 */
+ at91_set_A_periph(AT91_PIN_PC5, 0); /* LCDD5 */
+ at91_set_A_periph(AT91_PIN_PC6, 0); /* LCDD6 */
+ at91_set_A_periph(AT91_PIN_PC7, 0); /* LCDD7 */
+ at91_set_A_periph(AT91_PIN_PC8, 0); /* LCDD8 */
+ at91_set_A_periph(AT91_PIN_PC9, 0); /* LCDD9 */
+ at91_set_A_periph(AT91_PIN_PC10, 0); /* LCDD10 */
+ at91_set_A_periph(AT91_PIN_PC11, 0); /* LCDD11 */
+ at91_set_A_periph(AT91_PIN_PC12, 0); /* LCDD12 */
+ at91_set_A_periph(AT91_PIN_PC13, 0); /* LCDD13 */
+ at91_set_A_periph(AT91_PIN_PC14, 0); /* LCDD14 */
+ at91_set_A_periph(AT91_PIN_PC15, 0); /* LCDD15 */
+ at91_set_A_periph(AT91_PIN_PC16, 0); /* LCDD16 */
+ at91_set_A_periph(AT91_PIN_PC17, 0); /* LCDD17 */
+ at91_set_A_periph(AT91_PIN_PC18, 0); /* LCDD18 */
+ at91_set_A_periph(AT91_PIN_PC19, 0); /* LCDD19 */
+ at91_set_A_periph(AT91_PIN_PC20, 0); /* LCDD20 */
+ at91_set_A_periph(AT91_PIN_PC21, 0); /* LCDD21 */
+ at91_set_A_periph(AT91_PIN_PC22, 0); /* LCDD22 */
+ at91_set_A_periph(AT91_PIN_PC23, 0); /* LCDD23 */
+
+ add_generic_device("atmel_hlcdfb", DEVICE_ID_SINGLE, NULL, AT91SAM9X5_BASE_LCDC, SZ_4K,
+ IORESOURCE_MEM, data);
+}
+#else
+void __init at91_add_device_lcdc(struct atmel_lcdfb_platform_data *data) {}
+#endif
+
+/* --------------------------------------------------------------------
* UART
* -------------------------------------------------------------------- */