[PATCH v1 0/4] rework DSI characteristics

Fill characteristics of DSI data link to platform data instead of mipi device to avoid memory corruption.
Yannick Fertre (4): video: mipi update panel platform data video: stm32: stm32_dsi: copy DSI fields video: raydium_rm68200: fill characteristics of DSI data link video: orisetech_otm8009a: fill characteristics of DSI data link
drivers/video/orisetech_otm8009a.c | 20 +++++--------------- drivers/video/raydium-rm68200.c | 20 +++++--------------- drivers/video/stm32/stm32_dsi.c | 3 +++ include/mipi_dsi.h | 6 ++++++ 4 files changed, 19 insertions(+), 30 deletions(-)

Add new fields "lanes, format & mode_flags" to structure mipi_dsi_panel_plat.
Signed-off-by: Yannick Fertre yannick.fertre@st.com --- include/mipi_dsi.h | 6 ++++++ 1 file changed, 6 insertions(+)
diff --git a/include/mipi_dsi.h b/include/mipi_dsi.h index 83c5163cf8..c8a7d3daef 100644 --- a/include/mipi_dsi.h +++ b/include/mipi_dsi.h @@ -221,9 +221,15 @@ static inline int mipi_dsi_pixel_format_to_bpp(enum mipi_dsi_pixel_format fmt) /** * struct mipi_dsi_panel_plat - DSI panel platform data * @device: DSI peripheral device + * @lanes: number of active data lanes + * @format: pixel format for video mode + * @mode_flags: DSI operation mode related flags */ struct mipi_dsi_panel_plat { struct mipi_dsi_device *device; + unsigned int lanes; + enum mipi_dsi_pixel_format format; + unsigned long mode_flags; };
/**

Hi Yannick
From: Yannick FERTRE yannick.fertre@st.com Sent: mercredi 24 juin 2020 10:46
Add new fields "lanes, format & mode_flags" to structure mipi_dsi_panel_plat.
Signed-off-by: Yannick Fertre yannick.fertre@st.com
include/mipi_dsi.h | 6 ++++++ 1 file changed, 6 insertions(+)
Reviewed-by: Patrick Delaunay patrick.delaunay@st.com
Regards
Patrick

On Wed, 24 Jun 2020 10:45:39 +0200 Yannick Fertre yannick.fertre@st.com wrote:
Add new fields "lanes, format & mode_flags" to structure mipi_dsi_panel_plat.
Signed-off-by: Yannick Fertre yannick.fertre@st.com
include/mipi_dsi.h | 6 ++++++ 1 file changed, 6 insertions(+)
Applied to u-boot-video/master, thanks!
-- Anatolij

Copy the DSI data link characteristics from panel platform data to mipi DSI device.
Signed-off-by: Yannick Fertre yannick.fertre@st.com --- drivers/video/stm32/stm32_dsi.c | 3 +++ 1 file changed, 3 insertions(+)
diff --git a/drivers/video/stm32/stm32_dsi.c b/drivers/video/stm32/stm32_dsi.c index 04796435f1..c9b1633cf7 100644 --- a/drivers/video/stm32/stm32_dsi.c +++ b/drivers/video/stm32/stm32_dsi.c @@ -354,6 +354,9 @@ static int stm32_dsi_attach(struct udevice *dev)
mplat = dev_get_platdata(priv->panel); mplat->device = &priv->device; + device->lanes = mplat->lanes; + device->format = mplat->format; + device->mode_flags = mplat->mode_flags;
ret = panel_get_display_timing(priv->panel, &timings); if (ret) {

Hi Yannick
From: Yannick FERTRE yannick.fertre@st.com Sent: mercredi 24 juin 2020 10:46
Copy the DSI data link characteristics from panel platform data to mipi DSI device.
Signed-off-by: Yannick Fertre yannick.fertre@st.com
drivers/video/stm32/stm32_dsi.c | 3 +++ 1 file changed, 3 insertions(+)
Reviewed-by: Patrick Delaunay patrick.delaunay@st.com
Thanks
Patrick

On Wed, 24 Jun 2020 10:45:40 +0200 Yannick Fertre yannick.fertre@st.com wrote:
Copy the DSI data link characteristics from panel platform data to mipi DSI device.
Signed-off-by: Yannick Fertre yannick.fertre@st.com
drivers/video/stm32/stm32_dsi.c | 3 +++ 1 file changed, 3 insertions(+)
Applied to u-boot-video/master, thanks!
-- Anatolij

Fill characteristics of DSI data link to platform data instead of mipi device to avoid memory corruption.
Signed-off-by: Yannick Fertre yannick.fertre@st.com --- drivers/video/raydium-rm68200.c | 20 +++++--------------- 1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/drivers/video/raydium-rm68200.c b/drivers/video/raydium-rm68200.c index 9169280fb8..353894503b 100644 --- a/drivers/video/raydium-rm68200.c +++ b/drivers/video/raydium-rm68200.c @@ -75,9 +75,6 @@ struct rm68200_panel_priv { struct udevice *reg; struct udevice *backlight; struct gpio_desc reset; - unsigned int lanes; - enum mipi_dsi_pixel_format format; - unsigned long mode_flags; };
static const struct display_timing default_timing = { @@ -259,17 +256,8 @@ static int rm68200_panel_enable_backlight(struct udevice *dev) static int rm68200_panel_get_display_timing(struct udevice *dev, struct display_timing *timings) { - struct mipi_dsi_panel_plat *plat = dev_get_platdata(dev); - struct mipi_dsi_device *device = plat->device; - struct rm68200_panel_priv *priv = dev_get_priv(dev); - memcpy(timings, &default_timing, sizeof(*timings));
- /* fill characteristics of DSI data link */ - device->lanes = priv->lanes; - device->format = priv->format; - device->mode_flags = priv->mode_flags; - return 0; }
@@ -308,6 +296,7 @@ static int rm68200_panel_ofdata_to_platdata(struct udevice *dev) static int rm68200_panel_probe(struct udevice *dev) { struct rm68200_panel_priv *priv = dev_get_priv(dev); + struct mipi_dsi_panel_plat *plat = dev_get_platdata(dev); int ret;
if (IS_ENABLED(CONFIG_DM_REGULATOR) && priv->reg) { @@ -322,9 +311,10 @@ static int rm68200_panel_probe(struct udevice *dev) dm_gpio_set_value(&priv->reset, false); mdelay(10);
- priv->lanes = 2; - priv->format = MIPI_DSI_FMT_RGB888; - priv->mode_flags = MIPI_DSI_MODE_VIDEO | + /* fill characteristics of DSI data link */ + plat->lanes = 2; + plat->format = MIPI_DSI_FMT_RGB888; + plat->mode_flags = MIPI_DSI_MODE_VIDEO | MIPI_DSI_MODE_VIDEO_BURST | MIPI_DSI_MODE_LPM;

Hi Yannick
From: Yannick FERTRE yannick.fertre@st.com Sent: mercredi 24 juin 2020 10:46
Fill characteristics of DSI data link to platform data instead of mipi device to avoid memory corruption.
Signed-off-by: Yannick Fertre yannick.fertre@st.com
drivers/video/raydium-rm68200.c | 20 +++++--------------- 1 file changed, 5 insertions(+), 15 deletions(-)
Reviewed-by: Patrick Delaunay patrick.delaunay@st.com
Thanks
Patrick

On Wed, 24 Jun 2020 10:45:41 +0200 Yannick Fertre yannick.fertre@st.com wrote:
Fill characteristics of DSI data link to platform data instead of mipi device to avoid memory corruption.
Signed-off-by: Yannick Fertre yannick.fertre@st.com
drivers/video/raydium-rm68200.c | 20 +++++--------------- 1 file changed, 5 insertions(+), 15 deletions(-)
Applied to u-boot-video/master, thanks!
-- Anatolij

Fill characteristics of DSI data link to platform data instead of mipi device to avoid memory corruption.
Signed-off-by: Yannick Fertre yannick.fertre@st.com --- drivers/video/orisetech_otm8009a.c | 20 +++++--------------- 1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/drivers/video/orisetech_otm8009a.c b/drivers/video/orisetech_otm8009a.c index b1f2dd403e..362bf6a6fe 100644 --- a/drivers/video/orisetech_otm8009a.c +++ b/drivers/video/orisetech_otm8009a.c @@ -62,9 +62,6 @@ struct otm8009a_panel_priv { struct udevice *reg; struct gpio_desc reset; - unsigned int lanes; - enum mipi_dsi_pixel_format format; - unsigned long mode_flags; };
static const struct display_timing default_timing = { @@ -293,17 +290,8 @@ static int otm8009a_panel_enable_backlight(struct udevice *dev) static int otm8009a_panel_get_display_timing(struct udevice *dev, struct display_timing *timings) { - struct mipi_dsi_panel_plat *plat = dev_get_platdata(dev); - struct mipi_dsi_device *device = plat->device; - struct otm8009a_panel_priv *priv = dev_get_priv(dev); - memcpy(timings, &default_timing, sizeof(*timings));
- /* fill characteristics of DSI data link */ - device->lanes = priv->lanes; - device->format = priv->format; - device->mode_flags = priv->mode_flags; - return 0; }
@@ -335,6 +323,7 @@ static int otm8009a_panel_ofdata_to_platdata(struct udevice *dev) static int otm8009a_panel_probe(struct udevice *dev) { struct otm8009a_panel_priv *priv = dev_get_priv(dev); + struct mipi_dsi_panel_plat *plat = dev_get_platdata(dev); int ret;
if (IS_ENABLED(CONFIG_DM_REGULATOR) && priv->reg) { @@ -350,9 +339,10 @@ static int otm8009a_panel_probe(struct udevice *dev) dm_gpio_set_value(&priv->reset, false); mdelay(10); /* >5ms */
- priv->lanes = 2; - priv->format = MIPI_DSI_FMT_RGB888; - priv->mode_flags = MIPI_DSI_MODE_VIDEO | + /* fill characteristics of DSI data link */ + plat->lanes = 2; + plat->format = MIPI_DSI_FMT_RGB888; + plat->mode_flags = MIPI_DSI_MODE_VIDEO | MIPI_DSI_MODE_VIDEO_BURST | MIPI_DSI_MODE_LPM;

Hi Yannick,
From: Yannick FERTRE yannick.fertre@st.com Sent: mercredi 24 juin 2020 10:46
Fill characteristics of DSI data link to platform data instead of mipi device to avoid memory corruption.
Signed-off-by: Yannick Fertre yannick.fertre@st.com
drivers/video/orisetech_otm8009a.c | 20 +++++--------------- 1 file changed, 5 insertions(+), 15 deletions(-)
Reviewed-by: Patrick Delaunay patrick.delaunay@st.com
Thanks
Patrick

On Wed, 24 Jun 2020 10:45:42 +0200 Yannick Fertre yannick.fertre@st.com wrote:
Fill characteristics of DSI data link to platform data instead of mipi device to avoid memory corruption.
Signed-off-by: Yannick Fertre yannick.fertre@st.com
drivers/video/orisetech_otm8009a.c | 20 +++++--------------- 1 file changed, 5 insertions(+), 15 deletions(-)
Applied to u-boot-video/master, thanks!
-- Anatolij

Hi Yannick,
On Wed, 24 Jun 2020 10:45:38 +0200 Yannick Fertre yannick.fertre@st.com wrote:
Fill characteristics of DSI data link to platform data instead of mipi device to avoid memory corruption.
This sounds like a bug fix? Should this series be applied for v2020.07 release?
Thanks!
-- Anatolij

Hi Anatolij
From: Anatolij Gustschin agust@denx.de Sent: mercredi 24 juin 2020 15:32
Hi Yannick,
On Wed, 24 Jun 2020 10:45:38 +0200 Yannick Fertre yannick.fertre@st.com wrote:
Fill characteristics of DSI data link to platform data instead of mipi device to avoid memory corruption.
This sounds like a bug fix? Should this series be applied for v2020.07 release?
Yes it is a bugfix.... We have crash when the STM32MP157x boards (EV1 or DK2) is booting with TF-A and OP-TEE support.
But we don't see any issue for TF-A boot only (with secure monitor = SPMIN) or SPL boot, So I assumed that it is not a blocker today for STM32MP15x support.
But it is perfect if this serie can be integrated in a v2020.07 pull request.
Thanks!
Patrick
participants (3)
-
Anatolij Gustschin
-
Patrick DELAUNAY
-
Yannick Fertre