]> git.baikalelectronics.ru Git - kernel.git/commit
drm/mediatek: mtk_dsi: Avoid EPROBE_DEFER loop with external bridge
authorAngeloGioacchino Del Regno <angelogioacchino.delregno@collabora.com>
Mon, 31 Jan 2022 08:55:20 +0000 (09:55 +0100)
committerChun-Kuang Hu <chunkuang.hu@kernel.org>
Wed, 9 Feb 2022 14:58:34 +0000 (22:58 +0800)
commitee545178527200097e02a3164b1898298a525ee6
treeb6a2ebde66de16201aae51c94005a8d532e42433
parent991a5e519c2aa1f4ed2bf6e2139997d7e7967cb3
drm/mediatek: mtk_dsi: Avoid EPROBE_DEFER loop with external bridge

DRM bridge drivers are now attaching their DSI device at probe time,
which requires us to register our DSI host in order to let the bridge
to probe: this recently started producing an endless -EPROBE_DEFER
loop on some machines that are using external bridges, like the
parade-ps8640, found on the ACER Chromebook R13.

Now that the DSI hosts/devices probe sequence is documented, we can
do adjustments to the mtk_dsi driver as to both fix now and make sure
to avoid this situation in the future: for this, following what is
documented in drm_bridge.c, move the mtk_dsi component_add() to the
mtk_dsi_ops.attach callback and delete it in the detach callback;
keeping in mind that we are registering a drm_bridge for our DSI,
which is only used/attached if the DSI Host is bound, it wouldn't
make sense to keep adding our bridge at probe time (as it would
be useless to have it if mtk_dsi_ops.attach() fails!), so also move
that one to the dsi host attach function (and remove it in detach).

Cc: <stable@vger.kernel.org> # 5.15.x
Signed-off-by: AngeloGioacchino Del Regno <angelogioacchino.delregno@collabora.com>
Reviewed-by: Andrzej Hajda <andrzej.hajda@intel.com>
Reviewed-by: Jagan Teki <jagan@amarulasolutions.com>
Tested-by: NĂ­colas F. R. A. Prado <nfraprado@collabora.com>
Signed-off-by: Chun-Kuang Hu <chunkuang.hu@kernel.org>
drivers/gpu/drm/mediatek/mtk_dsi.c