@@ -70,6 +70,10 @@ struct panel_desc {
7070 } size ;
7171
7272 /**
73+ * @reset: the time (in milliseconds) indicates the delay time
74+ * after the panel to operate reset gpio
75+ * @init: the time (in milliseconds) that it takes for the panel to
76+ * power on and dsi host can send command to panel
7377 * @prepare: the time (in milliseconds) that it takes for the panel to
7478 * become ready and start receiving video data
7579 * @enable: the time (in milliseconds) that it takes for the panel to
@@ -81,6 +85,8 @@ struct panel_desc {
8185 * to power itself down completely
8286 */
8387 struct {
88+ unsigned int reset ;
89+ unsigned int init ;
8490 unsigned int prepare ;
8591 unsigned int enable ;
8692 unsigned int disable ;
@@ -105,7 +111,6 @@ struct panel_simple {
105111
106112 struct gpio_desc * enable_gpio ;
107113 struct gpio_desc * reset_gpio ;
108- unsigned int reset_delay ;
109114
110115 struct dsi_panel_cmds * on_cmds ;
111116 struct dsi_panel_cmds * off_cmds ;
@@ -422,12 +427,15 @@ static int panel_simple_prepare(struct drm_panel *panel)
422427 if (p -> reset_gpio )
423428 gpiod_direction_output (p -> reset_gpio , 1 );
424429
425- if (p -> reset_delay )
426- msleep (p -> reset_delay );
430+ if (p -> desc && p -> desc -> delay . reset )
431+ msleep (p -> desc -> delay . reset );
427432
428433 if (p -> reset_gpio )
429434 gpiod_direction_output (p -> reset_gpio , 0 );
430435
436+ if (p -> desc && p -> desc -> delay .init )
437+ msleep (p -> desc -> delay .init );
438+
431439 if (p -> on_cmds ) {
432440 err = panel_simple_dsi_send_cmds (p , p -> on_cmds );
433441 if (err )
@@ -540,6 +548,10 @@ static int panel_simple_probe(struct device *dev, const struct panel_desc *desc)
540548 of_desc -> delay .disable = val ;
541549 if (!of_property_read_u32 (dev -> of_node , "delay,unprepare" , & val ))
542550 of_desc -> delay .unprepare = val ;
551+ if (!of_property_read_u32 (dev -> of_node , "delay,reset" , & val ))
552+ of_desc -> delay .reset = val ;
553+ if (!of_property_read_u32 (dev -> of_node , "delay,init" , & val ))
554+ of_desc -> delay .init = val ;
543555
544556 panel -> enabled = false;
545557 panel -> prepared = false;
@@ -1961,9 +1973,6 @@ static int panel_simple_dsi_probe(struct mipi_dsi_device *dsi)
19611973 if (!of_property_read_u32 (dsi -> dev .of_node , "dsi,lanes" , & val ))
19621974 dsi -> lanes = val ;
19631975
1964- if (!of_property_read_u32 (dsi -> dev .of_node , "reset-delay-ms" , & val ))
1965- panel -> reset_delay = val ;
1966-
19671976 data = of_get_property (dsi -> dev .of_node , "panel-init-sequence" , & len );
19681977 if (data ) {
19691978 panel -> on_cmds = devm_kzalloc (& dsi -> dev ,
0 commit comments