From nobody Wed Oct 8 16:06:34 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 4DB322FCE12; Thu, 26 Jun 2025 19:41:46 +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=1750966908; cv=none; b=PTNvUw3qCl9xfgAUCd5lNubl5xRtDyMj3i4yeDPkT4OGsBA82uEKJ5oZMOyCkY8bO+M5jXDbkUNshHs585bNnhGV/k28gtoLKNy48vSmgeGHvhpKjoHyTgc2PnnCKxz+sImcN2RxnMi/J4XAnIpIl0VTVoFe4bryZMhYgAimHZA= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1750966908; c=relaxed/simple; bh=Y50MhfAnihg9mLvQ0916AcUb839PID/sF+h4OSEcRb8=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=FC4sVdFxWZeKqBVT8752H3QUzIm2JDBeJBZy3NWbI9wqnatVcJCe4mf/yNLt1EdmWaFNAFgyN2VnB7oDBa+2zevFo16KoPDsh5CeniTVxUtZDBRIVuGF1bfTJVX9y+UkI80SATgA2beV2QxPFjZOZ8KkxYq4Eis1272WjVPOEe0= 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=cEizelDR; 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="cEizelDR" Received: from mail01.disroot.lan (localhost [127.0.0.1]) by disroot.org (Postfix) with ESMTP id D884F25AFA; Thu, 26 Jun 2025 21:41:44 +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 5TbuA-v3Wox1; Thu, 26 Jun 2025 21:41:43 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=disroot.org; s=mail; t=1750966903; bh=Y50MhfAnihg9mLvQ0916AcUb839PID/sF+h4OSEcRb8=; h=From:Date:Subject:References:In-Reply-To:To:Cc; b=cEizelDR7MTzUxyUjv3xtzhNrmkRCZYs3cdjW4r/seOkIyjQX7i7qHGvRqHeKQIrp HwQaBtrJThJzIk+ryGdID218T6wQtbsnh33o5nOOeRxpBE7TNzObT5Kdt0CdaHjzWz 6k3tmiAy1cFha+hj5nGutaOa0HaXu2ok2c+3RA8re5e29QuvwlMAmolg0ua8feI5Js 7vVQ+qOidjNqbvQ0UvuJX37+ALWUEFAjSib+OsP1rUB+JsWq5PoQ5m7VatB7xFgIBV I7c2I5ZF+R11s4bplvWKbirH3j3V7S+tgwbsUE1PYE3/UzUiEi8UIOyCocE8Juv03n FlxZpOi+GR/FA== From: Kaustabh Chakraborty Date: Fri, 27 Jun 2025 01:09:01 +0530 Subject: [PATCH v2 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: <20250627-exynos7870-dsim-v2-12-1433b67378d3@disroot.org> References: <20250627-exynos7870-dsim-v2-0-1433b67378d3@disroot.org> In-Reply-To: <20250627-exynos7870-dsim-v2-0-1433b67378d3@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=1750966738; l=4849; i=kauschluss@disroot.org; s=20250202; h=from:subject:message-id; bh=Y50MhfAnihg9mLvQ0916AcUb839PID/sF+h4OSEcRb8=; b=tWKhnOvaiokLOmF6CDZi+lXfPHv9pJ42Q76MkGiFyV7p3vbw5gcj8Dez5VrGQyZGFfFsOqEvx /eYlxOmnabEBvsddWAFyJ0vqq2lNJwOXI+t+xiVzzy+WuyeNaVsjsK/ 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 6eddaa7e3ee6cb733d005169f5573eeba2a70f0a..d3708643121a5c1a20548b89aa3= 7ffb2952bc484 100644 --- a/drivers/gpu/drm/bridge/samsung-dsim.c +++ b/drivers/gpu/drm/bridge/samsung-dsim.c @@ -243,6 +243,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_LINK_STATUS_REG, /* Link status register */ DSIM_DPHY_STATUS_REG, /* D-PHY 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, @@ -558,6 +609,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, @@ -598,6 +679,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 ed05763b523ceab6956ed875baa9b460a3df5bbd..db4c3d3aef58a7de9f6cf44f212= 2b1b7e00e173d 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