video: stm32: remove the compatible "synopsys, dw-mipi-dsi" support

Remove the compatible "synopsys,dw-mipi-dsi" added in U-Boot
(it don't exist in Linux kernel binding); it is only used
to bind the generic synopsys UCLASS_DSI_HOST "dw_mipi_dsi" to
the driver "stm32-display-dsi" UCLASS_VIDEO_BRIDGE

This binding is done in Linux kernel drivers without compatible
(dw_mipi_dsi_bind() is called in bind of driver, for example in
drivers/gpu/drm/rockchip/dw-mipi-dsi-rockchip.c).

This patch does the same in U-Boot driver, the STM32 driver
calls during its bind the function device_bind_driver_to_node
to bind the generic driver "dw_mipi_dsi" at the same address.

This patch reduces the device tree differences
between Linux kernel and U-Boot for stm32mp1 platform.

Tested with v2020.01-rc1 on STM32MP157C-EV1 and STM32MP157C-DK2.

The dependency of driver is clearer and the probe order is guaranteed.

STM32MP> dm tree
 Class     Index  Probed  Driver                Name
-----------------------------------------------------------
 root          0  [ + ]   root_driver           root_driver
 sysreset      0  [   ]   syscon_reboot         |-- reboot
 simple_bus    0  [ + ]   generic_simple_bus    |-- soc
 serial        0  [ + ]   serial_stm32          |   |-- serial@40010000
...
 video_brid    0  [ + ]   stm32-display-dsi     |   |-- dsi@5a000000
 dsi_host      0  [ + ]   dw_mipi_dsi           |   |   |-- dsihost
 panel         0  [ + ]   rm68200_panel         |   |   `-- panel-dsi@0
...

Signed-off-by: Patrick Delaunay <patrick.delaunay@st.com>
This commit is contained in:
Patrick Delaunay 2019-11-12 15:39:58 +01:00 committed by Anatolij Gustschin
parent ec3dcea744
commit 754815b854
4 changed files with 14 additions and 19 deletions

View file

@ -5,13 +5,6 @@
#include "stm32mp157a-dk1-u-boot.dtsi" #include "stm32mp157a-dk1-u-boot.dtsi"
/ {
dsi_host: dsi_host {
compatible = "synopsys,dw-mipi-dsi";
status = "okay";
};
};
&i2c1 { &i2c1 {
hdmi-transmitter@39 { hdmi-transmitter@39 {
reset-gpios = <&gpioa 10 GPIO_ACTIVE_LOW>; reset-gpios = <&gpioa 10 GPIO_ACTIVE_LOW>;

View file

@ -14,11 +14,6 @@
spi0 = &qspi; spi0 = &qspi;
usb0 = &usbotg_hs; usb0 = &usbotg_hs;
}; };
dsi_host: dsi_host {
compatible = "synopsys,dw-mipi-dsi";
status = "okay";
};
}; };
&flash0 { &flash0 {

View file

@ -816,15 +816,9 @@ static int dw_mipi_dsi_probe(struct udevice *dev)
return 0; return 0;
} }
static const struct udevice_id dw_mipi_dsi_ids[] = {
{ .compatible = "synopsys,dw-mipi-dsi" },
{ }
};
U_BOOT_DRIVER(dw_mipi_dsi) = { U_BOOT_DRIVER(dw_mipi_dsi) = {
.name = "dw_mipi_dsi", .name = "dw_mipi_dsi",
.id = UCLASS_DSI_HOST, .id = UCLASS_DSI_HOST,
.of_match = dw_mipi_dsi_ids,
.probe = dw_mipi_dsi_probe, .probe = dw_mipi_dsi_probe,
.ops = &dw_mipi_dsi_ops, .ops = &dw_mipi_dsi_ops,
.priv_auto_alloc_size = sizeof(struct dw_mipi_dsi), .priv_auto_alloc_size = sizeof(struct dw_mipi_dsi),

View file

@ -20,6 +20,7 @@
#include <asm/io.h> #include <asm/io.h>
#include <asm/arch/gpio.h> #include <asm/arch/gpio.h>
#include <dm/device-internal.h> #include <dm/device-internal.h>
#include <dm/lists.h>
#include <linux/iopoll.h> #include <linux/iopoll.h>
#include <power/regulator.h> #include <power/regulator.h>
@ -399,6 +400,18 @@ static int stm32_dsi_set_backlight(struct udevice *dev, int percent)
return 0; return 0;
} }
static int stm32_dsi_bind(struct udevice *dev)
{
int ret;
ret = device_bind_driver_to_node(dev, "dw_mipi_dsi", "dsihost",
dev_ofnode(dev), NULL);
if (ret)
return ret;
return dm_scan_fdt_dev(dev);
}
static int stm32_dsi_probe(struct udevice *dev) static int stm32_dsi_probe(struct udevice *dev)
{ {
struct stm32_dsi_priv *priv = dev_get_priv(dev); struct stm32_dsi_priv *priv = dev_get_priv(dev);
@ -483,7 +496,7 @@ U_BOOT_DRIVER(stm32_dsi) = {
.name = "stm32-display-dsi", .name = "stm32-display-dsi",
.id = UCLASS_VIDEO_BRIDGE, .id = UCLASS_VIDEO_BRIDGE,
.of_match = stm32_dsi_ids, .of_match = stm32_dsi_ids,
.bind = dm_scan_fdt_dev, .bind = stm32_dsi_bind,
.probe = stm32_dsi_probe, .probe = stm32_dsi_probe,
.ops = &stm32_dsi_ops, .ops = &stm32_dsi_ops,
.priv_auto_alloc_size = sizeof(struct stm32_dsi_priv), .priv_auto_alloc_size = sizeof(struct stm32_dsi_priv),