On Fri, May 30, 2025 at 05:54:32PM +0800, Yongbang Shi wrote: > From: Baihan Li <[email protected]> > > When using command rmmod and insmod, there is no showing in second time > insmoding. Because DP controller won't send HPD signals, if connection > doesn't change or controller isn't reset. So add reset before unreset > in hibmc_dp_hw_init(). > > Fixes: 94ee73ee3020 ("drm/hisilicon/hibmc: add dp hw moduel in hibmc driver")
Technically... yes and no. The function was written this way in that commit, however HPD signals were not handled until the latter commit. > Signed-off-by: Baihan Li <[email protected]> > --- > drivers/gpu/drm/hisilicon/hibmc/dp/dp_hw.c | 6 ++++-- > 1 file changed, 4 insertions(+), 2 deletions(-) > > diff --git a/drivers/gpu/drm/hisilicon/hibmc/dp/dp_hw.c > b/drivers/gpu/drm/hisilicon/hibmc/dp/dp_hw.c > index 4f93d60b932b..e1b9589ce639 100644 > --- a/drivers/gpu/drm/hisilicon/hibmc/dp/dp_hw.c > +++ b/drivers/gpu/drm/hisilicon/hibmc/dp/dp_hw.c > @@ -172,13 +172,15 @@ int hibmc_dp_hw_init(struct hibmc_dp *dp) > dp_dev->link.cap.lanes = 0x2; > dp_dev->link.cap.link_rate = DP_LINK_BW_8_1; > > - /* hdcp data */ > - writel(HIBMC_DP_HDCP, dp_dev->base + HIBMC_DP_HDCP_CFG); > /* int init */ > writel(0, dp_dev->base + HIBMC_DP_INTR_ENABLE); > writel(HIBMC_DP_INT_RST, dp_dev->base + HIBMC_DP_INTR_ORIGINAL_STATUS); > /* rst */ > + writel(0, dp_dev->base + HIBMC_DP_DPTX_RST_CTRL); > + usleep_range(30, 50); > writel(HIBMC_DP_DPTX_RST, dp_dev->base + HIBMC_DP_DPTX_RST_CTRL); > + /* hdcp data */ > + writel(HIBMC_DP_HDCP, dp_dev->base + HIBMC_DP_HDCP_CFG); There are two independent changes here. Split them into two commits. > /* clock enable */ > writel(HIBMC_DP_CLK_EN, dp_dev->base + HIBMC_DP_DPTX_CLK_CTRL); > > -- > 2.33.0 > -- With best wishes Dmitry
