Some DSI host versions are implemented on multiple SoCs which use vastly different register maps. This messes with our current assumptions of being able to map {dsi0, dsi1} to {reg0, reg1}. Solve that by adding a way of specifying multiple sets of base registers and try comparing them against the register specified in DT until we find a match. This removes the need for the QCM2290-specific compatible which was used in the SM6115 DT (which uses DSIv2.4.1, just like SC7180). The series also takes care of that. Tested on SM6115P Lenovo Tab P11 and SM8350 PDX215 Konrad Dybcio (10): dt-bindings: display/msm: dsi-controller-main: Fix deprecated QCM2290 compatible drm/msm/dsi: Turn msm_dsi_config::io_start into a 2d array drm/msm/dsi: Zero-terminate msm_dsi_config::io_start drm/msm/dsi: dsi_host: Fix DSI index detection when version clash occurs drm/msm/dsi: dsi_cfg: Deduplicate identical structs drm/msm/dsi: dsi_cfg: Merge SC7180 config into SDM845 drm/msm/dsi: Switch the QCM2290-specific compatible to index autodetection drm/msm/dsi: Remove custom DSI config handling dt-bindings: display/msm: dsi-controller-main: Add SM6115 arm64: dts: qcom: sm6115: Use the correct DSI compatible .../display/msm/dsi-controller-main.yaml | 4 +- arch/arm64/boot/dts/qcom/sm6115.dtsi | 2 +- drivers/gpu/drm/msm/dsi/dsi.c | 6 +- drivers/gpu/drm/msm/dsi/dsi_cfg.c | 162 +++++++----------- drivers/gpu/drm/msm/dsi/dsi_cfg.h | 8 +- drivers/gpu/drm/msm/dsi/dsi_host.c | 16 +- 6 files changed, 79 insertions(+), 119 deletions(-) -- 2.39.1