diff options
-rw-r--r-- | arch/arm/mach-omap2/dss-common.c | 186 |
1 files changed, 109 insertions, 77 deletions
diff --git a/arch/arm/mach-omap2/dss-common.c b/arch/arm/mach-omap2/dss-common.c index 00c049243d25..321541223bb7 100644 --- a/arch/arm/mach-omap2/dss-common.c +++ b/arch/arm/mach-omap2/dss-common.c | |||
@@ -25,6 +25,7 @@ | |||
25 | 25 | ||
26 | #include <linux/kernel.h> | 26 | #include <linux/kernel.h> |
27 | #include <linux/gpio.h> | 27 | #include <linux/gpio.h> |
28 | #include <linux/platform_device.h> | ||
28 | 29 | ||
29 | #include <video/omapdss.h> | 30 | #include <video/omapdss.h> |
30 | #include <video/omap-panel-data.h> | 31 | #include <video/omap-panel-data.h> |
@@ -37,52 +38,76 @@ | |||
37 | #define HDMI_GPIO_LS_OE 41 /* Level shifter for HDMI */ | 38 | #define HDMI_GPIO_LS_OE 41 /* Level shifter for HDMI */ |
38 | #define HDMI_GPIO_HPD 63 /* Hotplug detect */ | 39 | #define HDMI_GPIO_HPD 63 /* Hotplug detect */ |
39 | 40 | ||
40 | /* Display DVI */ | ||
41 | #define PANDA_DVI_TFP410_POWER_DOWN_GPIO 0 | 41 | #define PANDA_DVI_TFP410_POWER_DOWN_GPIO 0 |
42 | 42 | ||
43 | /* Using generic display panel */ | 43 | /* DVI Connector */ |
44 | static struct tfp410_platform_data omap4_dvi_panel = { | 44 | static struct connector_dvi_platform_data omap4_panda_dvi_connector_pdata = { |
45 | .i2c_bus_num = 2, | 45 | .name = "dvi", |
46 | .power_down_gpio = PANDA_DVI_TFP410_POWER_DOWN_GPIO, | 46 | .source = "tfp410.0", |
47 | .i2c_bus_num = 2, | ||
47 | }; | 48 | }; |
48 | 49 | ||
49 | static struct omap_dss_device omap4_panda_dvi_device = { | 50 | static struct platform_device omap4_panda_dvi_connector_device = { |
50 | .type = OMAP_DISPLAY_TYPE_DPI, | 51 | .name = "connector-dvi", |
51 | .name = "dvi", | 52 | .id = 0, |
52 | .driver_name = "tfp410", | 53 | .dev.platform_data = &omap4_panda_dvi_connector_pdata, |
53 | .data = &omap4_dvi_panel, | 54 | }; |
54 | .phy.dpi.data_lines = 24, | 55 | |
55 | .channel = OMAP_DSS_CHANNEL_LCD2, | 56 | /* TFP410 DPI-to-DVI chip */ |
57 | static struct encoder_tfp410_platform_data omap4_panda_tfp410_pdata = { | ||
58 | .name = "tfp410.0", | ||
59 | .source = "dpi.0", | ||
60 | .data_lines = 24, | ||
61 | .power_down_gpio = PANDA_DVI_TFP410_POWER_DOWN_GPIO, | ||
62 | }; | ||
63 | |||
64 | static struct platform_device omap4_panda_tfp410_device = { | ||
65 | .name = "tfp410", | ||
66 | .id = 0, | ||
67 | .dev.platform_data = &omap4_panda_tfp410_pdata, | ||
56 | }; | 68 | }; |
57 | 69 | ||
58 | static struct omap_dss_hdmi_data omap4_panda_hdmi_data = { | 70 | /* HDMI Connector */ |
71 | static struct connector_hdmi_platform_data omap4_panda_hdmi_connector_pdata = { | ||
72 | .name = "hdmi", | ||
73 | .source = "tpd12s015.0", | ||
74 | }; | ||
75 | |||
76 | static struct platform_device omap4_panda_hdmi_connector_device = { | ||
77 | .name = "connector-hdmi", | ||
78 | .id = 0, | ||
79 | .dev.platform_data = &omap4_panda_hdmi_connector_pdata, | ||
80 | }; | ||
81 | |||
82 | /* TPD12S015 HDMI ESD protection & level shifter chip */ | ||
83 | static struct encoder_tpd12s015_platform_data omap4_panda_tpd_pdata = { | ||
84 | .name = "tpd12s015.0", | ||
85 | .source = "hdmi.0", | ||
86 | |||
59 | .ct_cp_hpd_gpio = HDMI_GPIO_CT_CP_HPD, | 87 | .ct_cp_hpd_gpio = HDMI_GPIO_CT_CP_HPD, |
60 | .ls_oe_gpio = HDMI_GPIO_LS_OE, | 88 | .ls_oe_gpio = HDMI_GPIO_LS_OE, |
61 | .hpd_gpio = HDMI_GPIO_HPD, | 89 | .hpd_gpio = HDMI_GPIO_HPD, |
62 | }; | 90 | }; |
63 | 91 | ||
64 | static struct omap_dss_device omap4_panda_hdmi_device = { | 92 | static struct platform_device omap4_panda_tpd_device = { |
65 | .name = "hdmi", | 93 | .name = "tpd12s015", |
66 | .driver_name = "hdmi_panel", | 94 | .id = 0, |
67 | .type = OMAP_DISPLAY_TYPE_HDMI, | 95 | .dev.platform_data = &omap4_panda_tpd_pdata, |
68 | .channel = OMAP_DSS_CHANNEL_DIGIT, | ||
69 | .data = &omap4_panda_hdmi_data, | ||
70 | }; | ||
71 | |||
72 | static struct omap_dss_device *omap4_panda_dss_devices[] = { | ||
73 | &omap4_panda_dvi_device, | ||
74 | &omap4_panda_hdmi_device, | ||
75 | }; | 96 | }; |
76 | 97 | ||
77 | static struct omap_dss_board_info omap4_panda_dss_data = { | 98 | static struct omap_dss_board_info omap4_panda_dss_data = { |
78 | .num_devices = ARRAY_SIZE(omap4_panda_dss_devices), | 99 | .default_display_name = "dvi", |
79 | .devices = omap4_panda_dss_devices, | ||
80 | .default_device = &omap4_panda_dvi_device, | ||
81 | }; | 100 | }; |
82 | 101 | ||
83 | void __init omap4_panda_display_init_of(void) | 102 | void __init omap4_panda_display_init_of(void) |
84 | { | 103 | { |
85 | omap_display_init(&omap4_panda_dss_data); | 104 | omap_display_init(&omap4_panda_dss_data); |
105 | |||
106 | platform_device_register(&omap4_panda_tfp410_device); | ||
107 | platform_device_register(&omap4_panda_dvi_connector_device); | ||
108 | |||
109 | platform_device_register(&omap4_panda_tpd_device); | ||
110 | platform_device_register(&omap4_panda_hdmi_connector_device); | ||
86 | } | 111 | } |
87 | 112 | ||
88 | 113 | ||
@@ -91,67 +116,71 @@ void __init omap4_panda_display_init_of(void) | |||
91 | #define DISPLAY_SEL_GPIO 59 /* LCD2/PicoDLP switch */ | 116 | #define DISPLAY_SEL_GPIO 59 /* LCD2/PicoDLP switch */ |
92 | #define DLP_POWER_ON_GPIO 40 | 117 | #define DLP_POWER_ON_GPIO 40 |
93 | 118 | ||
94 | static struct nokia_dsi_panel_data dsi1_panel = { | 119 | static struct panel_dsicm_platform_data dsi1_panel = { |
95 | .name = "taal", | 120 | .name = "lcd", |
96 | .reset_gpio = 102, | 121 | .source = "dsi.0", |
97 | .use_ext_te = false, | 122 | .reset_gpio = 102, |
98 | .ext_te_gpio = 101, | 123 | .use_ext_te = false, |
99 | .esd_interval = 0, | 124 | .ext_te_gpio = 101, |
100 | .pin_config = { | 125 | .pin_config = { |
101 | .num_pins = 6, | 126 | .num_pins = 6, |
102 | .pins = { 0, 1, 2, 3, 4, 5 }, | 127 | .pins = { 0, 1, 2, 3, 4, 5 }, |
103 | }, | ||
104 | }; | ||
105 | |||
106 | static struct omap_dss_device sdp4430_lcd_device = { | ||
107 | .name = "lcd", | ||
108 | .driver_name = "taal", | ||
109 | .type = OMAP_DISPLAY_TYPE_DSI, | ||
110 | .data = &dsi1_panel, | ||
111 | .phy.dsi = { | ||
112 | .module = 0, | ||
113 | }, | 128 | }, |
114 | .channel = OMAP_DSS_CHANNEL_LCD, | ||
115 | }; | 129 | }; |
116 | 130 | ||
117 | static struct nokia_dsi_panel_data dsi2_panel = { | 131 | static struct platform_device sdp4430_lcd_device = { |
118 | .name = "taal", | 132 | .name = "panel-dsi-cm", |
119 | .reset_gpio = 104, | 133 | .id = 0, |
120 | .use_ext_te = false, | 134 | .dev.platform_data = &dsi1_panel, |
121 | .ext_te_gpio = 103, | ||
122 | .esd_interval = 0, | ||
123 | .pin_config = { | ||
124 | .num_pins = 6, | ||
125 | .pins = { 0, 1, 2, 3, 4, 5 }, | ||
126 | }, | ||
127 | }; | 135 | }; |
128 | 136 | ||
129 | static struct omap_dss_device sdp4430_lcd2_device = { | 137 | static struct panel_dsicm_platform_data dsi2_panel = { |
130 | .name = "lcd2", | 138 | .name = "lcd2", |
131 | .driver_name = "taal", | 139 | .source = "dsi.1", |
132 | .type = OMAP_DISPLAY_TYPE_DSI, | 140 | .reset_gpio = 104, |
133 | .data = &dsi2_panel, | 141 | .use_ext_te = false, |
134 | .phy.dsi = { | 142 | .ext_te_gpio = 103, |
135 | 143 | .pin_config = { | |
136 | .module = 1, | 144 | .num_pins = 6, |
145 | .pins = { 0, 1, 2, 3, 4, 5 }, | ||
137 | }, | 146 | }, |
138 | .channel = OMAP_DSS_CHANNEL_LCD2, | ||
139 | }; | 147 | }; |
140 | 148 | ||
141 | static struct omap_dss_hdmi_data sdp4430_hdmi_data = { | 149 | static struct platform_device sdp4430_lcd2_device = { |
150 | .name = "panel-dsi-cm", | ||
151 | .id = 1, | ||
152 | .dev.platform_data = &dsi2_panel, | ||
153 | }; | ||
154 | |||
155 | /* HDMI Connector */ | ||
156 | static struct connector_hdmi_platform_data sdp4430_hdmi_connector_pdata = { | ||
157 | .name = "hdmi", | ||
158 | .source = "tpd12s015.0", | ||
159 | }; | ||
160 | |||
161 | static struct platform_device sdp4430_hdmi_connector_device = { | ||
162 | .name = "connector-hdmi", | ||
163 | .id = 0, | ||
164 | .dev.platform_data = &sdp4430_hdmi_connector_pdata, | ||
165 | }; | ||
166 | |||
167 | /* TPD12S015 HDMI ESD protection & level shifter chip */ | ||
168 | static struct encoder_tpd12s015_platform_data sdp4430_tpd_pdata = { | ||
169 | .name = "tpd12s015.0", | ||
170 | .source = "hdmi.0", | ||
171 | |||
142 | .ct_cp_hpd_gpio = HDMI_GPIO_CT_CP_HPD, | 172 | .ct_cp_hpd_gpio = HDMI_GPIO_CT_CP_HPD, |
143 | .ls_oe_gpio = HDMI_GPIO_LS_OE, | 173 | .ls_oe_gpio = HDMI_GPIO_LS_OE, |
144 | .hpd_gpio = HDMI_GPIO_HPD, | 174 | .hpd_gpio = HDMI_GPIO_HPD, |
145 | }; | 175 | }; |
146 | 176 | ||
147 | static struct omap_dss_device sdp4430_hdmi_device = { | 177 | static struct platform_device sdp4430_tpd_device = { |
148 | .name = "hdmi", | 178 | .name = "tpd12s015", |
149 | .driver_name = "hdmi_panel", | 179 | .id = 0, |
150 | .type = OMAP_DISPLAY_TYPE_HDMI, | 180 | .dev.platform_data = &sdp4430_tpd_pdata, |
151 | .channel = OMAP_DSS_CHANNEL_DIGIT, | ||
152 | .data = &sdp4430_hdmi_data, | ||
153 | }; | 181 | }; |
154 | 182 | ||
183 | |||
155 | static struct picodlp_panel_data sdp4430_picodlp_pdata = { | 184 | static struct picodlp_panel_data sdp4430_picodlp_pdata = { |
156 | .picodlp_adapter_id = 2, | 185 | .picodlp_adapter_id = 2, |
157 | .emu_done_gpio = 44, | 186 | .emu_done_gpio = 44, |
@@ -168,16 +197,13 @@ static struct omap_dss_device sdp4430_picodlp_device = { | |||
168 | }; | 197 | }; |
169 | 198 | ||
170 | static struct omap_dss_device *sdp4430_dss_devices[] = { | 199 | static struct omap_dss_device *sdp4430_dss_devices[] = { |
171 | &sdp4430_lcd_device, | ||
172 | &sdp4430_lcd2_device, | ||
173 | &sdp4430_hdmi_device, | ||
174 | &sdp4430_picodlp_device, | 200 | &sdp4430_picodlp_device, |
175 | }; | 201 | }; |
176 | 202 | ||
177 | static struct omap_dss_board_info sdp4430_dss_data = { | 203 | static struct omap_dss_board_info sdp4430_dss_data = { |
178 | .num_devices = ARRAY_SIZE(sdp4430_dss_devices), | 204 | .num_devices = ARRAY_SIZE(sdp4430_dss_devices), |
179 | .devices = sdp4430_dss_devices, | 205 | .devices = sdp4430_dss_devices, |
180 | .default_device = &sdp4430_lcd_device, | 206 | .default_display_name = "lcd", |
181 | }; | 207 | }; |
182 | 208 | ||
183 | /* | 209 | /* |
@@ -201,4 +227,10 @@ void __init omap_4430sdp_display_init_of(void) | |||
201 | pr_err("%s: Could not get DLP POWER ON GPIO\n", __func__); | 227 | pr_err("%s: Could not get DLP POWER ON GPIO\n", __func__); |
202 | 228 | ||
203 | omap_display_init(&sdp4430_dss_data); | 229 | omap_display_init(&sdp4430_dss_data); |
230 | |||
231 | platform_device_register(&sdp4430_lcd_device); | ||
232 | platform_device_register(&sdp4430_lcd2_device); | ||
233 | |||
234 | platform_device_register(&sdp4430_tpd_device); | ||
235 | platform_device_register(&sdp4430_hdmi_connector_device); | ||
204 | } | 236 | } |