summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorKoen Kooi <koen@dominion.thruhere.net>2011-10-31 20:16:06 +0100
committerKoen Kooi <koen@dominion.thruhere.net>2011-11-01 07:11:10 +0100
commit75f844fb5d297b015adc7100432d0b22261ccb5f (patch)
treeff805e18c729769c305ef0823a72dc7e57d4c30e
parent48b0ff2a1b3f7eedeb5235bf58771bd63410c6da (diff)
downloadmeta-ti-75f844fb5d297b015adc7100432d0b22261ccb5f.tar.gz
linux-ti335x-psp 3.1: hack in DVI support for beaglebone
Signed-off-by: Koen Kooi <koen@dominion.thruhere.net>
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.1/0001-ARM-OMAP2-beaglebone-hack-in-DVI-support.patch230
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp_3.1.bb3
2 files changed, 232 insertions, 1 deletions
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.1/0001-ARM-OMAP2-beaglebone-hack-in-DVI-support.patch b/recipes-kernel/linux/linux-ti33x-psp-3.1/0001-ARM-OMAP2-beaglebone-hack-in-DVI-support.patch
new file mode 100644
index 00000000..a357ee80
--- /dev/null
+++ b/recipes-kernel/linux/linux-ti33x-psp-3.1/0001-ARM-OMAP2-beaglebone-hack-in-DVI-support.patch
@@ -0,0 +1,230 @@
1From 53f68267a95eac46ee91a692ef8a9b144102b3ec Mon Sep 17 00:00:00 2001
2From: Koen Kooi <koen@dominion.thruhere.net>
3Date: Mon, 31 Oct 2011 20:14:46 +0100
4Subject: [PATCH] ARM: OMAP2+: beaglebone: hack in DVI support
5
6Signed-off-by: Koen Kooi <koen@dominion.thruhere.net>
7---
8 arch/arm/mach-omap2/board-am335xevm.c | 124 ++++++++++++++++++++++++++++++---
9 drivers/video/da8xx-fb.c | 14 ++++
10 2 files changed, 127 insertions(+), 11 deletions(-)
11
12diff --git a/arch/arm/mach-omap2/board-am335xevm.c b/arch/arm/mach-omap2/board-am335xevm.c
13index eb18fb9..3d60530 100644
14--- a/arch/arm/mach-omap2/board-am335xevm.c
15+++ b/arch/arm/mach-omap2/board-am335xevm.c
16@@ -144,6 +144,36 @@ struct da8xx_lcdc_platform_data TFC_S9700RTWV35TR_01B_pdata = {
17 .type = "TFC_S9700RTWV35TR_01B",
18 };
19
20+static const struct display_panel dvi_panel = {
21+ WVGA,
22+ 16,
23+ 16,
24+ COLOR_ACTIVE,
25+};
26+
27+static struct lcd_ctrl_config dvi_cfg = {
28+ &dvi_panel,
29+ .ac_bias = 255,
30+ .ac_bias_intrpt = 0,
31+ .dma_burst_sz = 16,
32+ .bpp = 16,
33+ .fdd = 0x80,
34+ .tft_alt_mode = 0,
35+ .stn_565_mode = 0,
36+ .mono_8bit_mode = 0,
37+ .invert_line_clock = 1,
38+ .invert_frm_clock = 1,
39+ .sync_edge = 0,
40+ .sync_ctrl = 1,
41+ .raster_order = 0,
42+};
43+
44+struct da8xx_lcdc_platform_data dvi_pdata = {
45+ .manu_name = "BBToys",
46+ .controller_data = &dvi_cfg,
47+ .type = "1024x768@60",
48+};
49+
50 /* TSc controller */
51 #include <linux/input/ti_tscadc.h>
52
53@@ -369,6 +399,50 @@ static struct pinmux_config lcdc_pin_mux[] = {
54 {NULL, 0},
55 };
56
57+/* Module pin mux for DVI board */
58+static struct pinmux_config dvi_pin_mux[] = {
59+ {"lcd_data0.lcd_data0", OMAP_MUX_MODE0 | AM33XX_PIN_OUTPUT
60+ | AM33XX_PULL_DISA},
61+ {"lcd_data1.lcd_data1", OMAP_MUX_MODE0 | AM33XX_PIN_OUTPUT
62+ | AM33XX_PULL_DISA},
63+ {"lcd_data2.lcd_data2", OMAP_MUX_MODE0 | AM33XX_PIN_OUTPUT
64+ | AM33XX_PULL_DISA},
65+ {"lcd_data3.lcd_data3", OMAP_MUX_MODE0 | AM33XX_PIN_OUTPUT
66+ | AM33XX_PULL_DISA},
67+ {"lcd_data4.lcd_data4", OMAP_MUX_MODE0 | AM33XX_PIN_OUTPUT
68+ | AM33XX_PULL_DISA},
69+ {"lcd_data5.lcd_data5", OMAP_MUX_MODE0 | AM33XX_PIN_OUTPUT
70+ | AM33XX_PULL_DISA},
71+ {"lcd_data6.lcd_data6", OMAP_MUX_MODE0 | AM33XX_PIN_OUTPUT
72+ | AM33XX_PULL_DISA},
73+ {"lcd_data7.lcd_data7", OMAP_MUX_MODE0 | AM33XX_PIN_OUTPUT
74+ | AM33XX_PULL_DISA},
75+ {"lcd_data8.lcd_data8", OMAP_MUX_MODE0 | AM33XX_PIN_OUTPUT
76+ | AM33XX_PULL_DISA},
77+ {"lcd_data9.lcd_data9", OMAP_MUX_MODE0 | AM33XX_PIN_OUTPUT
78+ | AM33XX_PULL_DISA},
79+ {"lcd_data10.lcd_data10", OMAP_MUX_MODE0 | AM33XX_PIN_OUTPUT
80+ | AM33XX_PULL_DISA},
81+ {"lcd_data11.lcd_data11", OMAP_MUX_MODE0 | AM33XX_PIN_OUTPUT
82+ | AM33XX_PULL_DISA},
83+ {"lcd_data12.lcd_data12", OMAP_MUX_MODE0 | AM33XX_PIN_OUTPUT
84+ | AM33XX_PULL_DISA},
85+ {"lcd_data13.lcd_data13", OMAP_MUX_MODE0 | AM33XX_PIN_OUTPUT
86+ | AM33XX_PULL_DISA},
87+ {"lcd_data14.lcd_data14", OMAP_MUX_MODE0 | AM33XX_PIN_OUTPUT
88+ | AM33XX_PULL_DISA},
89+ {"lcd_data15.lcd_data15", OMAP_MUX_MODE0 | AM33XX_PIN_OUTPUT
90+ | AM33XX_PULL_DISA},
91+ {"lcd_vsync.lcd_vsync", OMAP_MUX_MODE0 | AM33XX_PIN_OUTPUT},
92+ {"lcd_hsync.lcd_hsync", OMAP_MUX_MODE0 | AM33XX_PIN_OUTPUT},
93+ {"lcd_pclk.lcd_pclk", OMAP_MUX_MODE0 | AM33XX_PIN_OUTPUT},
94+ {"lcd_ac_bias_en.lcd_ac_bias_en", OMAP_MUX_MODE0 | AM33XX_PIN_OUTPUT}, //DVIEN
95+ {"gpmc_a2.rgmii2_td3", OMAP_MUX_MODE7 | AM33XX_PIN_OUTPUT}, // USR0 LED
96+ {"gpmc_a3.rgmii2_td2", OMAP_MUX_MODE7 | AM33XX_PIN_OUTPUT}, // USR1 LED
97+ {"gpmc_ad7.gpmc_ad7", OMAP_MUX_MODE7 | AM33XX_PIN_OUTPUT}, // DVI PDn
98+ {NULL, 0},
99+};
100+
101 static struct pinmux_config tsc_pin_mux[] = {
102 {"ain0.ain0", OMAP_MUX_MODE0 | AM33XX_INPUT_EN},
103 {"ain1.ain1", OMAP_MUX_MODE0 | AM33XX_INPUT_EN},
104@@ -659,6 +733,9 @@ static struct pinmux_config usb1_pin_mux[] = {
105 #define BEAGLEBONE_USR3_LED GPIO_TO_PIN(1, 23)
106 #define BEAGLEBONE_USR4_LED GPIO_TO_PIN(1, 24)
107
108+#define BEAGLEBONEDVI_USR0_LED GPIO_TO_PIN(1, 18)
109+#define BEAGLEBONEDVI_USR1_LED GPIO_TO_PIN(1, 19)
110+
111 static struct gpio_led gpio_leds[] = {
112 {
113 .name = "beaglebone::usr0",
114@@ -678,6 +755,16 @@ static struct gpio_led gpio_leds[] = {
115 .name = "beaglebone::usr3",
116 .gpio = BEAGLEBONE_USR4_LED,
117 },
118+ {
119+ .name = "dvi::usr0",
120+ .default_trigger = "heartbeat",
121+ .gpio = BEAGLEBONEDVI_USR0_LED,
122+ },
123+ {
124+ .name = "dvi::usr1",
125+ .default_trigger = "mmc0",
126+ .gpio = BEAGLEBONEDVI_USR1_LED,
127+ },
128 };
129
130 static struct gpio_led_platform_data gpio_led_info = {
131@@ -693,10 +780,6 @@ static struct platform_device leds_gpio = {
132 },
133 };
134
135-static struct platform_device *bone_devices[] __initdata = {
136- &leds_gpio,
137-};
138-
139 static struct pinmux_config bone_pin_mux[] = {
140 /* User LED gpios (gpio1_21 to gpio1_24) */
141 {"gpmc_a5.rgmii2_td0", OMAP_MUX_MODE7 | AM33XX_PIN_OUTPUT},
142@@ -806,6 +889,26 @@ static void lcdc_init(int evm_id, int profile)
143 return;
144 }
145
146+#define BEAGLEBONEDVI_PDn GPIO_TO_PIN(1, 7)
147+
148+static void dvi_init(int evm_id, int profile)
149+{
150+ setup_pin_mux(dvi_pin_mux);
151+ gpio_request(BEAGLEBONEDVI_PDn, "DVI_PDn");
152+ gpio_direction_output(BEAGLEBONEDVI_PDn, 1);
153+
154+ // we are being stupid and setting pixclock from here instead of da8xx-fb.c
155+ if (conf_disp_pll(560000000)) {
156+ pr_info("Failed to set pixclock to 56000000, not attempting to"
157+ "register DVI adapter\n");
158+ return;
159+ }
160+
161+ if (am33xx_register_lcdc(&dvi_pdata))
162+ pr_info("Failed to register BeagleBoardToys DVI adapter\n");
163+ return;
164+}
165+
166 static void tsc_init(int evm_id, int profile)
167 {
168 int err;
169@@ -815,16 +918,14 @@ static void tsc_init(int evm_id, int profile)
170 pr_err("failed to register touchscreen device\n");
171 }
172
173-/*
174- * Initialization of BeagleBone specific devices
175- */
176-static void bone_init(int evm_id, int profil )
177+
178+static void boneleds_init(int evm_id, int profile )
179 {
180 int err;
181 setup_pin_mux(bone_pin_mux);
182- err = platform_add_devices(bone_devices, ARRAY_SIZE(bone_devices));
183+ err = platform_device_register(&leds_gpio);
184 if (err)
185- pr_err("failed to register LEDS\n");
186+ pr_err("failed to register BeagleBone LEDS\n");
187 }
188
189 static void rgmii1_init(int evm_id, int profile)
190@@ -1297,10 +1398,11 @@ static struct evm_dev_cfg ip_phn_evm_dev_cfg[] = {
191 /* Beaglebone */
192 static struct evm_dev_cfg beaglebone_dev_cfg[] = {
193 {rmii1_init, DEV_ON_BASEBOARD, PROFILE_NONE},
194+ {dvi_init, DEV_ON_BASEBOARD, PROFILE_ALL},
195 {usb0_init, DEV_ON_BASEBOARD, PROFILE_NONE},
196 {usb1_init, DEV_ON_BASEBOARD, PROFILE_NONE},
197 {mmc0_init, DEV_ON_BASEBOARD, PROFILE_NONE},
198- {bone_init, DEV_ON_BASEBOARD, PROFILE_ALL},
199+ {boneleds_init, DEV_ON_BASEBOARD, PROFILE_ALL},
200 {NULL, 0, 0},
201 };
202
203diff --git a/drivers/video/da8xx-fb.c b/drivers/video/da8xx-fb.c
204index 4347421..9619518 100644
205--- a/drivers/video/da8xx-fb.c
206+++ b/drivers/video/da8xx-fb.c
207@@ -266,6 +266,20 @@ static struct da8xx_panel known_lcd_panels[] = {
208 .pxl_clk = 30000000,
209 .invert_pxl_clk = 0,
210 },
211+ [3] = {
212+ /* 1024 x 768 @ 60 Hz Reduced blanking VESA CVT 0.79M3-R */
213+ .name = "1024x768@60",
214+ .width = 1024,
215+ .height = 768,
216+ .hfp = 48,
217+ .hbp = 80,
218+ .hsw = 32,
219+ .vfp = 3,
220+ .vbp = 15,
221+ .vsw = 4,
222+ .pxl_clk = 56000000,
223+ .invert_pxl_clk = 0,
224+ },
225 };
226
227 /* Enable the Raster Engine of the LCD Controller */
228--
2291.6.6.1
230
diff --git a/recipes-kernel/linux/linux-ti33x-psp_3.1.bb b/recipes-kernel/linux/linux-ti33x-psp_3.1.bb
index b90f4b36..cf0a1181 100644
--- a/recipes-kernel/linux/linux-ti33x-psp_3.1.bb
+++ b/recipes-kernel/linux/linux-ti33x-psp_3.1.bb
@@ -11,7 +11,7 @@ MULTI_CONFIG_BASE_SUFFIX = ""
11 11
12BRANCH = "master" 12BRANCH = "master"
13SRCREV = "fd97d5068496ab770991a263e9046781ca2441a5" 13SRCREV = "fd97d5068496ab770991a263e9046781ca2441a5"
14MACHINE_KERNEL_PR_append = "l+gitr${SRCREV}" 14MACHINE_KERNEL_PR_append = "m+gitr${SRCREV}"
15 15
16COMPATIBLE_MACHINE = "(ti33x)" 16COMPATIBLE_MACHINE = "(ti33x)"
17 17
@@ -30,6 +30,7 @@ PATCHES_OVER_PSP = " \
30 file://0001-am335x-Check-return-value-of-omap_mux_init_signal.patch \ 30 file://0001-am335x-Check-return-value-of-omap_mux_init_signal.patch \
31 file://0002-at24-Add-ability-to-dynamically-reconfigure-chip-inf.patch \ 31 file://0002-at24-Add-ability-to-dynamically-reconfigure-chip-inf.patch \
32 file://0003-am335x-evm-Reconfigure-EEPROM-with-new-eeprom_info-in.patch \ 32 file://0003-am335x-evm-Reconfigure-EEPROM-with-new-eeprom_info-in.patch \
33 file://0001-ARM-OMAP2-beaglebone-hack-in-DVI-support.patch \
33 " 34 "
34 35
35SRC_URI += "${@base_contains('DISTRO_FEATURES', 'tipspkernel', "", "${PATCHES_OVER_PSP}", d)}" 36SRC_URI += "${@base_contains('DISTRO_FEATURES', 'tipspkernel', "", "${PATCHES_OVER_PSP}", d)}"