From nobody Fri Jul 24 22:55:04 2026 Received: from layka.disroot.org (layka.disroot.org [178.21.23.139]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 045343955F9; Wed, 22 Jul 2026 18:59:04 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=178.21.23.139 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1784746749; cv=none; b=X/Vecdp98aMnCH8/1N2x/BdQYEXfOUySCe+qlZKMK/o5QhgqB2+fF1wFzUWHoDaDdQ9z8B78ENLnnH9csvAdc2Xj7iFxOUVsZaM56P+3G+i99Cl4COsIat7RgcFW8dEYf35J5h4Kwifv9sifl7rMC6lzp6VksX4libwkPvu8Wk8= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1784746749; c=relaxed/simple; bh=ihnQkjVc0MkRghkG0TlcTG0UBrA70TYzeqmFIL0yZQI=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=kRatUWPz2fiHj7acltJOIMYfJseBjO+7ss5S8R0i0n9LSk2IBEvwz1K04PnbNGlRAMmSKJ39ixg8tTr7wvgakOgbpN3uu7FZhd52ug0u/Cey6bD8Rwb3RiMPWm6nUjbLn+8DGKRAWdK3/43HSAMMa3E+BZSiMj0UvoPQ8Yk4uNc= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=disroot.org; spf=pass smtp.mailfrom=disroot.org; dkim=pass (2048-bit key) header.d=disroot.org header.i=@disroot.org header.b=PCR48nVw; arc=none smtp.client-ip=178.21.23.139 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=disroot.org Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=disroot.org Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=disroot.org header.i=@disroot.org header.b="PCR48nVw" Received: from mail01.layka.lan (localhost [127.0.0.1]) by disroot.org (Postfix) with ESMTP id 8AF6786F12; Wed, 22 Jul 2026 20:59:02 +0200 (CEST) X-Virus-Scanned: SPAM Filter at disroot.org Received: from layka.disroot.org ([127.0.0.1]) by localhost (disroot.org [127.0.0.1]) (amavis, port 10024) with ESMTP id WIdOm1dgfiW6; Wed, 22 Jul 2026 20:59:01 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=disroot.org; s=mail; t=1784746741; bh=ihnQkjVc0MkRghkG0TlcTG0UBrA70TYzeqmFIL0yZQI=; h=From:Date:Subject:References:In-Reply-To:To:Cc; b=PCR48nVwOUG7bx4ZCyJoxWqp3x9NTaFMguxkiQOoknTwRi8m6wR738xqXxxkJs41b sHqfX21DcV5IZAmU8MHPNxrPY/22sY0ksEyhzADRCY/mijYJSnyr9iEYNOAsrWJyrE airY3bK01usL7KXEO4KhczoDxEU9JSDrBjaa0c4d690L9qMS/zH4QfgSI7fW0RFFeB FxVpwxVfyIpbH7h6PWQzOLhUG/rvwBJCZTiprl87SCRHnM6cBxsmZIojdRubRYrZ94 kF49syS0td4AbMWDvcnNwIeWe+RvM7Og3Mw+ZDSECNRjvKFDgfo4PhooOQ5IOGAQg7 VlQxDuKG4dZBQ== From: Kaustabh Chakraborty Date: Thu, 23 Jul 2026 00:28:32 +0530 Subject: [PATCH v3 1/3] drm/bridge: samsung-dsim: enable MFLUSH_VS for Exynos 7870 DSIM Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260723-exynos-dsim-fixes-v3-1-0c31ae1dbecc@disroot.org> References: <20260723-exynos-dsim-fixes-v3-0-0c31ae1dbecc@disroot.org> In-Reply-To: <20260723-exynos-dsim-fixes-v3-0-0c31ae1dbecc@disroot.org> To: Inki Dae , Jagan Teki , Marek Szyprowski , Andrzej Hajda , Neil Armstrong , Robert Foss , Laurent Pinchart , Jonas Karlman , Jernej Skrabec , Luca Ceresoli , Maarten Lankhorst , Maxime Ripard , Thomas Zimmermann , David Airlie , Simona Vetter , Seung-Woo Kim , Kyungmin Park , Krzysztof Kozlowski , Peter Griffin , Alim Akhtar Cc: dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-samsung-soc@vger.kernel.org, Kaustabh Chakraborty , stable@vger.kernel.org Commit a36c533ad3e1 ("drm/bridge: samsung-dsim: Always flush display FIFO on vsync pulse") intends to enable FIFO flushing at v-sync pulse by not setting the active-low MFLUSH_VS bit. However, in Exynos 7870 DSIM, the MFLUSH_VS bit is active-high. There is no publicly available documentation to the best of my knowledge, but downstream kernel code [1] supports this claim. Enable the bit for Exynos 7870. Cc: stable@vger.kernel.org # v6.17 and later Link: https://github.com/samsungexynos7870/android_kernel_samsung_exynos787= 0/blob/a3762bb1761ae/drivers/video/fbdev/exynos/decon_7870/dsim_reg_7870.c#= L699 [1] Tested-by: Marek Szyprowski Signed-off-by: Kaustabh Chakraborty --- drivers/gpu/drm/bridge/samsung-dsim.c | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/drivers/gpu/drm/bridge/samsung-dsim.c b/drivers/gpu/drm/bridge= /samsung-dsim.c index 25ab475309e8..da753ff6eed4 100644 --- a/drivers/gpu/drm/bridge/samsung-dsim.c +++ b/drivers/gpu/drm/bridge/samsung-dsim.c @@ -1089,6 +1089,13 @@ static int samsung_dsim_init_link(struct samsung_dsi= m *dsi) reg |=3D DSIM_HBP_DISABLE_MODE; if (dsi->mode_flags & MIPI_DSI_MODE_VIDEO_NO_HSA) reg |=3D DSIM_HSA_DISABLE_MODE; + + /* + * For some hardware types, DSIM_MFLUSH_VS bit needs to be + * enabled explicitly. + */ + if (dsi->plat_data->hw_type =3D=3D DSIM_TYPE_EXYNOS7870) + reg |=3D DSIM_MFLUSH_VS; } =20 if (dsi->mode_flags & MIPI_DSI_MODE_NO_EOT_PACKET) --=20 2.54.0 From nobody Fri Jul 24 22:55:04 2026 Received: from layka.disroot.org (layka.disroot.org [178.21.23.139]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 5A5B643BDB2; Wed, 22 Jul 2026 18:59:21 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=178.21.23.139 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1784746768; cv=none; b=gEC/a8aTNDdG15yuC9BuyRWdkXv831+KRdhABBbgJBGYJ21+ojpfNnwzX67h3bC9YzMFinZj1oFEUoRoVFBuPl+GSh4D9yY7L8TjXhKElqZp6/Lgy/dXlR1irFh7Btm7sNzg2OfjQ0HcPa7SMtR8Z+74ArTvVegjdWaWpoTMoAY= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1784746768; c=relaxed/simple; bh=j5zx2Zv7OQbPH6wFcqtPgLJYRBg7b6u5ufPgbW3BiNM=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=hL7tYEAD54b1V4g0C/Apt2/zPFIEFK9qtYnRVZIDnWngMBB4i/5g7tBUS5IZcegDk4vAunS3Vbo19gK3MUAi2S1dR+HAjUYzjSZTkNLSzknG2wjCamNM2/OlXrdX7GzgvBmJaGjX6M2BTumldeu0h/r5AT+opT8xUjbRwMzHdL0= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=disroot.org; spf=pass smtp.mailfrom=disroot.org; dkim=pass (2048-bit key) header.d=disroot.org header.i=@disroot.org header.b=ByRGd02Q; arc=none smtp.client-ip=178.21.23.139 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=disroot.org Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=disroot.org Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=disroot.org header.i=@disroot.org header.b="ByRGd02Q" Received: from mail01.layka.lan (localhost [127.0.0.1]) by disroot.org (Postfix) with ESMTP id 0364B847B9; Wed, 22 Jul 2026 20:59:18 +0200 (CEST) X-Virus-Scanned: SPAM Filter at disroot.org Received: from layka.disroot.org ([127.0.0.1]) by localhost (disroot.org [127.0.0.1]) (amavis, port 10024) with ESMTP id CXGRsNS74ewV; Wed, 22 Jul 2026 20:59:17 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=disroot.org; s=mail; t=1784746757; bh=j5zx2Zv7OQbPH6wFcqtPgLJYRBg7b6u5ufPgbW3BiNM=; h=From:Date:Subject:References:In-Reply-To:To:Cc; b=ByRGd02QMj5JJG0g2WL11iS27CdMBQBwkowhIETNf2mxN2zcBQHSumnAXy5gp/z1W r4rl6CFP4m/qtNXU3FXV4+LzzEQH+TX4khAcNkAHLBNAtTmsIOb8GXXCd8OPivH8sQ uqoc7YpkHT/v4SKuo1KGKRRUkp4SKYAbfVIq//gMQ7i3WoxfblKgkpU1xRkbU/ARCT tpT/TH7HRgUTc6zxkDuSxC7RKyWKyfeWlw+drMghHRO9AToeBm67/QHuqMhes2mwhC hOkhUohMN1qjGhpIBtiZMw8LJxnCqEIe+xJkfaDSUf1vUR29g3tyjLDoBwjPI68cob R33zj2JnS0cyw== From: Kaustabh Chakraborty Date: Thu, 23 Jul 2026 00:28:33 +0530 Subject: [PATCH v3 2/3] drm/bridge: samsung-dsim: use DSIM interrupt to wait for PLL stability Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260723-exynos-dsim-fixes-v3-2-0c31ae1dbecc@disroot.org> References: <20260723-exynos-dsim-fixes-v3-0-0c31ae1dbecc@disroot.org> In-Reply-To: <20260723-exynos-dsim-fixes-v3-0-0c31ae1dbecc@disroot.org> To: Inki Dae , Jagan Teki , Marek Szyprowski , Andrzej Hajda , Neil Armstrong , Robert Foss , Laurent Pinchart , Jonas Karlman , Jernej Skrabec , Luca Ceresoli , Maarten Lankhorst , Maxime Ripard , Thomas Zimmermann , David Airlie , Simona Vetter , Seung-Woo Kim , Kyungmin Park , Krzysztof Kozlowski , Peter Griffin , Alim Akhtar Cc: dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-samsung-soc@vger.kernel.org, Kaustabh Chakraborty Stabilizing PLL needs to be waited for. This is done using a loop, checking the PLL_STABLE bit in the status register. DSIM fires an interrupt when the PLL is stabilized. Rely on this functionality for stabilization wait, getting rid of the implicit loop. This has been tested on a Galaxy J6 (Exynos 7870). Unfortunately, since testing on all supported devices is less feasible, introduce a stop-gap measure where the timeout has a gracious lower bound of 100 microseconds. This will (hopefully) prevent regressions due to timeout on other devices. Suggested-by: Inki Dae Link: https://lore.kernel.org/r/CAAQKjZMLMbwDVZRb5+Xb_5yz3AEP4uuzFJMuuZy9NF= Du13VU5w@mail.gmail.com Tested-by: Marek Szyprowski Signed-off-by: Kaustabh Chakraborty --- drivers/gpu/drm/bridge/samsung-dsim.c | 41 +++++++++++++++++++++++--------= ---- include/drm/bridge/samsung-dsim.h | 1 + 2 files changed, 28 insertions(+), 14 deletions(-) diff --git a/drivers/gpu/drm/bridge/samsung-dsim.c b/drivers/gpu/drm/bridge= /samsung-dsim.c index da753ff6eed4..866cff205e71 100644 --- a/drivers/gpu/drm/bridge/samsung-dsim.c +++ b/drivers/gpu/drm/bridge/samsung-dsim.c @@ -17,6 +17,7 @@ #include #include #include +#include #include #include #include @@ -788,7 +789,7 @@ static unsigned long samsung_dsim_set_pll(struct samsun= g_dsim *dsi, { const struct samsung_dsim_driver_data *driver_data =3D dsi->driver_data; unsigned long fin, fout; - int timeout; + unsigned int timeout; u8 p, s; u16 m; u32 reg; @@ -849,19 +850,26 @@ static unsigned long samsung_dsim_set_pll(struct sams= ung_dsim *dsi, if (dsi->swap_dn_dp_data) reg |=3D DSIM_PLL_DPDNSWAP_DAT; =20 + /* + * The PLL_TIMER value is the product of the timeout delay and the APB + * bus clock rate. Calcutate the timeout delay on-the-fly here. + * It is assumed that the bus clock is the first clock in the provided + * bulk clock data. + */ + timeout =3D 100; + fin =3D clk_get_rate(dsi->driver_data->clk_data[0].clk) / HZ_PER_MHZ; + if (fin) + timeout =3D max(dsi->driver_data->reg_values[PLL_TIMER] / fin, + timeout); + + reinit_completion(&dsi->pll_stabilized); samsung_dsim_write(dsi, DSIM_PLLCTRL_REG, reg); =20 - timeout =3D 3000; - do { - if (timeout-- =3D=3D 0) { - dev_err(dsi->dev, "PLL failed to stabilize\n"); - return 0; - } - if (driver_data->has_legacy_status_reg) - reg =3D samsung_dsim_read(dsi, DSIM_STATUS_REG); - else - reg =3D samsung_dsim_read(dsi, DSIM_LINK_STATUS_REG); - } while ((reg & BIT(driver_data->pll_stable_bit)) =3D=3D 0); + if (wait_for_completion_timeout(&dsi->pll_stabilized, + usecs_to_jiffies(timeout))) { + dev_err(dsi->dev, "PLL failed to stabilize\n"); + return 0; + } =20 dsi->hs_clock =3D fout; =20 @@ -1596,8 +1604,12 @@ static irqreturn_t samsung_dsim_irq(int irq, void *d= ev_id) return IRQ_HANDLED; } =20 - if (!(status & (DSIM_INT_RX_DONE | DSIM_INT_SFR_FIFO_EMPTY | - DSIM_INT_PLL_STABLE))) + if (status & DSIM_INT_PLL_STABLE) { + complete(&dsi->pll_stabilized); + return IRQ_HANDLED; + } + + if (!(status & (DSIM_INT_RX_DONE | DSIM_INT_SFR_FIFO_EMPTY))) return IRQ_HANDLED; =20 if (samsung_dsim_transfer_finish(dsi)) @@ -2148,6 +2160,7 @@ int samsung_dsim_probe(struct platform_device *pdev) return PTR_ERR(dsi); =20 init_completion(&dsi->completed); + init_completion(&dsi->pll_stabilized); spin_lock_init(&dsi->transfer_lock); INIT_LIST_HEAD(&dsi->transfer_list); =20 diff --git a/include/drm/bridge/samsung-dsim.h b/include/drm/bridge/samsung= -dsim.h index 03005e474704..e3433da21ad0 100644 --- a/include/drm/bridge/samsung-dsim.h +++ b/include/drm/bridge/samsung-dsim.h @@ -123,6 +123,7 @@ struct samsung_dsim { int state; struct drm_property *brightness; struct completion completed; + struct completion pll_stabilized; =20 spinlock_t transfer_lock; /* protects transfer_list */ struct list_head transfer_list; --=20 2.54.0 From nobody Fri Jul 24 22:55:04 2026 Received: from layka.disroot.org (layka.disroot.org [178.21.23.139]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 7E71E45D5D9; Wed, 22 Jul 2026 18:59:33 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=178.21.23.139 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1784746775; cv=none; b=pRY2jRlfMeLCaBMI+2p0SzR88zJgV7BFcSGXW46Dg/GA2O1xgOkXiNeGLTQpL7jMUrUlDCtVmtWFed/JC8xGhmJlYpMVywxWplT+w06e4imeeHu16FYY31MZmsJeGpfsMagpONZ/1LhUIq1iNSXP5vYYZ0vucl4Abu5bMApFBkw= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1784746775; c=relaxed/simple; bh=1YohDgTSOkkTpl+65u26bbQhosd/+AGS22C8onQsxPU=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=TmL57DiesB/ybyk34DzOd3P2n1wrJ9d8IRNca1JobVA6g86NEQVXGZMg1aQrgMFu0id9pdQHyEWhF1OsJH+B0OPpP7rGlbL9noH1w2/AT++WGBYTBP5HO6o3OS/BJMGG+/wxb9k7Q9hFpyYs4CR8RBrWaS/+lDOBjge62pFjKMM= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=disroot.org; spf=pass smtp.mailfrom=disroot.org; dkim=pass (2048-bit key) header.d=disroot.org header.i=@disroot.org header.b=akPUmchE; arc=none smtp.client-ip=178.21.23.139 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=disroot.org Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=disroot.org Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=disroot.org header.i=@disroot.org header.b="akPUmchE" Received: from mail01.layka.lan (localhost [127.0.0.1]) by disroot.org (Postfix) with ESMTP id 509AE83F7A; Wed, 22 Jul 2026 20:59:31 +0200 (CEST) X-Virus-Scanned: SPAM Filter at disroot.org Received: from layka.disroot.org ([127.0.0.1]) by localhost (disroot.org [127.0.0.1]) (amavis, port 10024) with ESMTP id MN0pYQ004ibo; Wed, 22 Jul 2026 20:59:30 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=disroot.org; s=mail; t=1784746770; bh=1YohDgTSOkkTpl+65u26bbQhosd/+AGS22C8onQsxPU=; h=From:Date:Subject:References:In-Reply-To:To:Cc; b=akPUmchE2iIdGt7B3MdYhifPqGY3yW16Vqxr/8pilsgaFQC4fTNhWFS2WNtzYnwQO CrKrhyDmPgHR2Wnq7BJoF0oB47EFPr/3kRjveb0eFz4hx3EEUC/fGY8naLSXGiXrXt V247SGp06E8Qa4wBijyAF5OCi8qlhlfpWe9OIYgDNvweWwtc7GnbaNbNWMP3HVhRED bQtCugGy+SV5KUplFHQpd4UZPGweK3mYr3hO6HX+V4WYKVicApyC5IO6F1ZMwZrl3I RPEXA4lZgUiFb3/1KZffFLY9ML8IrR1APABc7sJBUpqg7oGHdyEI8Ufir7eZGED6ev mpdKxJWpJO5Sw== From: Kaustabh Chakraborty Date: Thu, 23 Jul 2026 00:28:34 +0530 Subject: [PATCH v3 3/3] drm/exynos: remove simplefb nodes before init Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260723-exynos-dsim-fixes-v3-3-0c31ae1dbecc@disroot.org> References: <20260723-exynos-dsim-fixes-v3-0-0c31ae1dbecc@disroot.org> In-Reply-To: <20260723-exynos-dsim-fixes-v3-0-0c31ae1dbecc@disroot.org> To: Inki Dae , Jagan Teki , Marek Szyprowski , Andrzej Hajda , Neil Armstrong , Robert Foss , Laurent Pinchart , Jonas Karlman , Jernej Skrabec , Luca Ceresoli , Maarten Lankhorst , Maxime Ripard , Thomas Zimmermann , David Airlie , Simona Vetter , Seung-Woo Kim , Kyungmin Park , Krzysztof Kozlowski , Peter Griffin , Alim Akhtar Cc: dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-samsung-soc@vger.kernel.org, Kaustabh Chakraborty The simple-framebuffer uses the framebuffer region initialized by the boot loader for display. However, with Linux the DSI and FIMD/DECON stack is initialized from scratch. However, both are destined use the same memory region, so both cannot co-exist. For a seamless display transition during boot, the framebuffer must be destroyed, which releases the memory region, followed by proper IP re-initialization. Achieve it using aperture_remove_all_conflicting_devices(). This is also implemented in other similar systems such as in Qualcomm's msm_kms driver. Signed-off-by: Kaustabh Chakraborty --- drivers/gpu/drm/exynos/exynos_drm_drv.c | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/drivers/gpu/drm/exynos/exynos_drm_drv.c b/drivers/gpu/drm/exyn= os/exynos_drm_drv.c index 9ee30086879f..7657f86a9d19 100644 --- a/drivers/gpu/drm/exynos/exynos_drm_drv.c +++ b/drivers/gpu/drm/exynos/exynos_drm_drv.c @@ -7,6 +7,7 @@ * Seung-Woo Kim */ =20 +#include #include #include #include @@ -273,6 +274,11 @@ static int exynos_drm_bind(struct device *dev) if (ret) goto err_mode_config_cleanup; =20 + /* Remove existing devices which own the framebuffer memory. */ + ret =3D aperture_remove_all_conflicting_devices(exynos_drm_driver.name); + if (ret) + goto err_unbind_all; + ret =3D drm_vblank_init(drm, drm->mode_config.num_crtc); if (ret) goto err_unbind_all; --=20 2.54.0