From nobody Tue Oct 7 22:58:35 2025 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 867F929E11D; Sun, 6 Jul 2025 18:28:10 +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=1751826492; cv=none; b=NkLMIwZ4oom+aoH4y4gRFeMI/xtm3s50v1htXM1sjG5M2/8u6tmzIGqLaK6bycZpMTBC+rtBmZwytMd402Com5ridJvgUE6IIinPxFAJHKm0frWoRPpzmKAv90ntkhA7ERc5fXRvnMYhITA1FyER7KRbhmmoV2V3DgKGCqeHBok= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1751826492; c=relaxed/simple; bh=rdvOHTwEYMIGYf2BU402AK0xb5Ny1TbepuIZM7PW2P8=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=TyOotWXVaQiWt7BYoCX0dAp+yoeRAM6oGR20lQmJg+5pqFaG6JR8sHAPJdyidHGaDU1cWE0lp5UP5/ig1dUGdtwVPEi0grQnM9G/+VE1g7bt4FqG3y02Lxw7ay427Jiev1tWJ6kFGNalBcfyZUEz2ijCyUDBxAdZWG/c+1Rbbg8= 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=cOem0uTu; 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="cOem0uTu" Received: from mail01.disroot.lan (localhost [127.0.0.1]) by disroot.org (Postfix) with ESMTP id 48D7125B63; Sun, 6 Jul 2025 20:28:09 +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 ZOZ-bn7qsTrC; Sun, 6 Jul 2025 20:28:08 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=disroot.org; s=mail; t=1751826488; bh=rdvOHTwEYMIGYf2BU402AK0xb5Ny1TbepuIZM7PW2P8=; h=From:Date:Subject:References:In-Reply-To:To:Cc; b=cOem0uTup6Eypof+O/hS+s6uh0iz+oE+q7gLJ2Kmc7FaKDLOcpiAMQYuiU0f3V8fP YB6gdXaq+C6gIR6gMoFtHCkRXJEJetUkuk6CpGEGkP8+dGKR+D71Z14k1dR6PQWVxC ZymCpQP6HIu352uVrhcfzyns201XUjYeoNv0/n06GJLJZChg6W9GPrRWc4aYO/8Tfe ssR4JDaeZJX47MMje77chCg+QiRHUw1rXIgriKN9cqaEEeuuUYyNX1qf5Y2JJo3Wx+ 2dyUjxObZwT7aO9kAQojBlUsA1Otlnog9qLWekLA30wJFr9FfbmldMgcpjZWAsqoRE 6EfwiR5Pocb1g== From: Kaustabh Chakraborty Date: Sun, 06 Jul 2025 23:55:46 +0530 Subject: [PATCH v3 12/13] drm/bridge: samsung-dsim: add driver support for exynos7870 DSIM bridge 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: <20250706-exynos7870-dsim-v3-12-9879fb9a644d@disroot.org> References: <20250706-exynos7870-dsim-v3-0-9879fb9a644d@disroot.org> In-Reply-To: <20250706-exynos7870-dsim-v3-0-9879fb9a644d@disroot.org> To: Inki Dae , Jagan Teki , Marek Szyprowski , Andrzej Hajda , Neil Armstrong , Robert Foss , Laurent Pinchart , Jonas Karlman , Jernej Skrabec , Maarten Lankhorst , Maxime Ripard , Thomas Zimmermann , David Airlie , Simona Vetter , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Seung-Woo Kim , Kyungmin Park , Krzysztof Kozlowski , Alim Akhtar Cc: dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org, devicetree@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-samsung-soc@vger.kernel.org, Kaustabh Chakraborty X-Developer-Signature: v=1; a=ed25519-sha256; t=1751826342; l=4847; i=kauschluss@disroot.org; s=20250202; h=from:subject:message-id; bh=rdvOHTwEYMIGYf2BU402AK0xb5Ny1TbepuIZM7PW2P8=; b=eocA6E3lZ1Ho6yUG9/Hdx1mmN2ceovg/v6WUkS/EpfgCDxtUipMyXURQtBjFWeNSmaI2O4Qkf KScS0VbdFYhBc8FzqbwqKZ/YliTzUNo+L/k4MEx5YvD89+b9UK5Jv0q X-Developer-Key: i=kauschluss@disroot.org; a=ed25519; pk=h2xeR+V2I1+GrfDPAhZa3M+NWA0Cnbdkkq1bH3ct1hE= Add support for Exynos7870's DSIM IP block in the bridge driver. Signed-off-by: Kaustabh Chakraborty --- drivers/gpu/drm/bridge/samsung-dsim.c | 82 +++++++++++++++++++++++++++++++= ++++ include/drm/bridge/samsung-dsim.h | 1 + 2 files changed, 83 insertions(+) diff --git a/drivers/gpu/drm/bridge/samsung-dsim.c b/drivers/gpu/drm/bridge= /samsung-dsim.c index b6b3bbcbd0f438e5e1d3faf18f8c2d532a4ecc93..a51c473545f02a543b88f5b52ee= d6427c7313ec2 100644 --- a/drivers/gpu/drm/bridge/samsung-dsim.c +++ b/drivers/gpu/drm/bridge/samsung-dsim.c @@ -244,6 +244,13 @@ static struct clk_bulk_data exynos5433_clk_bulk_data[]= =3D { { .id =3D "sclk_rgb_vclk_to_dsim0" }, }; =20 +static struct clk_bulk_data exynos7870_clk_bulk_data[] =3D { + { .id =3D "bus" }, + { .id =3D "pll" }, + { .id =3D "byte" }, + { .id =3D "esc" }, +}; + enum reg_idx { DSIM_STATUS_REG, /* Status register (legacy) */ DSIM_LINK_STATUS_REG, /* Link status register */ @@ -320,6 +327,32 @@ static const unsigned int exynos5433_reg_ofs[] =3D { [DSIM_PHYTIMING2_REG] =3D 0xBC, }; =20 +static const unsigned int exynos7870_reg_ofs[] =3D { + [DSIM_LINK_STATUS_REG] =3D 0x04, + [DSIM_DPHY_STATUS_REG] =3D 0x08, + [DSIM_SWRST_REG] =3D 0x0C, + [DSIM_CLKCTRL_REG] =3D 0x10, + [DSIM_TIMEOUT_REG] =3D 0x14, + [DSIM_ESCMODE_REG] =3D 0x1C, + [DSIM_MDRESOL_REG] =3D 0x20, + [DSIM_MVPORCH_REG] =3D 0x24, + [DSIM_MHPORCH_REG] =3D 0x28, + [DSIM_MSYNC_REG] =3D 0x2C, + [DSIM_CONFIG_REG] =3D 0x30, + [DSIM_INTSRC_REG] =3D 0x34, + [DSIM_INTMSK_REG] =3D 0x38, + [DSIM_PKTHDR_REG] =3D 0x3C, + [DSIM_PAYLOAD_REG] =3D 0x40, + [DSIM_RXFIFO_REG] =3D 0x44, + [DSIM_SFRCTRL_REG] =3D 0x48, + [DSIM_FIFOCTRL_REG] =3D 0x4C, + [DSIM_PLLCTRL_REG] =3D 0x94, + [DSIM_PHYCTRL_REG] =3D 0xA4, + [DSIM_PHYTIMING_REG] =3D 0xB4, + [DSIM_PHYTIMING1_REG] =3D 0xB8, + [DSIM_PHYTIMING2_REG] =3D 0xBC, +}; + enum reg_value_idx { RESET_TYPE, PLL_TIMER, @@ -392,6 +425,24 @@ static const unsigned int exynos5433_reg_values[] =3D { [PHYTIMING_HS_TRAIL] =3D DSIM_PHYTIMING2_HS_TRAIL(0x0c), }; =20 +static const unsigned int exynos7870_reg_values[] =3D { + [RESET_TYPE] =3D DSIM_SWRST, + [PLL_TIMER] =3D 80000, + [STOP_STATE_CNT] =3D 0xa, + [PHYCTRL_ULPS_EXIT] =3D DSIM_PHYCTRL_ULPS_EXIT(0x177), + [PHYCTRL_VREG_LP] =3D 0, + [PHYCTRL_SLEW_UP] =3D 0, + [PHYTIMING_LPX] =3D DSIM_PHYTIMING_LPX(0x07), + [PHYTIMING_HS_EXIT] =3D DSIM_PHYTIMING_HS_EXIT(0x0c), + [PHYTIMING_CLK_PREPARE] =3D DSIM_PHYTIMING1_CLK_PREPARE(0x08), + [PHYTIMING_CLK_ZERO] =3D DSIM_PHYTIMING1_CLK_ZERO(0x2b), + [PHYTIMING_CLK_POST] =3D DSIM_PHYTIMING1_CLK_POST(0x0d), + [PHYTIMING_CLK_TRAIL] =3D DSIM_PHYTIMING1_CLK_TRAIL(0x09), + [PHYTIMING_HS_PREPARE] =3D DSIM_PHYTIMING2_HS_PREPARE(0x09), + [PHYTIMING_HS_ZERO] =3D DSIM_PHYTIMING2_HS_ZERO(0x0f), + [PHYTIMING_HS_TRAIL] =3D DSIM_PHYTIMING2_HS_TRAIL(0x0c), +}; + static const unsigned int imx8mm_dsim_reg_values[] =3D { [RESET_TYPE] =3D DSIM_SWRST, [PLL_TIMER] =3D 500, @@ -563,6 +614,36 @@ static const struct samsung_dsim_driver_data exynos542= 2_dsi_driver_data =3D { .min_freq =3D 500, }; =20 +static const struct samsung_dsim_driver_data exynos7870_dsi_driver_data = =3D { + .reg_ofs =3D exynos7870_reg_ofs, + .plltmr_reg =3D 0xa0, + .has_clklane_stop =3D 1, + .has_sfrctrl =3D 1, + .clk_data =3D exynos7870_clk_bulk_data, + .num_clks =3D ARRAY_SIZE(exynos7870_clk_bulk_data), + .max_freq =3D 1500, + .wait_for_hdr_fifo =3D 0, + .wait_for_reset =3D 1, + .num_bits_resol =3D 12, + .video_mode_bit =3D 18, + .pll_stable_bit =3D 24, + .esc_clken_bit =3D 16, + .byte_clken_bit =3D 17, + .tx_req_hsclk_bit =3D 20, + .lane_esc_clk_bit =3D 8, + .lane_esc_data_offset =3D 9, + .pll_p_offset =3D 13, + .pll_m_offset =3D 3, + .pll_s_offset =3D 0, + .main_vsa_offset =3D 16, + .reg_values =3D exynos7870_reg_values, + .pll_fin_min =3D 6, + .pll_fin_max =3D 12, + .m_min =3D 41, + .m_max =3D 125, + .min_freq =3D 500, +}; + static const struct samsung_dsim_driver_data imx8mm_dsi_driver_data =3D { .reg_ofs =3D exynos5433_reg_ofs, .plltmr_reg =3D 0xa0, @@ -604,6 +685,7 @@ samsung_dsim_types[DSIM_TYPE_COUNT] =3D { [DSIM_TYPE_EXYNOS5410] =3D &exynos5_dsi_driver_data, [DSIM_TYPE_EXYNOS5422] =3D &exynos5422_dsi_driver_data, [DSIM_TYPE_EXYNOS5433] =3D &exynos5433_dsi_driver_data, + [DSIM_TYPE_EXYNOS7870] =3D &exynos7870_dsi_driver_data, [DSIM_TYPE_IMX8MM] =3D &imx8mm_dsi_driver_data, [DSIM_TYPE_IMX8MP] =3D &imx8mm_dsi_driver_data, }; diff --git a/include/drm/bridge/samsung-dsim.h b/include/drm/bridge/samsung= -dsim.h index eb9fdbab1b34074923daa0aa0443c33c5b99ae42..31d7ed589233ce560767afa1877= f4cc885bf41f3 100644 --- a/include/drm/bridge/samsung-dsim.h +++ b/include/drm/bridge/samsung-dsim.h @@ -29,6 +29,7 @@ enum samsung_dsim_type { DSIM_TYPE_EXYNOS5410, DSIM_TYPE_EXYNOS5422, DSIM_TYPE_EXYNOS5433, + DSIM_TYPE_EXYNOS7870, DSIM_TYPE_IMX8MM, DSIM_TYPE_IMX8MP, DSIM_TYPE_COUNT, --=20 2.49.0