From 404f22df36d3959e0e4086ee99837d2c479bbda2 Mon Sep 17 00:00:00 2001 From: Tang Yun ping Date: Thu, 24 Aug 2017 11:39:34 +0800 Subject: [PATCH] PM / devfreq: clk-ddr: using drm_modeset mutex when get lcdc type Because ddr freq scanning may get clk mutex than get drm general mutex to get lcdc_type. But when drm status change, drm may get drm general mutex first and than get clk mutex. This may cause deadlock. So when get lcdc type we change to use drm_modeset mutex to avoid deadlock. Change-Id: Ibaa1c07b14df7e1a861162efd9f7e086b8a55042 Signed-off-by: Tang Yun ping --- drivers/clk/rockchip/clk-ddr.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/drivers/clk/rockchip/clk-ddr.c b/drivers/clk/rockchip/clk-ddr.c index 09b4b3638f11..d1d71c05a119 100644 --- a/drivers/clk/rockchip/clk-ddr.c +++ b/drivers/clk/rockchip/clk-ddr.c @@ -14,6 +14,7 @@ */ #include +#include #include #include #include @@ -52,14 +53,14 @@ static int rk_drm_get_lcdc_type(void) if (drm) { struct drm_connector *conn; - mutex_lock(&drm->mode_config.mutex); + drm_modeset_lock(&drm->mode_config.connection_mutex, NULL); drm_for_each_connector(conn, drm) { if (conn->encoder) { lcdc_type = conn->connector_type; break; } } - mutex_unlock(&drm->mode_config.mutex); + drm_modeset_unlock(&drm->mode_config.connection_mutex); } switch (lcdc_type) {