1
0
mirror of https://git.yoctoproject.org/meta-ti synced 2026-05-06 19:39:17 +00:00

linux-ti335x-psp 3.1: hack in DVI support for beaglebone

Signed-off-by: Koen Kooi <koen@dominion.thruhere.net>
This commit is contained in:
Koen Kooi
2011-10-31 20:16:06 +01:00
parent 48b0ff2a1b
commit 75f844fb5d
2 changed files with 232 additions and 1 deletions

View File

@@ -0,0 +1,230 @@
From 53f68267a95eac46ee91a692ef8a9b144102b3ec Mon Sep 17 00:00:00 2001
From: Koen Kooi <koen@dominion.thruhere.net>
Date: Mon, 31 Oct 2011 20:14:46 +0100
Subject: [PATCH] ARM: OMAP2+: beaglebone: hack in DVI support
Signed-off-by: Koen Kooi <koen@dominion.thruhere.net>
---
arch/arm/mach-omap2/board-am335xevm.c | 124 ++++++++++++++++++++++++++++++---
drivers/video/da8xx-fb.c | 14 ++++
2 files changed, 127 insertions(+), 11 deletions(-)
diff --git a/arch/arm/mach-omap2/board-am335xevm.c b/arch/arm/mach-omap2/board-am335xevm.c
index eb18fb9..3d60530 100644
--- a/arch/arm/mach-omap2/board-am335xevm.c
+++ b/arch/arm/mach-omap2/board-am335xevm.c
@@ -144,6 +144,36 @@ struct da8xx_lcdc_platform_data TFC_S9700RTWV35TR_01B_pdata = {
.type = "TFC_S9700RTWV35TR_01B",
};
+static const struct display_panel dvi_panel = {
+ WVGA,
+ 16,
+ 16,
+ COLOR_ACTIVE,
+};
+
+static struct lcd_ctrl_config dvi_cfg = {
+ &dvi_panel,
+ .ac_bias = 255,
+ .ac_bias_intrpt = 0,
+ .dma_burst_sz = 16,
+ .bpp = 16,
+ .fdd = 0x80,
+ .tft_alt_mode = 0,
+ .stn_565_mode = 0,
+ .mono_8bit_mode = 0,
+ .invert_line_clock = 1,
+ .invert_frm_clock = 1,
+ .sync_edge = 0,
+ .sync_ctrl = 1,
+ .raster_order = 0,
+};
+
+struct da8xx_lcdc_platform_data dvi_pdata = {
+ .manu_name = "BBToys",
+ .controller_data = &dvi_cfg,
+ .type = "1024x768@60",
+};
+
/* TSc controller */
#include <linux/input/ti_tscadc.h>
@@ -369,6 +399,50 @@ static struct pinmux_config lcdc_pin_mux[] = {
{NULL, 0},
};
+/* Module pin mux for DVI board */
+static struct pinmux_config dvi_pin_mux[] = {
+ {"lcd_data0.lcd_data0", OMAP_MUX_MODE0 | AM33XX_PIN_OUTPUT
+ | AM33XX_PULL_DISA},
+ {"lcd_data1.lcd_data1", OMAP_MUX_MODE0 | AM33XX_PIN_OUTPUT
+ | AM33XX_PULL_DISA},
+ {"lcd_data2.lcd_data2", OMAP_MUX_MODE0 | AM33XX_PIN_OUTPUT
+ | AM33XX_PULL_DISA},
+ {"lcd_data3.lcd_data3", OMAP_MUX_MODE0 | AM33XX_PIN_OUTPUT
+ | AM33XX_PULL_DISA},
+ {"lcd_data4.lcd_data4", OMAP_MUX_MODE0 | AM33XX_PIN_OUTPUT
+ | AM33XX_PULL_DISA},
+ {"lcd_data5.lcd_data5", OMAP_MUX_MODE0 | AM33XX_PIN_OUTPUT
+ | AM33XX_PULL_DISA},
+ {"lcd_data6.lcd_data6", OMAP_MUX_MODE0 | AM33XX_PIN_OUTPUT
+ | AM33XX_PULL_DISA},
+ {"lcd_data7.lcd_data7", OMAP_MUX_MODE0 | AM33XX_PIN_OUTPUT
+ | AM33XX_PULL_DISA},
+ {"lcd_data8.lcd_data8", OMAP_MUX_MODE0 | AM33XX_PIN_OUTPUT
+ | AM33XX_PULL_DISA},
+ {"lcd_data9.lcd_data9", OMAP_MUX_MODE0 | AM33XX_PIN_OUTPUT
+ | AM33XX_PULL_DISA},
+ {"lcd_data10.lcd_data10", OMAP_MUX_MODE0 | AM33XX_PIN_OUTPUT
+ | AM33XX_PULL_DISA},
+ {"lcd_data11.lcd_data11", OMAP_MUX_MODE0 | AM33XX_PIN_OUTPUT
+ | AM33XX_PULL_DISA},
+ {"lcd_data12.lcd_data12", OMAP_MUX_MODE0 | AM33XX_PIN_OUTPUT
+ | AM33XX_PULL_DISA},
+ {"lcd_data13.lcd_data13", OMAP_MUX_MODE0 | AM33XX_PIN_OUTPUT
+ | AM33XX_PULL_DISA},
+ {"lcd_data14.lcd_data14", OMAP_MUX_MODE0 | AM33XX_PIN_OUTPUT
+ | AM33XX_PULL_DISA},
+ {"lcd_data15.lcd_data15", OMAP_MUX_MODE0 | AM33XX_PIN_OUTPUT
+ | AM33XX_PULL_DISA},
+ {"lcd_vsync.lcd_vsync", OMAP_MUX_MODE0 | AM33XX_PIN_OUTPUT},
+ {"lcd_hsync.lcd_hsync", OMAP_MUX_MODE0 | AM33XX_PIN_OUTPUT},
+ {"lcd_pclk.lcd_pclk", OMAP_MUX_MODE0 | AM33XX_PIN_OUTPUT},
+ {"lcd_ac_bias_en.lcd_ac_bias_en", OMAP_MUX_MODE0 | AM33XX_PIN_OUTPUT}, //DVIEN
+ {"gpmc_a2.rgmii2_td3", OMAP_MUX_MODE7 | AM33XX_PIN_OUTPUT}, // USR0 LED
+ {"gpmc_a3.rgmii2_td2", OMAP_MUX_MODE7 | AM33XX_PIN_OUTPUT}, // USR1 LED
+ {"gpmc_ad7.gpmc_ad7", OMAP_MUX_MODE7 | AM33XX_PIN_OUTPUT}, // DVI PDn
+ {NULL, 0},
+};
+
static struct pinmux_config tsc_pin_mux[] = {
{"ain0.ain0", OMAP_MUX_MODE0 | AM33XX_INPUT_EN},
{"ain1.ain1", OMAP_MUX_MODE0 | AM33XX_INPUT_EN},
@@ -659,6 +733,9 @@ static struct pinmux_config usb1_pin_mux[] = {
#define BEAGLEBONE_USR3_LED GPIO_TO_PIN(1, 23)
#define BEAGLEBONE_USR4_LED GPIO_TO_PIN(1, 24)
+#define BEAGLEBONEDVI_USR0_LED GPIO_TO_PIN(1, 18)
+#define BEAGLEBONEDVI_USR1_LED GPIO_TO_PIN(1, 19)
+
static struct gpio_led gpio_leds[] = {
{
.name = "beaglebone::usr0",
@@ -678,6 +755,16 @@ static struct gpio_led gpio_leds[] = {
.name = "beaglebone::usr3",
.gpio = BEAGLEBONE_USR4_LED,
},
+ {
+ .name = "dvi::usr0",
+ .default_trigger = "heartbeat",
+ .gpio = BEAGLEBONEDVI_USR0_LED,
+ },
+ {
+ .name = "dvi::usr1",
+ .default_trigger = "mmc0",
+ .gpio = BEAGLEBONEDVI_USR1_LED,
+ },
};
static struct gpio_led_platform_data gpio_led_info = {
@@ -693,10 +780,6 @@ static struct platform_device leds_gpio = {
},
};
-static struct platform_device *bone_devices[] __initdata = {
- &leds_gpio,
-};
-
static struct pinmux_config bone_pin_mux[] = {
/* User LED gpios (gpio1_21 to gpio1_24) */
{"gpmc_a5.rgmii2_td0", OMAP_MUX_MODE7 | AM33XX_PIN_OUTPUT},
@@ -806,6 +889,26 @@ static void lcdc_init(int evm_id, int profile)
return;
}
+#define BEAGLEBONEDVI_PDn GPIO_TO_PIN(1, 7)
+
+static void dvi_init(int evm_id, int profile)
+{
+ setup_pin_mux(dvi_pin_mux);
+ gpio_request(BEAGLEBONEDVI_PDn, "DVI_PDn");
+ gpio_direction_output(BEAGLEBONEDVI_PDn, 1);
+
+ // we are being stupid and setting pixclock from here instead of da8xx-fb.c
+ if (conf_disp_pll(560000000)) {
+ pr_info("Failed to set pixclock to 56000000, not attempting to"
+ "register DVI adapter\n");
+ return;
+ }
+
+ if (am33xx_register_lcdc(&dvi_pdata))
+ pr_info("Failed to register BeagleBoardToys DVI adapter\n");
+ return;
+}
+
static void tsc_init(int evm_id, int profile)
{
int err;
@@ -815,16 +918,14 @@ static void tsc_init(int evm_id, int profile)
pr_err("failed to register touchscreen device\n");
}
-/*
- * Initialization of BeagleBone specific devices
- */
-static void bone_init(int evm_id, int profil )
+
+static void boneleds_init(int evm_id, int profile )
{
int err;
setup_pin_mux(bone_pin_mux);
- err = platform_add_devices(bone_devices, ARRAY_SIZE(bone_devices));
+ err = platform_device_register(&leds_gpio);
if (err)
- pr_err("failed to register LEDS\n");
+ pr_err("failed to register BeagleBone LEDS\n");
}
static void rgmii1_init(int evm_id, int profile)
@@ -1297,10 +1398,11 @@ static struct evm_dev_cfg ip_phn_evm_dev_cfg[] = {
/* Beaglebone */
static struct evm_dev_cfg beaglebone_dev_cfg[] = {
{rmii1_init, DEV_ON_BASEBOARD, PROFILE_NONE},
+ {dvi_init, DEV_ON_BASEBOARD, PROFILE_ALL},
{usb0_init, DEV_ON_BASEBOARD, PROFILE_NONE},
{usb1_init, DEV_ON_BASEBOARD, PROFILE_NONE},
{mmc0_init, DEV_ON_BASEBOARD, PROFILE_NONE},
- {bone_init, DEV_ON_BASEBOARD, PROFILE_ALL},
+ {boneleds_init, DEV_ON_BASEBOARD, PROFILE_ALL},
{NULL, 0, 0},
};
diff --git a/drivers/video/da8xx-fb.c b/drivers/video/da8xx-fb.c
index 4347421..9619518 100644
--- a/drivers/video/da8xx-fb.c
+++ b/drivers/video/da8xx-fb.c
@@ -266,6 +266,20 @@ static struct da8xx_panel known_lcd_panels[] = {
.pxl_clk = 30000000,
.invert_pxl_clk = 0,
},
+ [3] = {
+ /* 1024 x 768 @ 60 Hz Reduced blanking VESA CVT 0.79M3-R */
+ .name = "1024x768@60",
+ .width = 1024,
+ .height = 768,
+ .hfp = 48,
+ .hbp = 80,
+ .hsw = 32,
+ .vfp = 3,
+ .vbp = 15,
+ .vsw = 4,
+ .pxl_clk = 56000000,
+ .invert_pxl_clk = 0,
+ },
};
/* Enable the Raster Engine of the LCD Controller */
--
1.6.6.1

View File

@@ -11,7 +11,7 @@ MULTI_CONFIG_BASE_SUFFIX = ""
BRANCH = "master"
SRCREV = "fd97d5068496ab770991a263e9046781ca2441a5"
MACHINE_KERNEL_PR_append = "l+gitr${SRCREV}"
MACHINE_KERNEL_PR_append = "m+gitr${SRCREV}"
COMPATIBLE_MACHINE = "(ti33x)"
@@ -30,6 +30,7 @@ PATCHES_OVER_PSP = " \
file://0001-am335x-Check-return-value-of-omap_mux_init_signal.patch \
file://0002-at24-Add-ability-to-dynamically-reconfigure-chip-inf.patch \
file://0003-am335x-evm-Reconfigure-EEPROM-with-new-eeprom_info-in.patch \
file://0001-ARM-OMAP2-beaglebone-hack-in-DVI-support.patch \
"
SRC_URI += "${@base_contains('DISTRO_FEATURES', 'tipspkernel', "", "${PATCHES_OVER_PSP}", d)}"