Hi Heiko, and many thanks for this serie. I tested "partly" it successfully on stm32 (single-dsi, no bind/unbind). Many thanks, Philippe :-) On 06/18/2018 12:27 PM, Heiko Stuebner wrote: > The Rockchip DSI driver was separate till now, not using the common > bridge driver that was introduced a bit later. So this series migrates > over to use that common bridge driver and then also adds support for > dual-dsi to both the bridge and Rockchip glue code. > > The bridge-migration itself is based on Nickeys earlier v8 > work, but adapted to current kernels and with a new split between probe > and bind, so that we do not create and drop the dsi-host on each deferred > bind attempt. > > changes in v2: > - rebase against newer drm code (dsi-bridge+rockchip changes) > - add SPDX header to new glue driver > - expect regular interface lanes from panel (like 4) not the double number > Similar to tegra > - keep links to both master and slave > > > The dual-dsi setup follows the port description introduced by Archit [0], > in that the panel defines two input ports that get connected to both > dsi-controllers instances. So on Gru-Scarlett this looks for example > like: > > &mipi_dsi { > status = "okay"; > clock-master; > > ports { > mipi_out: port@1 { > reg = <1>; > > mipi_out_panel: endpoint { > remote-endpoint = <&mipi_in_panel>; > }; > }; > }; > > mipi_panel: panel@0 { > /* 2 different panels are used, compatibles are in dts files */ > reg = <0>; > backlight = <&backlight>; > enable-gpios = <&gpio4 25 GPIO_ACTIVE_HIGH>; > pinctrl-names = "default"; > pinctrl-0 = <&display_rst_l>; > > ports { > #address-cells = <1>; > #size-cells = <0>; > > port@0 { > reg = <0>; > > mipi_in_panel: endpoint { > remote-endpoint = <&mipi_out_panel>; > }; > }; > > port@1 { > reg = <1>; > > mipi1_in_panel: endpoint@1 { > remote-endpoint = <&mipi1_out_panel>; > }; > }; > }; > }; > }; > > &mipi_dsi1 { > status = "okay"; > > ports { > mipi1_out: port@1 { > reg = <1>; > > mipi1_out_panel: endpoint { > remote-endpoint = <&mipi1_in_panel>; > }; > }; > }; > }; > > > The driver internal setup is pretty similar to what tegra does with > its ganged-mode [1][2]. But here a new helper function allows to traverse > the devicetree from one controller port through the panel to find > another dsi-controller using that same panel. This way we don't need > a special phandle-property to link the controllers together. > > For the CRTC it is still one single display to handle, only with > an additional switch that enables the dual-dsi output. > > > For practical purposes it is possible to just pick half the series > (till patch 5) to get the migration to the bridge driver first, > so that we can get rid of the dw-dsi copy in the Rockchip driver. > > But of course Acks / Reviews of the dsi-bridge changes would be needed. > > > [0] https://patchwork.kernel.org/patch/10172381/ > [1] https://lkml.org/lkml/2014/8/5/396 > [2] https://patchwork.kernel.org/patch/5075161/ > > Heiko Stuebner (5): > drm/bridge/synopsys: dsi: move mipi_dsi_host_unregister to > __dw_mipi_dsi_remove > drm/bridge/synopsys: dsi: don't call __dw_mipi_dsi_probe from > dw_mipi_dsi_bind > drm/bridge/synopsys: dsi: defer probing if panel not available in > bridge-attach > drm/dsi: add helper function to find the second host in a dual-dsi > setup > drm/rockchip: dsi: add dual mipi support > > Nickey Yang (3): > dt-bindings: display: rockchip: update DSI controller > drm/rockchip: dsi: migrate to use dw-mipi-dsi bridge driver > drm/bridge/synopsys: dsi: add dual-dsi support > > .../display/rockchip/dw_mipi_dsi_rockchip.txt | 23 +- > drivers/gpu/drm/bridge/synopsys/dw-mipi-dsi.c | 115 +- > drivers/gpu/drm/drm_mipi_dsi.c | 56 + > drivers/gpu/drm/rockchip/Kconfig | 2 +- > drivers/gpu/drm/rockchip/Makefile | 2 +- > .../gpu/drm/rockchip/dw-mipi-dsi-rockchip.c | 992 ++++++++++++ > drivers/gpu/drm/rockchip/dw-mipi-dsi.c | 1349 ----------------- > drivers/gpu/drm/rockchip/rockchip_drm_drv.c | 2 +- > drivers/gpu/drm/rockchip/rockchip_drm_drv.h | 3 +- > drivers/gpu/drm/rockchip/rockchip_drm_vop.c | 3 + > drivers/gpu/drm/rockchip/rockchip_drm_vop.h | 4 + > drivers/gpu/drm/rockchip/rockchip_vop_reg.c | 1 + > include/drm/bridge/dw_mipi_dsi.h | 6 +- > include/drm/drm_mipi_dsi.h | 2 + > 14 files changed, 1179 insertions(+), 1381 deletions(-) > create mode 100644 drivers/gpu/drm/rockchip/dw-mipi-dsi-rockchip.c > delete mode 100644 drivers/gpu/drm/rockchip/dw-mipi-dsi.c > ��.n��������+%������w��{.n����z�{��ܨ}���Ơz�j:+v�����w����ޙ��&�)ߡ�a����z�ޗ���ݢj��w�f