@@ -36,7 +36,6 @@ struct lt9611uxc {
3636 struct device * dev ;
3737 struct drm_bridge bridge ;
3838 struct drm_bridge * next_bridge ;
39- struct drm_connector connector ;
4039
4140 struct regmap * regmap ;
4241 /* Protects all accesses to registers by stopping the on-chip MCU */
@@ -122,11 +121,6 @@ static struct lt9611uxc *bridge_to_lt9611uxc(struct drm_bridge *bridge)
122121 return container_of (bridge , struct lt9611uxc , bridge );
123122}
124123
125- static struct lt9611uxc * connector_to_lt9611uxc (struct drm_connector * connector )
126- {
127- return container_of (connector , struct lt9611uxc , connector );
128- }
129-
130124static void lt9611uxc_lock (struct lt9611uxc * lt9611uxc )
131125{
132126 mutex_lock (& lt9611uxc -> ocm_lock );
@@ -173,20 +167,14 @@ static void lt9611uxc_hpd_work(struct work_struct *work)
173167 struct lt9611uxc * lt9611uxc = container_of (work , struct lt9611uxc , work );
174168 bool connected ;
175169
176- if (lt9611uxc -> connector .dev ) {
177- if (lt9611uxc -> connector .dev -> mode_config .funcs )
178- drm_kms_helper_hotplug_event (lt9611uxc -> connector .dev );
179- } else {
180-
181- mutex_lock (& lt9611uxc -> ocm_lock );
182- connected = lt9611uxc -> hdmi_connected ;
183- mutex_unlock (& lt9611uxc -> ocm_lock );
170+ mutex_lock (& lt9611uxc -> ocm_lock );
171+ connected = lt9611uxc -> hdmi_connected ;
172+ mutex_unlock (& lt9611uxc -> ocm_lock );
184173
185- drm_bridge_hpd_notify (& lt9611uxc -> bridge ,
186- connected ?
187- connector_status_connected :
188- connector_status_disconnected );
189- }
174+ drm_bridge_hpd_notify (& lt9611uxc -> bridge ,
175+ connected ?
176+ connector_status_connected :
177+ connector_status_disconnected );
190178}
191179
192180static void lt9611uxc_reset (struct lt9611uxc * lt9611uxc )
@@ -291,87 +279,13 @@ static struct mipi_dsi_device *lt9611uxc_attach_dsi(struct lt9611uxc *lt9611uxc,
291279 return dsi ;
292280}
293281
294- static int lt9611uxc_connector_get_modes (struct drm_connector * connector )
295- {
296- struct lt9611uxc * lt9611uxc = connector_to_lt9611uxc (connector );
297- const struct drm_edid * drm_edid ;
298- int count ;
299-
300- drm_edid = drm_bridge_edid_read (& lt9611uxc -> bridge , connector );
301- drm_edid_connector_update (connector , drm_edid );
302- count = drm_edid_connector_add_modes (connector );
303- drm_edid_free (drm_edid );
304-
305- return count ;
306- }
307-
308- static enum drm_connector_status lt9611uxc_connector_detect (struct drm_connector * connector ,
309- bool force )
310- {
311- struct lt9611uxc * lt9611uxc = connector_to_lt9611uxc (connector );
312-
313- return lt9611uxc -> bridge .funcs -> detect (& lt9611uxc -> bridge );
314- }
315-
316- static enum drm_mode_status lt9611uxc_connector_mode_valid (struct drm_connector * connector ,
317- struct drm_display_mode * mode )
318- {
319- struct lt9611uxc_mode * lt9611uxc_mode = lt9611uxc_find_mode (mode );
320-
321- return lt9611uxc_mode ? MODE_OK : MODE_BAD ;
322- }
323-
324- static const struct drm_connector_helper_funcs lt9611uxc_bridge_connector_helper_funcs = {
325- .get_modes = lt9611uxc_connector_get_modes ,
326- .mode_valid = lt9611uxc_connector_mode_valid ,
327- };
328-
329- static const struct drm_connector_funcs lt9611uxc_bridge_connector_funcs = {
330- .fill_modes = drm_helper_probe_single_connector_modes ,
331- .detect = lt9611uxc_connector_detect ,
332- .destroy = drm_connector_cleanup ,
333- .reset = drm_atomic_helper_connector_reset ,
334- .atomic_duplicate_state = drm_atomic_helper_connector_duplicate_state ,
335- .atomic_destroy_state = drm_atomic_helper_connector_destroy_state ,
336- };
337-
338- static int lt9611uxc_connector_init (struct drm_bridge * bridge , struct lt9611uxc * lt9611uxc )
339- {
340- int ret ;
341-
342- lt9611uxc -> connector .polled = DRM_CONNECTOR_POLL_HPD ;
343-
344- drm_connector_helper_add (& lt9611uxc -> connector ,
345- & lt9611uxc_bridge_connector_helper_funcs );
346- ret = drm_connector_init (bridge -> dev , & lt9611uxc -> connector ,
347- & lt9611uxc_bridge_connector_funcs ,
348- DRM_MODE_CONNECTOR_HDMIA );
349- if (ret ) {
350- DRM_ERROR ("Failed to initialize connector with drm\n" );
351- return ret ;
352- }
353-
354- return drm_connector_attach_encoder (& lt9611uxc -> connector , bridge -> encoder );
355- }
356-
357282static int lt9611uxc_bridge_attach (struct drm_bridge * bridge ,
358283 enum drm_bridge_attach_flags flags )
359284{
360285 struct lt9611uxc * lt9611uxc = bridge_to_lt9611uxc (bridge );
361- int ret ;
362-
363- ret = drm_bridge_attach (bridge -> encoder , lt9611uxc -> next_bridge ,
364- bridge , flags | DRM_BRIDGE_ATTACH_NO_CONNECTOR );
365- if (ret )
366- return ret ;
367286
368- if (!(flags & DRM_BRIDGE_ATTACH_NO_CONNECTOR )) {
369- ret = lt9611uxc_connector_init (bridge , lt9611uxc );
370- if (ret < 0 )
371- return ret ;
372- }
373-
374- return 0 ;
287+ return drm_bridge_attach (bridge -> encoder , lt9611uxc -> next_bridge ,
288+ bridge , flags );
375289}
376290
377291static enum drm_mode_status
0 commit comments