@@ -72,7 +72,6 @@ struct imx_ldb_channel {
72
72
struct device_node * child ;
73
73
struct i2c_adapter * ddc ;
74
74
int chno ;
75
- const struct drm_edid * drm_edid ;
76
75
struct drm_display_mode mode ;
77
76
int mode_valid ;
78
77
u32 bus_format ;
@@ -142,14 +141,17 @@ static int imx_ldb_connector_get_modes(struct drm_connector *connector)
142
141
if (num_modes > 0 )
143
142
return num_modes ;
144
143
145
- if (!imx_ldb_ch -> drm_edid && imx_ldb_ch -> ddc ) {
146
- imx_ldb_ch -> drm_edid = drm_edid_read_ddc (connector ,
147
- imx_ldb_ch -> ddc );
148
- drm_edid_connector_update (connector , imx_ldb_ch -> drm_edid );
149
- }
144
+ if (imx_ldb_ch -> ddc ) {
145
+ const struct drm_edid * edid = drm_edid_read_ddc (connector ,
146
+ imx_ldb_ch -> ddc );
150
147
151
- if (imx_ldb_ch -> drm_edid )
152
- num_modes = drm_edid_connector_add_modes (connector );
148
+ if (edid ) {
149
+ drm_edid_connector_update (connector , edid );
150
+ drm_edid_free (edid );
151
+
152
+ return drm_edid_connector_add_modes (connector );
153
+ }
154
+ }
153
155
154
156
if (imx_ldb_ch -> mode_valid ) {
155
157
struct drm_display_mode * mode ;
@@ -566,18 +568,10 @@ static int imx_ldb_panel_ddc(struct device *dev,
566
568
}
567
569
568
570
if (!channel -> ddc ) {
569
- const void * edidp ;
570
- int edid_len ;
571
-
572
571
/* if no DDC available, fallback to hardcoded EDID */
573
572
dev_dbg (dev , "no ddc available\n" );
574
573
575
- edidp = of_get_property (child , "edid" , & edid_len );
576
- if (edidp ) {
577
- channel -> drm_edid = drm_edid_alloc (edidp , edid_len );
578
- if (!channel -> drm_edid )
579
- return - ENOMEM ;
580
- } else if (!channel -> panel ) {
574
+ if (!channel -> panel ) {
581
575
/* fallback to display-timings node */
582
576
ret = of_get_drm_display_mode (child ,
583
577
& channel -> mode ,
@@ -744,7 +738,6 @@ static void imx_ldb_remove(struct platform_device *pdev)
744
738
for (i = 0 ; i < 2 ; i ++ ) {
745
739
struct imx_ldb_channel * channel = & imx_ldb -> channel [i ];
746
740
747
- drm_edid_free (channel -> drm_edid );
748
741
i2c_put_adapter (channel -> ddc );
749
742
}
750
743
0 commit comments