From patchwork Sun Mar 30 21:06:57 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: "Lad, Prabhakar" X-Patchwork-Id: 14033030 X-Patchwork-Delegate: geert@linux-m68k.org Received: from mail-wr1-f41.google.com (mail-wr1-f41.google.com [209.85.221.41]) (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 CBBD41DB365; Sun, 30 Mar 2025 21:08:01 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.221.41 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1743368884; cv=none; b=Qj3fZQWkoDQvVDDbNtf3DhXYUhKDAISXAKO8Yvw74jD/UMdjHsBPrLlglsGPQghbJutGf/NPdPmwPwCNMKA+dxHT3LUFj91I6XXuwXSY/IVHO95zCsk6oKa1hDm3fviP30pC66PSRZ+RKc22ZrvIOxUUPIh0J9nunvdC+lIoeOk= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1743368884; c=relaxed/simple; bh=ovJu0ZWpgXhLFL9Ve6qjjeY8XHPpfeu8LY6S9mR96Fc=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version:Content-Type; b=JdeFwmjfK2Mh8CZOLYM/o73f0DIsiUaPIwYCJTuNocEns/ODjmTEmouXdOP3HMJrlMJWwah6N6HZGi2mtQRhmuCcATGXV//m3UevBeZxqyxhcYAWllgORkSx2mvsadBv8X8TKqusgsip4zrEBt+3rSRdod4096mqTcuEps5qj1o= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=Sg5vn9ij; arc=none smtp.client-ip=209.85.221.41 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="Sg5vn9ij" Received: by mail-wr1-f41.google.com with SMTP id ffacd0b85a97d-3913d129c1aso2795833f8f.0; Sun, 30 Mar 2025 14:08:01 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1743368880; x=1743973680; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=e6dV2a6Mtb9/3hXvPAFC1vb7Hze5gK/0MVzM3hUEBOo=; b=Sg5vn9ijFuWqFsHFQwKn/HjqL5tInx51leiuDdTidXpiOwyR0JnI8jgbEHBdCpmmB4 p0HotUL/NlMw7KtzkyvtIVL/tqkZxuq8DnBld+N7ZWIFr8YZYLNV8lCwhEm3Rl9ifxuT x09JeIAehDlPCFrjYKepR+ld54rUeWLtGDR0KGzdpmjvhBnY0XH7c/S8gHVtNT82bkXi ibWP0I4dDpBLRVwFN1ydINl/Q7AmyCluI371zk8sn8I0/oommPV3WqN3nlq4Vel9DvoM DvGefK9T6rof9M5SLGicR3WMFrxmG/iwjEzQKcJ2SxAlALQnqqCgWJ2tOe0zz5Xqe0mZ tHGA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1743368880; x=1743973680; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=e6dV2a6Mtb9/3hXvPAFC1vb7Hze5gK/0MVzM3hUEBOo=; b=dCkpqW0yBbQa0FFBlJhks0tgc947zEfCA0TzTmRYC+FypFtT8X2yXOyNMjPpitrBcj Tuliv9X/Mxzu8/GZ1o2Q7kmi7SpvTUT8hx9fCMCKgKU8/iMRv/usho0TLPbPYQAZdFJd zDBI7+84ogz/jk1hFsXTmoxh8vfrr+IozauQ9kp4dUfoSZeJwjznLLEM1UElKYWNUv7H MBC9We8abDeah6BBKbVwaY2WXfKjhpCDf/X+snzrtnithCJrzadE2oWv/1+CaODR75nJ Da3OMPiTe25bnX+Dv4tZk1TlUXqKDryxotUzP4iGyQjbx9AUyV1/sB9z405CsuP4spbd /BfQ== X-Forwarded-Encrypted: i=1; AJvYcCVcKujGoVSwwbAtbG++foMAMFEuF/gY5wm44PEn19O7XbDhc71Wdr5g0wmAF1VeDMBI8ccSYasGN9Ebp8Y=@vger.kernel.org, AJvYcCVtscva23Q2j56M577Xrm79jfxGf0l90vQvDk+jvMssPH+6cu92/7ecxvARip+247aLUkqG8tgu13U0Os97WroP72I=@vger.kernel.org, AJvYcCWeqckGe1bEbvakMENhK4yaMBsqRbLPWtchE5ed60ayp3NWzpc75yCWGkUEgXRYpIVzTeA6EfY1zEw=@vger.kernel.org, AJvYcCXtKD5fTUK0MZgKYTNerpDIWZuOmGGnUUqRmZAvf9CKYHCwVb1BbRkKyQ1hvxAKtIQseyT/jeoO9aEcYcMa@vger.kernel.org X-Gm-Message-State: AOJu0YzvpwQ4NpFoTMQThu2U8URfO0KOjv+KlyX6GnMp7JVE7rU5YStV t7BkV3feI3DzzX23Gt8fc9cLN3/SgovE5lH/9tXIhwpNSgCSsDz7 X-Gm-Gg: ASbGncvVI0zomEgdg+jeqRa6Xt/5g/5NBAcczDOLD2jY779Je8q3PROteEBZb90Z8Kn QJRO6mzcRJp2dYziKRTboa2wOcBhPml8kEFOig686huCIV9Wwvi+9Nn7xrlAj+JO+deLDSWrS8Y 7BpLUoVhulpD+A7WU6QxS7Ai90qL9poso2FGZWoy3WKwf1NjnNBDT3Q+1jVdD567ghwlDDzqktm hEpLov8nkRi7HzV4wRUzThRVbebYbcPYwAiwoyd5ARiS3vhWoCfdEn0bwTQCWQQuNyo1SRSQVq5 gmHZn3V3Dh703fqzprVLFDxVwWqdBEdaqW8UYvt/cbjvx524swOSYShdnlmSQMg527AAAQ== X-Google-Smtp-Source: AGHT+IFh4HbsoN1jZ7GMG2p5OfSBGv1qVgVUIk7DY7BfYHrshBVX0+pWptujjew78A7eQRJZxqzQZg== X-Received: by 2002:a05:6000:2405:b0:39c:140c:308 with SMTP id ffacd0b85a97d-39c140c036cmr4039499f8f.3.1743368879866; Sun, 30 Mar 2025 14:07:59 -0700 (PDT) Received: from iku.Home ([2a06:5906:61b:2d00:8249:9390:e853:c628]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-43d91429c36sm69778175e9.0.2025.03.30.14.07.58 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 30 Mar 2025 14:07:59 -0700 (PDT) From: Prabhakar X-Google-Original-From: Prabhakar To: Geert Uytterhoeven , Andrzej Hajda , Neil Armstrong , Robert Foss , Laurent Pinchart , Jonas Karlman , Jernej Skrabec , David Airlie , Simona Vetter , Maarten Lankhorst , Maxime Ripard , Thomas Zimmermann , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Biju Das , Mauro Carvalho Chehab , Kieran Bingham , Stephen Boyd , Philipp Zabel Cc: devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, linux-renesas-soc@vger.kernel.org, linux-media@vger.kernel.org, linux-clk@vger.kernel.org, Prabhakar , Fabrizio Castro , Lad Prabhakar Subject: [PATCH 01/17] clk: renesas: rzv2h-cpg: Add support for DSI clocks Date: Sun, 30 Mar 2025 22:06:57 +0100 Message-ID: <20250330210717.46080-2-prabhakar.mahadev-lad.rj@bp.renesas.com> X-Mailer: git-send-email 2.49.0 In-Reply-To: <20250330210717.46080-1-prabhakar.mahadev-lad.rj@bp.renesas.com> References: <20250330210717.46080-1-prabhakar.mahadev-lad.rj@bp.renesas.com> Precedence: bulk X-Mailing-List: linux-renesas-soc@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 From: Lad Prabhakar Add support for PLLDSI and PLLDSI divider clocks. The `renesas-rzv2h-dsi.h` header file is added to share the PLL divider algorithm between the CPG and DSI drivers. Co-developed-by: Fabrizio Castro Signed-off-by: Fabrizio Castro Signed-off-by: Lad Prabhakar --- drivers/clk/renesas/rzv2h-cpg.c | 284 ++++++++++++++++++++++++++ drivers/clk/renesas/rzv2h-cpg.h | 14 ++ include/linux/clk/renesas-rzv2h-dsi.h | 207 +++++++++++++++++++ 3 files changed, 505 insertions(+) create mode 100644 include/linux/clk/renesas-rzv2h-dsi.h diff --git a/drivers/clk/renesas/rzv2h-cpg.c b/drivers/clk/renesas/rzv2h-cpg.c index e6a3c673879f..6ac21c379267 100644 --- a/drivers/clk/renesas/rzv2h-cpg.c +++ b/drivers/clk/renesas/rzv2h-cpg.c @@ -14,9 +14,13 @@ #include #include #include +#include #include #include #include +#include +#include +#include #include #include #include @@ -26,6 +30,7 @@ #include #include #include +#include #include @@ -48,6 +53,7 @@ #define CPG_PLL_STBY(x) ((x)) #define CPG_PLL_STBY_RESETB BIT(0) #define CPG_PLL_STBY_RESETB_WEN BIT(16) +#define CPG_PLL_STBY_SSCGEN_WEN BIT(18) #define CPG_PLL_CLK1(x) ((x) + 0x004) #define CPG_PLL_CLK1_KDIV(x) ((s16)FIELD_GET(GENMASK(31, 16), (x))) #define CPG_PLL_CLK1_MDIV(x) FIELD_GET(GENMASK(15, 6), (x)) @@ -79,6 +85,8 @@ * @last_dt_core_clk: ID of the last Core Clock exported to DT * @mstop_count: Array of mstop values * @rcdev: Reset controller entity + * @dsi_limits: PLL DSI parameters limits + * @plldsi_div_parameters: PLL DSI and divider parameters configuration */ struct rzv2h_cpg_priv { struct device *dev; @@ -95,6 +103,9 @@ struct rzv2h_cpg_priv { atomic_t *mstop_count; struct reset_controller_dev rcdev; + + const struct rzv2h_plldsi_div_limits *dsi_limits; + struct rzv2h_plldsi_parameters plldsi_div_parameters; }; #define rcdev_to_priv(x) container_of(x, struct rzv2h_cpg_priv, rcdev) @@ -148,6 +159,24 @@ struct ddiv_clk { #define to_ddiv_clock(_div) container_of(_div, struct ddiv_clk, div) +/** + * struct rzv2h_plldsi_div_clk - PLL DSI DDIV clock + * + * @dtable: divider table + * @priv: CPG private data + * @hw: divider clk + * @ddiv: divider configuration + */ +struct rzv2h_plldsi_div_clk { + const struct clk_div_table *dtable; + struct rzv2h_cpg_priv *priv; + struct clk_hw hw; + struct ddiv ddiv; +}; + +#define to_plldsi_div_clk(_hw) \ + container_of(_hw, struct rzv2h_plldsi_div_clk, hw) + static int rzv2h_cpg_pll_clk_is_enabled(struct clk_hw *hw) { struct pll_clk *pll_clk = to_pll(hw); @@ -196,6 +225,253 @@ static int rzv2h_cpg_pll_clk_enable(struct clk_hw *hw) return ret; } +static unsigned long rzv2h_cpg_plldsi_div_recalc_rate(struct clk_hw *hw, + unsigned long parent_rate) +{ + struct rzv2h_plldsi_div_clk *dsi_div = to_plldsi_div_clk(hw); + struct rzv2h_cpg_priv *priv = dsi_div->priv; + struct ddiv ddiv = dsi_div->ddiv; + u32 div; + + div = readl(priv->base + ddiv.offset); + div >>= ddiv.shift; + div &= ((2 << ddiv.width) - 1); + + div = dsi_div->dtable[div].div; + + return DIV_ROUND_CLOSEST_ULL(parent_rate, div); +} + +static int rzv2h_cpg_plldsi_div_determine_rate(struct clk_hw *hw, + struct clk_rate_request *req) +{ + struct rzv2h_plldsi_div_clk *dsi_div = to_plldsi_div_clk(hw); + struct rzv2h_cpg_priv *priv = dsi_div->priv; + struct rzv2h_plldsi_parameters *dsi_dividers = &priv->plldsi_div_parameters; + unsigned long long rate_mhz; + + /* + * Adjust the requested clock rate (`req->rate`) to ensure it falls within + * the supported range of 5.44 MHz to 187.5 MHz. + */ + req->rate = clamp(req->rate, 5440000UL, 187500000UL); + + rate_mhz = req->rate * MILLI * 1ULL; + if (rate_mhz == dsi_dividers->error_mhz + dsi_dividers->freq_mhz) + goto exit_determine_rate; + + if (!rzv2h_dsi_get_pll_parameters_values(priv->dsi_limits, + dsi_dividers, rate_mhz)) { + dev_err(priv->dev, + "failed to determine rate for req->rate: %lu\n", + req->rate); + return -EINVAL; + } + +exit_determine_rate: + req->best_parent_rate = req->rate * dsi_dividers->csdiv; + + return 0; +}; + +static int rzv2h_cpg_plldsi_div_set_rate(struct clk_hw *hw, + unsigned long rate, + unsigned long parent_rate) +{ + struct rzv2h_plldsi_div_clk *dsi_div = to_plldsi_div_clk(hw); + struct rzv2h_cpg_priv *priv = dsi_div->priv; + struct rzv2h_plldsi_parameters *dsi_dividers = &priv->plldsi_div_parameters; + struct ddiv ddiv = dsi_div->ddiv; + const struct clk_div_table *clkt; + u32 reg, shift, div; + + div = dsi_dividers->csdiv; + for (clkt = dsi_div->dtable; clkt->div; clkt++) { + if (clkt->div == div) + break; + } + + if (!clkt->div && !clkt->val) + return -EINVAL; + + shift = ddiv.shift; + reg = readl(priv->base + ddiv.offset); + reg &= ~(GENMASK(shift + ddiv.width, shift)); + + writel(reg | (clkt->val << shift) | + DDIV_DIVCTL_WEN(shift), priv->base + ddiv.offset); + + return 0; +}; + +static const struct clk_ops rzv2h_cpg_plldsi_div_ops = { + .recalc_rate = rzv2h_cpg_plldsi_div_recalc_rate, + .determine_rate = rzv2h_cpg_plldsi_div_determine_rate, + .set_rate = rzv2h_cpg_plldsi_div_set_rate, +}; + +static struct clk * __init +rzv2h_cpg_plldsi_div_clk_register(const struct cpg_core_clk *core, + struct rzv2h_cpg_priv *priv) +{ + struct rzv2h_plldsi_div_clk *clk_hw_data; + struct clk **clks = priv->clks; + struct clk_init_data init; + const struct clk *parent; + const char *parent_name; + struct clk_hw *clk_hw; + int ret; + + parent = clks[core->parent]; + if (IS_ERR(parent)) + return ERR_CAST(parent); + + clk_hw_data = devm_kzalloc(priv->dev, sizeof(*clk_hw_data), GFP_KERNEL); + if (!clk_hw_data) + return ERR_PTR(-ENOMEM); + + clk_hw_data->priv = priv; + clk_hw_data->ddiv = core->cfg.ddiv; + clk_hw_data->dtable = core->dtable; + + parent_name = __clk_get_name(parent); + init.name = core->name; + init.ops = &rzv2h_cpg_plldsi_div_ops; + init.flags = core->flag; + init.parent_names = &parent_name; + init.num_parents = 1; + + clk_hw = &clk_hw_data->hw; + clk_hw->init = &init; + + ret = devm_clk_hw_register(priv->dev, clk_hw); + if (ret) + return ERR_PTR(ret); + + return clk_hw->clk; +} + +static long rzv2h_cpg_plldsi_round_rate(struct clk_hw *hw, + unsigned long rate, + unsigned long *parent_rate) +{ + return clamp(rate, 25000000UL, 375000000UL); +} + +static unsigned long rzv2h_cpg_plldsi_clk_recalc_rate(struct clk_hw *hw, + unsigned long parent_rate) +{ + struct pll_clk *pll_clk = to_pll(hw); + struct rzv2h_cpg_priv *priv = pll_clk->priv; + unsigned int val1, val2; + u64 rate; + + val1 = readl(priv->base + CPG_PLL_CLK1(pll_clk->pll.offset)); + val2 = readl(priv->base + CPG_PLL_CLK2(pll_clk->pll.offset)); + + rate = mul_u64_u32_shr(parent_rate, (CPG_PLL_CLK1_MDIV(val1) << 16) + + CPG_PLL_CLK1_KDIV(val1), 16 + CPG_PLL_CLK2_SDIV(val2)); + + return DIV_ROUND_CLOSEST_ULL(rate, CPG_PLL_CLK1_PDIV(val1)); +} + +static int rzv2h_cpg_plldsi_set_rate(struct clk_hw *hw, + unsigned long rate, + unsigned long parent_rate) +{ + struct pll_clk *pll_clk = to_pll(hw); + struct rzv2h_cpg_priv *priv = pll_clk->priv; + struct rzv2h_plldsi_parameters *dsi_dividers; + struct pll pll = pll_clk->pll; + u16 offset = pll.offset; + u32 val; + int ret; + + /* Put PLL into standby mode */ + writel(CPG_PLL_STBY_RESETB_WEN, priv->base + CPG_PLL_STBY(offset)); + ret = readl_poll_timeout_atomic(priv->base + CPG_PLL_MON(offset), + val, !(val & CPG_PLL_MON_LOCK), + 100, 2000); + if (ret) { + dev_err(priv->dev, "Failed to put PLLDSI into standby mode"); + return ret; + } + + dsi_dividers = &priv->plldsi_div_parameters; + /* Output clock setting 1 */ + writel((dsi_dividers->k << 16) | (dsi_dividers->m << 6) | (dsi_dividers->p), + priv->base + CPG_PLL_CLK1(offset)); + + /* Output clock setting 2 */ + val = readl(priv->base + CPG_PLL_CLK2(offset)); + writel((val & ~GENMASK(2, 0)) | dsi_dividers->s, + priv->base + CPG_PLL_CLK2(offset)); + + /* Put PLL to normal mode */ + writel(CPG_PLL_STBY_RESETB_WEN | CPG_PLL_STBY_RESETB, + priv->base + CPG_PLL_STBY(offset)); + + /* PLL normal mode transition, output clock stability check */ + ret = readl_poll_timeout_atomic(priv->base + CPG_PLL_MON(offset), + val, (val & CPG_PLL_MON_LOCK), + 100, 2000); + if (ret) { + dev_err(priv->dev, "Failed to put PLLDSI into normal mode"); + return ret; + } + + return 0; +}; + +static const struct clk_ops rzv2h_cpg_plldsi_ops = { + .recalc_rate = rzv2h_cpg_plldsi_clk_recalc_rate, + .round_rate = rzv2h_cpg_plldsi_round_rate, + .set_rate = rzv2h_cpg_plldsi_set_rate, +}; + +static struct clk * __init +rzv2h_cpg_plldsi_clk_register(const struct cpg_core_clk *core, + struct rzv2h_cpg_priv *priv) +{ + void __iomem *base = priv->base; + struct device *dev = priv->dev; + struct clk_init_data init; + const struct clk *parent; + const char *parent_name; + struct pll_clk *pll_clk; + int ret; + + parent = priv->clks[core->parent]; + if (IS_ERR(parent)) + return ERR_CAST(parent); + + pll_clk = devm_kzalloc(dev, sizeof(*pll_clk), GFP_KERNEL); + if (!pll_clk) + return ERR_PTR(-ENOMEM); + + parent_name = __clk_get_name(parent); + init.name = core->name; + init.ops = &rzv2h_cpg_plldsi_ops; + init.flags = 0; + init.parent_names = &parent_name; + init.num_parents = 1; + + pll_clk->hw.init = &init; + pll_clk->pll = core->cfg.pll; + pll_clk->base = base; + pll_clk->priv = priv; + + /* Disable SSC and turn on PLL clock when init */ + writel(CPG_PLL_STBY_RESETB_WEN | CPG_PLL_STBY_RESETB | + CPG_PLL_STBY_SSCGEN_WEN, base + CPG_PLL_STBY(pll_clk->pll.offset)); + + ret = devm_clk_hw_register(dev, &pll_clk->hw); + if (ret) + return ERR_PTR(ret); + + return pll_clk->hw.clk; +} + static unsigned long rzv2h_cpg_pll_clk_recalc_rate(struct clk_hw *hw, unsigned long parent_rate) { @@ -508,6 +784,12 @@ rzv2h_cpg_register_core_clk(const struct cpg_core_clk *core, case CLK_TYPE_SMUX: clk = rzv2h_cpg_mux_clk_register(core, priv); break; + case CLK_TYPE_PLLDSI: + clk = rzv2h_cpg_plldsi_clk_register(core, priv); + break; + case CLK_TYPE_PLLDSI_DIV: + clk = rzv2h_cpg_plldsi_div_clk_register(core, priv); + break; default: goto fail; } @@ -1047,6 +1329,8 @@ static int __init rzv2h_cpg_probe(struct platform_device *pdev) priv->last_dt_core_clk = info->last_dt_core_clk; priv->num_resets = info->num_resets; + priv->dsi_limits = info->plldsi_limits; + for (i = 0; i < nclks; i++) clks[i] = ERR_PTR(-ENOENT); diff --git a/drivers/clk/renesas/rzv2h-cpg.h b/drivers/clk/renesas/rzv2h-cpg.h index 2250436c4c24..c60f9ff49439 100644 --- a/drivers/clk/renesas/rzv2h-cpg.h +++ b/drivers/clk/renesas/rzv2h-cpg.h @@ -88,6 +88,7 @@ struct smuxed { #define CPG_CDDIV3 (0x40C) #define CPG_CDDIV4 (0x410) #define CPG_CSDIV0 (0x500) +#define CPG_CSDIV1 (0x504) #define CDDIV0_DIVCTL1 DDIV_PACK(CPG_CDDIV0, 4, 3, 1) #define CDDIV0_DIVCTL2 DDIV_PACK(CPG_CDDIV0, 8, 3, 2) @@ -151,6 +152,8 @@ enum clk_types { CLK_TYPE_PLL, CLK_TYPE_DDIV, /* Dynamic Switching Divider */ CLK_TYPE_SMUX, /* Static Mux */ + CLK_TYPE_PLLDSI, /* PLLDSI */ + CLK_TYPE_PLLDSI_DIV, /* PLLDSI divider */ }; #define DEF_TYPE(_name, _id, _type...) \ @@ -178,6 +181,14 @@ enum clk_types { .num_parents = ARRAY_SIZE(_parent_names), \ .flag = CLK_SET_RATE_PARENT, \ .mux_flags = CLK_MUX_HIWORD_MASK) +#define DEF_PLLDSI(_name, _id, _parent, _pll_packed) \ + DEF_TYPE(_name, _id, CLK_TYPE_PLLDSI, .parent = _parent, .cfg.pll = _pll_packed) +#define DEF_PLLDSI_DIV(_name, _id, _parent, _ddiv_packed, _dtable) \ + DEF_TYPE(_name, _id, CLK_TYPE_PLLDSI_DIV, \ + .cfg.ddiv = _ddiv_packed, \ + .dtable = _dtable, \ + .parent = _parent, \ + .flag = CLK_SET_RATE_PARENT) /** * struct rzv2h_mod_clk - Module Clocks definitions @@ -289,6 +300,7 @@ struct rzv2h_reset { * * @num_mstop_bits: Maximum number of MSTOP bits supported, equivalent to the * number of CPG_BUS_m_MSTOP registers multiplied by 16. + * @plldsi_limits: PLL DSI parameters limits */ struct rzv2h_cpg_info { /* Core Clocks */ @@ -307,6 +319,8 @@ struct rzv2h_cpg_info { unsigned int num_resets; unsigned int num_mstop_bits; + + const struct rzv2h_plldsi_div_limits *plldsi_limits; }; extern const struct rzv2h_cpg_info r9a09g047_cpg_info; diff --git a/include/linux/clk/renesas-rzv2h-dsi.h b/include/linux/clk/renesas-rzv2h-dsi.h new file mode 100644 index 000000000000..ee8bae8b7375 --- /dev/null +++ b/include/linux/clk/renesas-rzv2h-dsi.h @@ -0,0 +1,207 @@ +/* SPDX-License-Identifier: GPL-2.0 */ +/* + * Renesas RZ/V2H(P) DSI CPG helper + * + * Copyright (C) 2025 Renesas Electronics Corp. + */ + +#include +#include +#include +#include + +#define OSC_CLK_IN_MEGA (24 * MEGA) + +struct rzv2h_plldsi_div_limits { + struct { + u64 min; + u64 max; + } fvco; + + struct { + u16 min; + u16 max; + } m; + + struct { + u8 min; + u8 max; + } p; + + struct { + u8 min; + u8 max; + } s; + + struct { + s16 min; + s16 max; + } k; + + struct { + u8 min; + u8 max; + } csdiv; +}; + +struct rzv2h_plldsi_parameters { + u64 freq_mhz; + s64 error_mhz; + u16 m; + s16 k; + u8 csdiv; + u8 p; + u8 s; +}; + +#define RZV2H_CPG_PLL_DSI_LIMITS(name) \ + static const struct rzv2h_plldsi_div_limits (name) = { \ + .m = { .min = 64, .max = 533 }, \ + .p = { .min = 1, .max = 4 }, \ + .s = { .min = 0, .max = 6 }, \ + .k = { .min = -32768, .max = 32767 }, \ + .csdiv = { .min = 2, .max = 32 }, \ + .fvco = { .min = 1600 * MEGA, .max = 3200 * MEGA } \ + } \ + +/** + * rzv2h_dsi_get_pll_parameters_values - Finds the best combination of PLL parameters + * and divider value for a given frequency. + * + * @limits: Pointer to the structure containing the limits for the PLL parameters and + * divider values + * @pars: Pointer to the structure where the best calculated PLL parameters and divider + * values will be stored + * @freq: Target output frequency (in mHz) + * + * This function calculates the best set of PLL parameters (M, K, P, S) and divider + * value (CSDIV) to achieve the desired frequency. + * There is no direct formula to calculate the PLL parameters and the divider value, + * as it's an open system of equations, therefore this function uses an iterative + * approach to determine the best solution. The best solution is one that minimizes + * the error (desired frequency - actual frequency). + * + * Return: true if a valid set of divider values is found, false otherwise. + */ +static __maybe_unused bool +rzv2h_dsi_get_pll_parameters_values(const struct rzv2h_plldsi_div_limits *limits, + struct rzv2h_plldsi_parameters *pars, + u64 freq_mhz) +{ + struct rzv2h_plldsi_parameters p, best; + + /* Initialize best error to maximum possible value */ + best.error_mhz = S64_MAX; + + for (p.csdiv = limits->csdiv.min; p.csdiv <= limits->csdiv.max; p.csdiv += 2) { + for (p.p = limits->p.min; p.p <= limits->p.max; p.p++) { + u32 fref = OSC_CLK_IN_MEGA / p.p; + + for (p.s = limits->s.min; p.s <= limits->s.max; p.s++) { + u16 two_pow_s = 1 << p.s; + u16 divider = two_pow_s * p.csdiv; + + for (p.m = limits->m.min; p.m <= limits->m.max; p.m++) { + u64 output_m, output_k_range; + s64 pll_k, output_k; + u64 fvco, output; + + /* + * The frequency generated by the combination of the + * PLL + divider is calculated as follows: + * + * Freq = Ffout / csdiv + * + * With: + * Ffout = Ffvco / 2^(pll_s) + * Ffvco = (pll_m + (pll_k / 65536)) * Ffref + * Ffref = 24MHz / pll_p + * + * Freq can also be rewritten as: + * Freq = Ffvco / (2^(pll_s) * csdiv)) + * = Ffvco / divider + * = (pll_m * Ffref) / divider + ((pll_k / 65536) * Ffref) / divider + *      = output_m + output_k + * + * Every parameter has been determined at this point, but pll_k. + * Considering that: + * -32768 <= pll_k <= 32767 + * Then: + * -0.5 <= (pll_k / 65536) < 0.5 + * Therefore: + * -Ffref / (2 * divider) <= output_k < Ffref / (2 * divider) + */ + + /* Compute output M component (in mHz) */ + output_m = DIV_ROUND_CLOSEST_ULL(p.m * fref * 1000ULL, + divider); + /* Compute range for output K (in mHz) */ + output_k_range = DIV_ROUND_CLOSEST_ULL(fref * 1000ULL, + divider * 2); + /* + * No point in continuing if we can't achieve the + * desired frequency + */ + if (freq_mhz < (output_m - output_k_range) || + freq_mhz >= (output_m + output_k_range)) + continue; + + /* + * Compute the K component + * + * Since: + * Freq = output_m + output_k + * Then: + * output_k = Freq - output_m + * = ((pll_k / 65536) * Ffref) / divider + * Therefore: + * pll_k = (output_k * 65536 * divider) / Ffref + */ + output_k = freq_mhz - output_m; + pll_k = div64_s64(output_k * 65536ULL * divider, fref); + pll_k = DIV_S64_ROUND_CLOSEST(pll_k, 1000); + + /* Validate K value within allowed limits */ + if (pll_k < limits->k.min || pll_k > limits->k.max) + continue; + + p.k = pll_k; + + /* Compute (Ffvco * 65536) */ + fvco = ((p.m * 65536ULL) + p.k) * fref; + if ((fvco < (limits->fvco.min * 65536ULL)) || + (fvco > (limits->fvco.max * 65536ULL))) + continue; + + /* PLL_M component of (output * 65536 * PLL_P) */ + output = p.m * 65536ULL * OSC_CLK_IN_MEGA; + /* PLL_K component of (output * 65536 * PLL_P) */ + output += p.k * OSC_CLK_IN_MEGA; + /* Make it in mHz */ + output *= 1000ULL; + output /= 65536ULL * p.p * divider; + + p.error_mhz = freq_mhz - output; + p.freq_mhz = output; + + /* If an exact match is found, return immediately */ + if (p.error_mhz == 0) { + *pars = p; + return true; + } + + /* Update best match if error is smaller */ + if (abs(best.error_mhz) > abs(p.error_mhz)) + best = p; + } + } + } + } + + /* If no valid parameters were found, return false */ + if (best.error_mhz == S64_MAX) + return false; + + *pars = best; + return true; +} From patchwork Sun Mar 30 21:06:58 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Lad, Prabhakar" X-Patchwork-Id: 14033031 X-Patchwork-Delegate: geert@linux-m68k.org Received: from mail-wm1-f54.google.com (mail-wm1-f54.google.com [209.85.128.54]) (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 4E4D01DED47; Sun, 30 Mar 2025 21:08:03 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.128.54 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1743368885; cv=none; b=LP2m147DnJKVyNmsEUrqxZ4+P4NKvvw8jRjQ78vocvlhJj5yRq+mIRbfQtuvbEzfOHgWXLITYcc1cugBWSvfW4aPOKeDGa6gA8/hVS2+xo7l2IyocWzhA6mq8Gr6/uNVIs4QZZ/OifCxCXdT0PhrCjUWQ1vzmJgf+zyfBi1ro2Q= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1743368885; c=relaxed/simple; bh=4qIV4OMJRQtj6+PhEQn+RPmbOwnjOLUtIYmtdPoEJKI=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=lTReF4++cygV6Rb9N9SH0eCooG4cCAYyNyvqxHGEPToj5cfDIMLhNrfxphJW40DzVLpTsUrn1bbP4qTbZL+D9+vDCFEjSHseXUYU1WJHN0BsuClQGm0G0c6pTw7kgo3Crq7aUUbJpboqYTYCdvCQsrDkPMlJyHR8ajykQs8q9SA= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=URQ1Ihd6; arc=none smtp.client-ip=209.85.128.54 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="URQ1Ihd6" Received: by mail-wm1-f54.google.com with SMTP id 5b1f17b1804b1-43d07ca6a80so20156915e9.1; Sun, 30 Mar 2025 14:08:02 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1743368881; x=1743973681; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=vYYfYJzS9UTTINef7l3N2YuUileFPTdDLT/ieLiyLmw=; b=URQ1Ihd6DtbTLXaQ7NSTDmBNkscq+IIdnA+d6ZjS3M9bF/GvtKsSiTa1Iq9PGGB5aV 5NTU6CAQ+vJlChQ1CbHKquR+/AHk778Lr5DzFWs22ZhWcsiLYah+Mc2rHEolQWchAO2y 5TtCxWgVfagE30HWedb+wweNn/SfXmbxUlWxI8OTCJZHqSTNWCp+r4Xh8iGO+ivYJKXC rWE5BVUXlskmAMaCFr9rHMSpYQyFToAFJxIEuYsrkuQhhaIKqx+6rm5s1SCsNYnESS0o xZLv/NSTJ1mUm1SEaMFh2jePCU+9xJNk4ZKXU92RZzA+0+zZ4gXPKKbh4JJd+rJxfFeZ l8Tg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1743368881; x=1743973681; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=vYYfYJzS9UTTINef7l3N2YuUileFPTdDLT/ieLiyLmw=; b=jpgN5btwea1nLZrfl4R0XQae6PJ0qXXZCnqzCUXyYot+1+7JV9QZQT9EHprzz4cRTY 2PGchNi2ZCSRF3gw59lym7Q2CnIChVZkSQD4h10k3tatsRlLn2U3mUSY6qsOH4YYoFso mmwNKfwPRANDh478IM7i3XQ+SJuOVji0iqlwKq/1dtu+fl6DDt/pmyGJ8OqjX97IQHY9 fu4XbSQUWJjVG6+zfTpWvmDGoGWXIcPoS5LELIge67nmNxK+2IOV+TuGlhWLLqOB5vIT iuWNtRSd3kqGtg+P23BztZEipGpD2QpBrfI9bRixpxQR0/xas9XUSLIEA7QNt6fmD0ki 7zHQ== X-Forwarded-Encrypted: i=1; AJvYcCV1nhZL98pa77LZJMdDnd+NxxHVqE3+iY3cZ3UJmIquDksrvc/Wjavog/za8XhxcBfjneL0Yn2N75RY/FA=@vger.kernel.org, AJvYcCVJ/aq6EjmCxk0CAsNf2/LNg3N4TzVwSroYaEODPDc5zL8w1qRxyUiZYhdM4B0TC2wZR1G2o2ZamkA=@vger.kernel.org, AJvYcCWSeHzd17Etift+o++4AmpYM1XhjyW46kfq212E5mWrJQsXH5G+mQAw1HwfxJ/iXhT/RdNS80yjIWMA26YZ2hdKOPk=@vger.kernel.org, AJvYcCXL2Ts3f1zj6k1KZEi5nJTzX9cdz8MrnIRwr55RcOVNQl4JVgo7bqYLNfi26MCjz3DGe1HXnGx3rG+Wmicc@vger.kernel.org X-Gm-Message-State: AOJu0YxvYH/73LwpdwDJVAMK5RVD686mW9obTSo9VekvmwlUrr1xTd+D RuocmYWHdSn2B/EXVPnTp3bXdR9u1u3++lpHerAvXdR1iJI1MkMo X-Gm-Gg: ASbGnctdwxveKfTDpKC3rVeazpcoLjAYSNZGFfk47Cbe8TMUSk0D9QUk+1BQhxO/KLo hiqin4oi8A/ggbZI6NHRwbbCxxJ2K1+BA/dUBmRDqplLdLBDAvAsdLFTsnMUbj7owfq/VCjmUT8 m/8R6wF2khUxl6KWJnpgQNg13GasLmP7S9qD70Ohz2RGeR+Or6Vgle3ogX6n7wSry783hZSkGcA p5AqLhgmhvyeSxtRQ5VgYBRiTg9RbrfIbxqkTkq9BK732PIbrpn3cGzAXFpGf5iYbzqL07/KPrc wPI3Lv3hE2o5Sv95GrYHD/ASmXrwY+S5xmvErbOkbr7zNvRGVu2Ox7w89kogUQEGL4I2bQ== X-Google-Smtp-Source: AGHT+IGA5SShe2wrh5HjhamkRaD85AlQ7QpNd6UvrHKlJhkllSwtSLD1fUK5QyBrjaPFdss47hjF0A== X-Received: by 2002:a05:600c:c08:b0:43d:563:6fef with SMTP id 5b1f17b1804b1-43db62bd2b2mr49544755e9.21.1743368881459; Sun, 30 Mar 2025 14:08:01 -0700 (PDT) Received: from iku.Home ([2a06:5906:61b:2d00:8249:9390:e853:c628]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-43d91429c36sm69778175e9.0.2025.03.30.14.07.59 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 30 Mar 2025 14:08:00 -0700 (PDT) From: Prabhakar X-Google-Original-From: Prabhakar To: Geert Uytterhoeven , Andrzej Hajda , Neil Armstrong , Robert Foss , Laurent Pinchart , Jonas Karlman , Jernej Skrabec , David Airlie , Simona Vetter , Maarten Lankhorst , Maxime Ripard , Thomas Zimmermann , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Biju Das , Mauro Carvalho Chehab , Kieran Bingham , Stephen Boyd , Philipp Zabel Cc: devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, linux-renesas-soc@vger.kernel.org, linux-media@vger.kernel.org, linux-clk@vger.kernel.org, Prabhakar , Fabrizio Castro , Lad Prabhakar Subject: [PATCH 02/17] clk: renesas: r9a09g057: Add clock and reset entries for DSI and LCDC Date: Sun, 30 Mar 2025 22:06:58 +0100 Message-ID: <20250330210717.46080-3-prabhakar.mahadev-lad.rj@bp.renesas.com> X-Mailer: git-send-email 2.49.0 In-Reply-To: <20250330210717.46080-1-prabhakar.mahadev-lad.rj@bp.renesas.com> References: <20250330210717.46080-1-prabhakar.mahadev-lad.rj@bp.renesas.com> Precedence: bulk X-Mailing-List: linux-renesas-soc@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 From: Lad Prabhakar Add clock and reset entries for the DSI and LCDC peripherals. Co-developed-by: Fabrizio Castro Signed-off-by: Fabrizio Castro Signed-off-by: Lad Prabhakar --- drivers/clk/renesas/r9a09g057-cpg.c | 63 +++++++++++++++++++++++++++++ drivers/clk/renesas/rzv2h-cpg.h | 3 ++ 2 files changed, 66 insertions(+) diff --git a/drivers/clk/renesas/r9a09g057-cpg.c b/drivers/clk/renesas/r9a09g057-cpg.c index 057bfa0e2a57..94c959577f03 100644 --- a/drivers/clk/renesas/r9a09g057-cpg.c +++ b/drivers/clk/renesas/r9a09g057-cpg.c @@ -6,6 +6,7 @@ */ #include +#include #include #include #include @@ -30,6 +31,7 @@ enum clk_ids { CLK_PLLCA55, CLK_PLLVDO, CLK_PLLETH, + CLK_PLLDSI, CLK_PLLGPU, /* Internal Core Clocks */ @@ -58,6 +60,9 @@ enum clk_ids { CLK_SMUX2_GBE0_RXCLK, CLK_SMUX2_GBE1_TXCLK, CLK_SMUX2_GBE1_RXCLK, + CLK_DIV_PLLETH_LPCLK, + CLK_CSDIV_PLLETH_LPCLK, + CLK_PLLDSI_SDIV2, CLK_PLLGPU_GEAR, /* Module Clocks */ @@ -78,6 +83,26 @@ static const struct clk_div_table dtable_2_4[] = { {0, 0}, }; +static const struct clk_div_table dtable_2_32[] = { + {0, 2}, + {1, 4}, + {2, 6}, + {3, 8}, + {4, 10}, + {5, 12}, + {6, 14}, + {7, 16}, + {8, 18}, + {9, 20}, + {10, 22}, + {11, 24}, + {12, 26}, + {13, 28}, + {14, 30}, + {15, 32}, + {0, 0}, +}; + static const struct clk_div_table dtable_2_64[] = { {0, 2}, {1, 4}, @@ -94,6 +119,14 @@ static const struct clk_div_table dtable_2_100[] = { {0, 0}, }; +static const struct clk_div_table dtable_16_128[] = { + {0, 16}, + {1, 32}, + {2, 64}, + {3, 128}, + {0, 0}, +}; + /* Mux clock tables */ static const char * const smux2_gbe0_rxclk[] = { ".plleth_gbe0", "et0-rxc-rxclk" }; static const char * const smux2_gbe0_txclk[] = { ".plleth_gbe0", "et0-txc-txclk" }; @@ -113,6 +146,7 @@ static const struct cpg_core_clk r9a09g057_core_clks[] __initconst = { DEF_PLL(".pllca55", CLK_PLLCA55, CLK_QEXTAL, PLLCA55), DEF_FIXED(".pllvdo", CLK_PLLVDO, CLK_QEXTAL, 105, 2), DEF_FIXED(".plleth", CLK_PLLETH, CLK_QEXTAL, 125, 3), + DEF_PLLDSI(".plldsi", CLK_PLLDSI, CLK_QEXTAL, PLLDSI), DEF_PLL(".pllgpu", CLK_PLLGPU, CLK_QEXTAL, PLLGPU), /* Internal Core Clocks */ @@ -148,6 +182,12 @@ static const struct cpg_core_clk r9a09g057_core_clks[] __initconst = { DEF_SMUX(".smux2_gbe0_rxclk", CLK_SMUX2_GBE0_RXCLK, SSEL0_SELCTL3, smux2_gbe0_rxclk), DEF_SMUX(".smux2_gbe1_txclk", CLK_SMUX2_GBE1_TXCLK, SSEL1_SELCTL0, smux2_gbe1_txclk), DEF_SMUX(".smux2_gbe1_rxclk", CLK_SMUX2_GBE1_RXCLK, SSEL1_SELCTL1, smux2_gbe1_rxclk), + DEF_FIXED(".plleth_lpclk_div4", CLK_DIV_PLLETH_LPCLK, CLK_PLLETH, 1, 4), + DEF_CSDIV(".plleth_lpclk", CLK_CSDIV_PLLETH_LPCLK, CLK_DIV_PLLETH_LPCLK, + CSDIV0_DIVCTL2, dtable_16_128), + + DEF_PLLDSI_DIV(".plldsi_sdiv2", CLK_PLLDSI_SDIV2, CLK_PLLDSI, + CSDIV1_DIVCTL2, dtable_2_32), DEF_DDIV(".pllgpu_gear", CLK_PLLGPU_GEAR, CLK_PLLGPU, CDDIV3_DIVCTL1, dtable_2_64), @@ -327,6 +367,22 @@ static const struct rzv2h_mod_clk r9a09g057_mod_clks[] __initconst = { BUS_MSTOP(9, BIT(7))), DEF_MOD("cru_3_pclk", CLK_PLLDTY_DIV16, 13, 13, 6, 29, BUS_MSTOP(9, BIT(7))), + DEF_MOD("dsi_0_pclk", CLK_PLLDTY_DIV16, 14, 8, 7, 8, + BUS_MSTOP(9, BIT(14) | BIT(15))), + DEF_MOD("dsi_0_aclk", CLK_PLLDTY_ACPU_DIV2, 14, 9, 7, 9, + BUS_MSTOP(9, BIT(14) | BIT(15))), + DEF_MOD("dsi_0_vclk1", CLK_PLLDSI_SDIV2, 14, 10, 7, 10, + BUS_MSTOP(9, BIT(14) | BIT(15))), + DEF_MOD("dsi_0_lpclk", CLK_CSDIV_PLLETH_LPCLK, 14, 11, 7, 11, + BUS_MSTOP(9, BIT(14) | BIT(15))), + DEF_MOD("dsi_0_pllref_clk", CLK_QEXTAL, 14, 12, 7, 12, + BUS_MSTOP(9, BIT(14) | BIT(15))), + DEF_MOD("lcdc_0_clk_a", CLK_PLLDTY_ACPU_DIV2, 14, 13, 7, 13, + BUS_MSTOP(10, BIT(1) | BIT(2) | BIT(3))), + DEF_MOD("lcdc_0_clk_p", CLK_PLLDTY_DIV16, 14, 14, 7, 14, + BUS_MSTOP(10, BIT(1) | BIT(2) | BIT(3))), + DEF_MOD("lcdc_0_clk_d", CLK_PLLDSI_SDIV2, 14, 15, 7, 15, + BUS_MSTOP(10, BIT(1) | BIT(2) | BIT(3))), DEF_MOD("gpu_0_clk", CLK_PLLGPU_GEAR, 15, 0, 7, 16, BUS_MSTOP(3, BIT(4))), DEF_MOD("gpu_0_axi_clk", CLK_PLLDTY_ACPU_DIV2, 15, 1, 7, 17, @@ -388,11 +444,16 @@ static const struct rzv2h_reset r9a09g057_resets[] __initconst = { DEF_RST(12, 14, 5, 31), /* CRU_3_PRESETN */ DEF_RST(12, 15, 6, 0), /* CRU_3_ARESETN */ DEF_RST(13, 0, 6, 1), /* CRU_3_S_RESETN */ + DEF_RST(13, 7, 6, 8), /* DSI_0_PRESETN */ + DEF_RST(13, 8, 6, 9), /* DSI_0_ARESETN */ + DEF_RST(13, 12, 6, 13), /* LCDC_0_RESET_N */ DEF_RST(13, 13, 6, 14), /* GPU_0_RESETN */ DEF_RST(13, 14, 6, 15), /* GPU_0_AXI_RESETN */ DEF_RST(13, 15, 6, 16), /* GPU_0_ACE_RESETN */ }; +RZV2H_CPG_PLL_DSI_LIMITS(rzv2h_cpg_pll_dsi_limits); + const struct rzv2h_cpg_info r9a09g057_cpg_info __initconst = { /* Core Clocks */ .core_clks = r9a09g057_core_clks, @@ -410,4 +471,6 @@ const struct rzv2h_cpg_info r9a09g057_cpg_info __initconst = { .num_resets = ARRAY_SIZE(r9a09g057_resets), .num_mstop_bits = 192, + + .plldsi_limits = &rzv2h_cpg_pll_dsi_limits, }; diff --git a/drivers/clk/renesas/rzv2h-cpg.h b/drivers/clk/renesas/rzv2h-cpg.h index c60f9ff49439..32304abd16b5 100644 --- a/drivers/clk/renesas/rzv2h-cpg.h +++ b/drivers/clk/renesas/rzv2h-cpg.h @@ -28,6 +28,7 @@ struct pll { }) #define PLLCA55 PLL_PACK(0x60, 1) +#define PLLDSI PLL_PACK(0xc0, 1) #define PLLGPU PLL_PACK(0x120, 1) /** @@ -105,6 +106,8 @@ struct smuxed { #define CSDIV0_DIVCTL0 DDIV_PACK(CPG_CSDIV0, 0, 2, CSDIV_NO_MON) #define CSDIV0_DIVCTL1 DDIV_PACK(CPG_CSDIV0, 4, 2, CSDIV_NO_MON) +#define CSDIV0_DIVCTL2 DDIV_PACK(CPG_CSDIV0, 8, 2, CSDIV_NO_MON) +#define CSDIV1_DIVCTL2 DDIV_PACK(CPG_CSDIV1, 8, 4, CSDIV_NO_MON) #define SSEL0_SELCTL2 SMUX_PACK(CPG_SSEL0, 8, 1) #define SSEL0_SELCTL3 SMUX_PACK(CPG_SSEL0, 12, 1) From patchwork Sun Mar 30 21:06:59 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Lad, Prabhakar" X-Patchwork-Id: 14033032 X-Patchwork-Delegate: kieran@bingham.xyz Received: from mail-wr1-f49.google.com (mail-wr1-f49.google.com [209.85.221.49]) (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 0755C1DF271; Sun, 30 Mar 2025 21:08:04 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.221.49 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1743368886; cv=none; b=HuLuG+fUCKXx8k8a03zmPFskJEXGuletVagS1DJV04Jsb7ofzQDpaTfM6XyolzriKfx+T7mS0FE18ERFz7zbVlcPclUdWf+o6F5mvu5tQpe9Iz8vHZuCpYr0B9Jvv1AD5C89G1VX6+QMSTufo65YT51IcrmSCJd+pZwwlf8qmDI= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1743368886; c=relaxed/simple; bh=6zHKw+mGMmUqTeRHVQTAWr5/wYPFxUw0NToMwPd0oHA=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=e55lBcxbNvcLmpLrlWbbjlmi878pQBtjBd7AJsU5vFCTtw7u7BZhKCmKaSwZ0MHT6rgqJ+jxuRrkhB7jKuyc25A9LKyDaKycwdo5c4Ac/BzxKi790ovMstEXfkLOWG71hY7QXTWNLBKRdyba84/MrT7OKuEhZ87Et1WUfxVeLFg= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=gMwBWX2Z; arc=none smtp.client-ip=209.85.221.49 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="gMwBWX2Z" Received: by mail-wr1-f49.google.com with SMTP id ffacd0b85a97d-39143200ddaso2459479f8f.1; Sun, 30 Mar 2025 14:08:04 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1743368883; x=1743973683; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=6vTBT3737aSuDNs+ola3oxIAKOS4UTwGBTcz64tioVY=; b=gMwBWX2ZbuF5IIp7PdfpKHynMvZvtbWA9CPmIV9m538i2zNecQk317rDWnesuXcwwY tUIXjmYkYnM5tx7y9hnkP40rLv9XljugS/L62F3laBbrsrPAzk/UhkqwJz5z2g+/DV11 sRMwH1P1moCGTaRul9D/mHNFjA+9XvBfCdcQOrRbxlb1q7HaPBCVVRqKDzSQmxzltDo5 vqLUx8IE73OGwpSdF9N8kLOywm356JyvLICDVqFbmC9OIBu2bK1GNna90gwETkNZPIrP OzIV/Ucb+j2mEjs3Bi9vA//Q4G22+Xb85ROLXgRQql+Dbn2M1vebojiyQn3RYlY6cj7R vTxg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1743368883; x=1743973683; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=6vTBT3737aSuDNs+ola3oxIAKOS4UTwGBTcz64tioVY=; b=DNJ+M6M6BEe+q8ZPgIUjUJGutWncO1CPmwYFbw0KXmCU/nMs2xOZEXYNGJN+tEFrcK U590j9UzGs7en1g5HvKgldAIqqoExc/R04D1sIcAzZ+JrTZb9Sv5XsXm9now14bO7YHT Q4qwtBkFVpQWvwVjP8MugC2BpstTUw1gxotaLkNXX5Tkw+qwH3Dts2ERb55RlzIkfECt PEUjiIL02Ess4YlDFD/pyZhxpRf6FIJSacvtG2s1e5BY30LVUnUb2X4rpPgWIUIfDMx7 dZGu1ga8qudDKiV8bGJMlahWEeKfYWwykAcv4mphoZjeIkTdRAQTf2s0JB1fHNPqiQY5 NSUA== X-Forwarded-Encrypted: i=1; AJvYcCUQYfBAHDLSrwNd3xS3xCMiJ6LKIw/K/8uMMy7oz8s1Sv4iwFp0Akh+i5MSOh3oP36g2jKUijAQgmRzpMXQxHXj6fE=@vger.kernel.org, AJvYcCVBTge4zg2qNGvfdVDlMu2FND541gHJd9Zh7R5mQwDe6R1mHnux5iXF8jCUKB4kDcQe79wdImaxGmKtRrp6@vger.kernel.org, AJvYcCVNGKdcEZ6TElQhocvMSgTQRLtJDXgSdTFNQX9pkV/L05Mmexi5r2RKcKn6YIPxsnVlV45DJHniHmM=@vger.kernel.org, AJvYcCWEzcpF5fzVmzroFU6o3mmt9udbRvJ9kFPRPgLNVNWvkiocC+cTbKUJjYkI6xkv+2Sw2waBgnmyKHZtDwU=@vger.kernel.org X-Gm-Message-State: AOJu0YwY2LnTm6Cbv+zZw+qEnPZwTpgOCCnOZFnU2xZfisa6pATnV/EP oG6JQJe92msbLDLUcrJzXGmmzfbX2+BHLaw6R/zPr/+pGKkh3d/C X-Gm-Gg: ASbGncuxvFXh4hfD9AivBow19I0YZNUdRltmqjWhikuRGce+cCtMr73wpKGuAyWtNYE s2As/tVfJkNmohwtvkNyQAwxb2OnUFAqbIkwwk7Nc4O3LNRcht3N9B4Z99lHKA7vR42F9wUEhvi XF1/JovdyWxkyyozOHtIKfqguGnulbY4wJqsA6vCP4SBTaX2P8r3FY56lceEbUqxdrtSOJ9QpPl Dakl6fHGHN70AscWpDaE3XgAtdBnbnw0UAIAN/q3RSjDwrWA/4R4UZ6lrkxC2zMfl50XFQ1AT+T qaa2so4scLHXSVzsp5FsT65S1CwHkZS9q8t5NF8i9K2Vi9dbk3+7b579I8nDdM/YRDNVxg== X-Google-Smtp-Source: AGHT+IHQsy3dGnn4PJPKW9Qk0fQrgUmMfhOTVtZ7Cn0IlFh8K3+cLohuNZC3LL4GbLtSEhtdTHgUQA== X-Received: by 2002:a05:6000:40ce:b0:391:47d8:de3a with SMTP id ffacd0b85a97d-39c1211d34fmr4741118f8f.53.1743368883311; Sun, 30 Mar 2025 14:08:03 -0700 (PDT) Received: from iku.Home ([2a06:5906:61b:2d00:8249:9390:e853:c628]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-43d91429c36sm69778175e9.0.2025.03.30.14.08.01 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 30 Mar 2025 14:08:02 -0700 (PDT) From: Prabhakar X-Google-Original-From: Prabhakar To: Geert Uytterhoeven , Andrzej Hajda , Neil Armstrong , Robert Foss , Laurent Pinchart , Jonas Karlman , Jernej Skrabec , David Airlie , Simona Vetter , Maarten Lankhorst , Maxime Ripard , Thomas Zimmermann , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Biju Das , Mauro Carvalho Chehab , Kieran Bingham , Stephen Boyd , Philipp Zabel Cc: devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, linux-renesas-soc@vger.kernel.org, linux-media@vger.kernel.org, linux-clk@vger.kernel.org, Prabhakar , Fabrizio Castro , Lad Prabhakar Subject: [PATCH 03/17] media: dt-bindings: media: renesas,vsp1: Document RZ/V2H(P) Date: Sun, 30 Mar 2025 22:06:59 +0100 Message-ID: <20250330210717.46080-4-prabhakar.mahadev-lad.rj@bp.renesas.com> X-Mailer: git-send-email 2.49.0 In-Reply-To: <20250330210717.46080-1-prabhakar.mahadev-lad.rj@bp.renesas.com> References: <20250330210717.46080-1-prabhakar.mahadev-lad.rj@bp.renesas.com> Precedence: bulk X-Mailing-List: linux-renesas-soc@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 From: Lad Prabhakar The VSPD block on the RZ/V2H(P) SoC is identical to the one found on the RZ/G2L SoC. No driver changes are required, as `renesas,r9a07g044-vsp2` will be used as a fallback compatible string on the RZ/V2H(P) SoC. Signed-off-by: Lad Prabhakar Acked-by: Krzysztof Kozlowski --- Documentation/devicetree/bindings/media/renesas,vsp1.yaml | 1 + 1 file changed, 1 insertion(+) diff --git a/Documentation/devicetree/bindings/media/renesas,vsp1.yaml b/Documentation/devicetree/bindings/media/renesas,vsp1.yaml index 1a03e67462a4..9d03b972f522 100644 --- a/Documentation/devicetree/bindings/media/renesas,vsp1.yaml +++ b/Documentation/devicetree/bindings/media/renesas,vsp1.yaml @@ -25,6 +25,7 @@ properties: - enum: - renesas,r9a07g043u-vsp2 # RZ/G2UL - renesas,r9a07g054-vsp2 # RZ/V2L + - renesas,r9a09g057-vsp2 # RZ/V2H(P) - const: renesas,r9a07g044-vsp2 # RZ/G2L fallback reg: From patchwork Sun Mar 30 21:07:00 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Lad, Prabhakar" X-Patchwork-Id: 14033033 X-Patchwork-Delegate: kieran@bingham.xyz Received: from mail-wr1-f47.google.com (mail-wr1-f47.google.com [209.85.221.47]) (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 3E07D1DED56; Sun, 30 Mar 2025 21:08:05 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.221.47 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1743368887; cv=none; b=KzDImWob9qA8MIf4kmOKrl/e++sGaQFyo9Am600wnJpIgM6vga6Jnfl49l3DN8KTLjpB7OolyO1+F6HdMJ4DdPTuPSNZsXaXP0khJqXiXzdUNbjj4MReyo1i3OHLPc+bA2cbTfI6O6+FQcgs2ZhqK6D6Q+oIz2eEwfhxniYzQzE= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1743368887; c=relaxed/simple; bh=ZWeCW3c0R5nYyCrr9NH3Jf5bObSBEEimmymg1Tp1Xx8=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=NtkROlNjlL6pGAr/neELgJJqDxEct2cvticpwE+ujB2KSWceFz05YYcuHY203lHSHbIZTGjgXTdCBXkhTxqs5oA/5KgppWiEc2xvSsL2kw1GpAj/X+U8VbZFEtGsKCu1PCgq5e69V8JQ4G1OZZm33vZE124uA+Ve3oTiIkUqRzc= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=kTIRy+dQ; arc=none smtp.client-ip=209.85.221.47 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="kTIRy+dQ" Received: by mail-wr1-f47.google.com with SMTP id ffacd0b85a97d-3914aba1ce4so3306256f8f.2; Sun, 30 Mar 2025 14:08:05 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1743368884; x=1743973684; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=CJGfkSX6YLjiBowXHobmTnY2qb6MyRd/XZpUO5ocTEU=; b=kTIRy+dQYf2cQn/aPEUymCGxzFMcev+l0+qZxRK3EGNaQ4/gHIgCufoTTNp2OtTv6C 3PKFrKlXHyskP2C4rBo43baf4YYIxWY7EzhdcUu53FnBT5V00j1m/e0oSZ6/UaPwU/nR +Cbu5WfUjYpGF8Bs2bYAy1vw81D8wdNJ04QDoSP1S0/6GhDI9C3NFBbqEqWmHzgHoAp2 YAWLixtrWSBGce/gHa6nWslyfr5Wpnka5tSZxdH6SAvkPhcQ6HiVjUB2QDh1Wt8aQM6N Qie18BYJrbKszqtIZKl/zM1+6grDpLnLKOLoSIhdiwkY3dHt0aVPwmFSh2qDVK/DefNO 0cIg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1743368884; x=1743973684; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=CJGfkSX6YLjiBowXHobmTnY2qb6MyRd/XZpUO5ocTEU=; b=LbPbjxZ32CRi3W1z4mrVCiZzs8IvXty2ejDgwok586aixFqwCfksyFlwmopLK+SAXM I7CLy0pmZDA3M+9l1GDYaIJs0ONis8kCvAB7WA4LpR4gX2jLun5et32D/bBIA+MsAW0G +sCxrTGHEyShXv6vsy6r/EwbFAjU4Enq0/oYG9uBtOO/KvpdruMJif726+vdi90wV5Dd tHqfcBcu0QRHkULAJhFYpw/bGk+h9smchRM9xiIwAFWeBLMlfIa1ZRXC7GfTzH2Nnzs9 Af34IlGNL0mSzifZ4unfxI2nzues+kStN3zhvoKkweNxXOAn9YDiqBndmel5eXM4fgmv ieIg== X-Forwarded-Encrypted: i=1; AJvYcCUxCP/RIJlRvgIt/zq5jQ/vnrpBH1h5SvxSDk02LHy+jHSmdD6q+kbGD04OxnnPj6EtVduipc/Mma1HjhC/@vger.kernel.org, AJvYcCUxWGtCwjqfsaS/k5y4lvIkPxX0W6ql6QCkYjHVf9FeKpldibHiwy8TJC9bJqABdpRIRm0IOUmAEBY=@vger.kernel.org, AJvYcCUzbAMDzUREqABhexRrVN4OBjponASRTOoI+UVUVqtLzoulLE9oGnP5ojaEmgizR6LAl3ZJKV5/nWJa4cU=@vger.kernel.org, AJvYcCXo4yOJlLHZ/nOst0TZyfNdzTLmiQMSNN25gxgmWnso/S3E814jKvoBY+O3W8jfObkmixcRpJDli3QSPdynGsCX38k=@vger.kernel.org X-Gm-Message-State: AOJu0YxOqzd5Y84vLGyNXYAk+nakuZl0IdKUhJVttpB/elV4YWt1NR8p mlRc9o86iwKfgMPBoq06ZgjgBwqQE08YrQR23HbHJCxgnF5N9n/3 X-Gm-Gg: ASbGncvA5i1l0g+51K+ZFXZ48ZxS9HmYuKnopbiSD8NFXLeydxikjT2JdDpsS1RBUJJ NeB5p0XFSeCktmRY/cHtGOvXZ9oPjm/5PEtXXyssijaLzUjhXUsgd10G5G1Uw9E7Lh/OvCTwPW3 y1pm6Nkbs/S44//1rOJHdqtn8OWXSXYXR1iiAjre+NUzTebRYoTY0byOa8ZTPxNvnJNo/wG4nj3 NSXXKqLU1xJ76AW+LqQjY9ACryK2Csm0RBkAewt2gmcSzIFAnTrJ48Aq28ibEXnKw2Hize3NWwJ RC+J5gT2lj1Qwb+hH3E8FdyrW1fMqSsv68MeD8/iLlyZ45OYfMq/JYPNnlgeZzUwWdTnBQpn5wP HL41A X-Google-Smtp-Source: AGHT+IGpU1jaxarhQ7wRvM5FDs9koBUD9x9BN40Xq4EbGrv2oLNR6yGTBGtRq/Ag31z2lkoyiLpoDA== X-Received: by 2002:a5d:64c5:0:b0:38f:2413:2622 with SMTP id ffacd0b85a97d-39c1211b51cmr5252181f8f.47.1743368884422; Sun, 30 Mar 2025 14:08:04 -0700 (PDT) Received: from iku.Home ([2a06:5906:61b:2d00:8249:9390:e853:c628]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-43d91429c36sm69778175e9.0.2025.03.30.14.08.03 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 30 Mar 2025 14:08:03 -0700 (PDT) From: Prabhakar X-Google-Original-From: Prabhakar To: Geert Uytterhoeven , Andrzej Hajda , Neil Armstrong , Robert Foss , Laurent Pinchart , Jonas Karlman , Jernej Skrabec , David Airlie , Simona Vetter , Maarten Lankhorst , Maxime Ripard , Thomas Zimmermann , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Biju Das , Mauro Carvalho Chehab , Kieran Bingham , Stephen Boyd , Philipp Zabel Cc: devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, linux-renesas-soc@vger.kernel.org, linux-media@vger.kernel.org, linux-clk@vger.kernel.org, Prabhakar , Fabrizio Castro , Lad Prabhakar Subject: [PATCH 04/17] media: dt-bindings: media: renesas,fcp: Document RZ/V2H(P) SoC Date: Sun, 30 Mar 2025 22:07:00 +0100 Message-ID: <20250330210717.46080-5-prabhakar.mahadev-lad.rj@bp.renesas.com> X-Mailer: git-send-email 2.49.0 In-Reply-To: <20250330210717.46080-1-prabhakar.mahadev-lad.rj@bp.renesas.com> References: <20250330210717.46080-1-prabhakar.mahadev-lad.rj@bp.renesas.com> Precedence: bulk X-Mailing-List: linux-renesas-soc@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 From: Lad Prabhakar The FCPVD block on the RZ/V2H(P) SoC is identical to the one found on the RZ/G2L SoC. No driver changes are required, as `renesas,fcpv` will be used as a fallback compatible string on the RZ/V2H(P) SoC. Signed-off-by: Lad Prabhakar Acked-by: Krzysztof Kozlowski --- Documentation/devicetree/bindings/media/renesas,fcp.yaml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/Documentation/devicetree/bindings/media/renesas,fcp.yaml b/Documentation/devicetree/bindings/media/renesas,fcp.yaml index f94dacd96278..5ed9427fb757 100644 --- a/Documentation/devicetree/bindings/media/renesas,fcp.yaml +++ b/Documentation/devicetree/bindings/media/renesas,fcp.yaml @@ -30,6 +30,7 @@ properties: - renesas,r9a07g043u-fcpvd # RZ/G2UL - renesas,r9a07g044-fcpvd # RZ/G2{L,LC} - renesas,r9a07g054-fcpvd # RZ/V2L + - renesas,r9a09g057-fcpvd # RZ/V2H(P) - const: renesas,fcpv # Generic FCP for VSP fallback reg: @@ -66,6 +67,7 @@ allOf: - renesas,r9a07g043u-fcpvd - renesas,r9a07g044-fcpvd - renesas,r9a07g054-fcpvd + - renesas,r9a09g057-fcpvd then: properties: clocks: From patchwork Sun Mar 30 21:07:01 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Lad, Prabhakar" X-Patchwork-Id: 14033034 X-Patchwork-Delegate: kieran@bingham.xyz Received: from mail-wm1-f43.google.com (mail-wm1-f43.google.com [209.85.128.43]) (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 4C7CA1DF747; Sun, 30 Mar 2025 21:08:07 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.128.43 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1743368889; cv=none; b=poXczGosl0CUdUqHrB4WaHpCZ5i6lkXM9Si6w1Jk5rAk9s6WYGyTE+v+88JjE1WjujeqLU5ddv6Q7kVcCLacxBPKEYOOH5oEumFpjZUbpHS4r6yc/HK+aE54K0gCI8UuWLW02NmJRBHY6Y/e7dlx3UwbCuLzpOuR8au6pAfFU6s= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1743368889; c=relaxed/simple; bh=sIP59GBXv0gKvzFh/HL1Jft9vSgbyVO2jGNx76RkrBc=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=Wx0gR0SD3Kaq6ur55bmJIlUhl1u0P0D3A6OVZ+BnOmTYwnNuQOVJtgaME/LV7OUycxA8d+o4XQJgON6kxvqXZdJkssHtNilVFDn7qZJcDnqXKRlWh3SBEmZiIcsxJ+MYAsH+wtH5evpxTH0Fk81b85Mgn5lsTLqbUXGxp2eFuuA= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=hIjrJKQG; arc=none smtp.client-ip=209.85.128.43 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="hIjrJKQG" Received: by mail-wm1-f43.google.com with SMTP id 5b1f17b1804b1-43bb6b0b898so33713105e9.1; Sun, 30 Mar 2025 14:08:07 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1743368886; x=1743973686; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=ZgqdMu0oAVGbwwEH05wAuHtLT7zgiIKcDwaf1TQKovY=; b=hIjrJKQGraURdcVjyZHD5FWQ1v0QGqKhrPdkj6zSD2OPbZFWyND4m612M+ewoNSMmo EXxpIo2vQZicuO49in5howxtVbZv2boxc/nesZqinC+h7l6S5pe+ENHHU3LA+haeu6md qdA7z988eM0oGvTgvjBRI4bhtGNPpVw8Bv8s+C3hAaKJMKXvujfQk+aN5PU3Js4OzAWN QOcrcSKmLQdOe6ib2vzxuBIZDa80qum6+C3fZmi4MsD2740TKquukTF2E8fDGEMWHFrC EN8+g9So/XjjPbJ/xcfts9teo6T0LrhlpNd7GcuG2ATjt1TVUMLUYBbHtHHVFApebudP 5H3Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1743368886; x=1743973686; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=ZgqdMu0oAVGbwwEH05wAuHtLT7zgiIKcDwaf1TQKovY=; b=Epo1jBHnKTr3mFsy8bobfbDdr8B/VQ5jMMOzNqxS5zfBLFlqjFtus8spOAci8KK8sz FIPCq/oDwtRIvsFmeM3mJGe6/51VqkHjhv2uSxBZJTE2XJ0uT93d3EI2fPsgDkZthqlg vAtjgCEl1gweC1NxBC3xpSCa9HmLUTJC7jtq93/GWttRLbfj0U/l5YW6B3wLeIOL8HuQ e6dGzxhIPpKUDYCFNyjd2XCRHY4gXRBca4ifzBtv73lLu2i7X6Bw5CYJYGtoszZEX07U AdqHmGJBaR7EgIUXv1o7uu89MNrlGGziS2xcIGD8xXFmVSYmRHJubS6m4/0GbFWnhQz2 gyHg== X-Forwarded-Encrypted: i=1; AJvYcCVSBRq1OzBd7z8D4T8AK9JeHa294Xt2Y+Y2n4/0JSPvihPDxFJ4TCtx6NbQZkDvqunVIS1oDp5c9jxVPy0=@vger.kernel.org, AJvYcCXNaB1iBI7Iwb2Dmq7PGmjFfXWyZIzeQSZ5ih58F91tLZVJaAls84xIF8MccPWY/NdkwAPbOn5duYtjwaW+@vger.kernel.org, AJvYcCXZamnk5FDjS8Wcq3N6pU8IV8tSiItTY5JN/sHE8NUFVu3bRE/SA2I3baqvb7Mm7Oe3W2Ex1W4yww5vsuata8K0kZQ=@vger.kernel.org, AJvYcCXnkz4x1tvrXEk/4rQW9+EC89eLJgbjqDTQsHnD4VZIp0oJ7sOOEKXI6ZAG6Zwma4tKq2BINGwfQT0=@vger.kernel.org X-Gm-Message-State: AOJu0YytPYh5O9jHWO/2vn0TB0w39aCxqrq+LqVlsYt0jp8kwA6zgboi HGoKhlLRArfpzZ5rET9brCVUJTErXXfQGljGUYy1OR7eEgk1wHrg X-Gm-Gg: ASbGncuk6qX+N9iGEK9t2AnekeNI0zBP6XH0rcdaDU9rIubQKBJfgWVoiu/UwGCogT4 exCLwDJTaTHbtpEXe4rZWBBXDsEOZOZu/v+1bwqWsw6rCEbMGmW59lXVf/ZwHVPPn3BO/YLHird bsd7gJv8bTbi3xPNH94ZnHFG0srM4bK+O4PWgGZCVODLEtL7RCxrC0ncszfIQiYeJQfy7uxx9wm gllfanrrhB1UUgeclbnG33LvyVoms26OSbOLUKezIeg+VxRmlB3jsPBQNYlXCiPZp55put09a9y Oay/5Ekwf8uKwIXAYdQAJjQmR5s5e56DgRjMYC/syQhd2Cwd112tf7IZTfgvhQBUbRzWFQ== X-Google-Smtp-Source: AGHT+IEd0kdtHirt5rLM9tanycYyHvPODHCwZCJHWvvpSQdxS+WgA2Y/HcvRAIQ1N0P0umtMz0KFTA== X-Received: by 2002:a5d:59a6:0:b0:39c:dfa:c92a with SMTP id ffacd0b85a97d-39c12118ddfmr5125325f8f.36.1743368885591; Sun, 30 Mar 2025 14:08:05 -0700 (PDT) Received: from iku.Home ([2a06:5906:61b:2d00:8249:9390:e853:c628]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-43d91429c36sm69778175e9.0.2025.03.30.14.08.04 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 30 Mar 2025 14:08:05 -0700 (PDT) From: Prabhakar X-Google-Original-From: Prabhakar To: Geert Uytterhoeven , Andrzej Hajda , Neil Armstrong , Robert Foss , Laurent Pinchart , Jonas Karlman , Jernej Skrabec , David Airlie , Simona Vetter , Maarten Lankhorst , Maxime Ripard , Thomas Zimmermann , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Biju Das , Mauro Carvalho Chehab , Kieran Bingham , Stephen Boyd , Philipp Zabel Cc: devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, linux-renesas-soc@vger.kernel.org, linux-media@vger.kernel.org, linux-clk@vger.kernel.org, Prabhakar , Fabrizio Castro , Lad Prabhakar Subject: [PATCH 05/17] dt-bindings: display: renesas,rzg2l-du: Add support for RZ/V2H(P) SoC Date: Sun, 30 Mar 2025 22:07:01 +0100 Message-ID: <20250330210717.46080-6-prabhakar.mahadev-lad.rj@bp.renesas.com> X-Mailer: git-send-email 2.49.0 In-Reply-To: <20250330210717.46080-1-prabhakar.mahadev-lad.rj@bp.renesas.com> References: <20250330210717.46080-1-prabhakar.mahadev-lad.rj@bp.renesas.com> Precedence: bulk X-Mailing-List: linux-renesas-soc@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 From: Lad Prabhakar The DU block on the RZ/V2H(P) SoC is identical to the one found on the RZ/G2L SoC. However, it only supports the DSI interface, whereas the RZ/G2L supports both DSI and DPI interfaces. Due to this difference, a SoC-specific compatible string 'renesas,r9a09g057-du' is added for the RZ/V2H(P) SoC. Signed-off-by: Lad Prabhakar --- .../bindings/display/renesas,rzg2l-du.yaml | 28 ++++++++++++++++--- 1 file changed, 24 insertions(+), 4 deletions(-) diff --git a/Documentation/devicetree/bindings/display/renesas,rzg2l-du.yaml b/Documentation/devicetree/bindings/display/renesas,rzg2l-du.yaml index 95e3d5e74b87..5c666b6123ff 100644 --- a/Documentation/devicetree/bindings/display/renesas,rzg2l-du.yaml +++ b/Documentation/devicetree/bindings/display/renesas,rzg2l-du.yaml @@ -20,6 +20,7 @@ properties: - enum: - renesas,r9a07g043u-du # RZ/G2UL - renesas,r9a07g044-du # RZ/G2{L,LC} + - renesas,r9a09g057-du # RZ/V2H(P) - items: - enum: - renesas,r9a07g054-du # RZ/V2L @@ -87,6 +88,23 @@ required: additionalProperties: false allOf: + - if: + properties: + compatible: + contains: + const: renesas,r9a07g044-du + then: + properties: + ports: + properties: + port@0: + description: DSI + port@1: + description: DPI + + required: + - port@0 + - port@1 - if: properties: compatible: @@ -101,18 +119,20 @@ allOf: required: - port@0 - else: + - if: + properties: + compatible: + contains: + const: renesas,r9a09g057-du + then: properties: ports: properties: port@0: description: DSI - port@1: - description: DPI required: - port@0 - - port@1 examples: # RZ/G2L DU From patchwork Sun Mar 30 21:07:02 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Lad, Prabhakar" X-Patchwork-Id: 14033035 X-Patchwork-Delegate: kieran@bingham.xyz Received: from mail-wr1-f52.google.com (mail-wr1-f52.google.com [209.85.221.52]) (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 6978E1E22FC; Sun, 30 Mar 2025 21:08:09 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.221.52 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1743368891; cv=none; b=UANDxAKIUhX7q0ct+P2ltqOzJpHtHY+eA3sWdjfalUvCwREigAclkvFOWCzZMFTDgZUMlxsen5kMRa0l9E3+/aXexhwvFo9eP3hwbuNL0O+UzuE6I2QMl7ndXCkm5f5pNz8bvx3U/sDQtk+c2asfgkcWzYxEA7/yfgkTyfx7vTM= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1743368891; c=relaxed/simple; bh=rPOU6SK6KBnqiJhD/GUW9tTvnEw/MGykezT8vv4g5QA=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=tOPqgmRk7H7LhwqzNdzhFeyXBV5Kvsc5oRknJLey01VrkUowiN021tZcQi/0rkq+jvgIiS7+C8H2wynt2seBOMiUmXhNRn72qJpZvghiIHZqkAMA0gPtIVT/uHg/I1/9fyXiuLNJnWkzS6Y3Lg7oBfzQWKeA86ZR8gVh6sH08IM= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=N2KJI710; arc=none smtp.client-ip=209.85.221.52 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="N2KJI710" Received: by mail-wr1-f52.google.com with SMTP id ffacd0b85a97d-3914aba1ce4so3306310f8f.2; Sun, 30 Mar 2025 14:08:09 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1743368888; x=1743973688; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=wOya+hsmwz22BhJPkrxREwIJnTNnWqboReymlaoYzMM=; b=N2KJI710SvHXPIEalWjQO9qfyEfAHU6hEdq7G91oJvf0fH4/AMcF5RnX/UVzUrzrqu e8Iyandr/ho6WZIx+EayHgSj+afMoCT01cSHdc/jaQhacZqJVOXh/2h7W1XwLTifcl3s phDQCjG1GXHzJjtNIs2B2NwCnuF7hqSu5Rhhsr60YfhdVb2jCmxiOp8LjycJrdOTr6UF yiILDmbSvBHSgbIQx7dssearNaWXyyXZiubnZH17ncIWD4MpINEsuBBIDS/GEMvonBuP gvfVv//UApQWAvRsVOhakiH12hZ2ttVNvykID7Qm4bxBcOSMN3dTuAE+VFS1dOAwBBU6 gziA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1743368888; x=1743973688; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=wOya+hsmwz22BhJPkrxREwIJnTNnWqboReymlaoYzMM=; b=uSFP/EV1Tr7/Gwf2oBS0yjiKF/ue7sqJRHFM3C44y9SRrxhBsVBtZ0BYJIC9b2cQfb 4oSv68JxAlVmnpVmIEdSXKiKS1ikc0AX6twLqiPYQbkHOiAra+QqXI0AGBrwwvgTmNkc OyLURZ/OlRqmQ0rgyia8qkq8xlQCTsLcnqcZIUmgxS0Feb6z+nHElF/4OCvHao1dJAFY jwSEvH4X3u7yMFC+/v6h2+ehOFBh4gnGiClJR3bBnEaEaUtHYOm3akeZVeOY2rJgGE8p EOg3Cd49zXgd7jilk+ip6vsmNKw3OpYgJqa+AaPPtdIhn7E/2mPTHrAY3/FSNiFz+H2W YVbw== X-Forwarded-Encrypted: i=1; AJvYcCU1BXixNmsL94P9o6teFat6hieCJPIhjJT8eM39R1UK4Ql5mggjn9LtMUxJvgU/sdshdnVWByuax8gHIlSO@vger.kernel.org, AJvYcCU85g8/dcxpj6hkyA2M2ScOeQPPjsG/1JdfOhcmHGxHuGL4m0KHjWl36/rU8JVYX/JM1TOBXzjhQoRDsVyEEdjy3cg=@vger.kernel.org, AJvYcCVdYrpBmvqqPq+usIu8cvJ7aCSzfPdDCg4PcYo77qgzT7u9Fn0rjuMbV1T63XlLFm5h7H9tyy6CS08=@vger.kernel.org, AJvYcCX2v5xCrG+Z4EK6sdorDYQC/i47KJuEDtZmIPwg8k5RIhuH+xw52hkulOJfT/gczo6fV/2bYNeqxyPsY/s=@vger.kernel.org X-Gm-Message-State: AOJu0YymBXY88Zn++h1XkaR5Q3d4FPHe8bHIWgqvPxXNQaaAuTA5oX22 OqdHl84dG/QqNujfVfU1IMC3/1EZb8CBxY/OofTgyyTezGP2l5Ck X-Gm-Gg: ASbGnctRRcu+PwG68C70BXyqe4GE1B08WhOTid9k5RbJuMOeiDinaBuBGLjlURQOCR0 mzWxy991nHvTjnpfDuaMYbha85VzfHIqB912ELsi4UMiGJ0OGzfWdABNdOx78gFFFaF0FJzaajQ eH2qtHccDfbRvy3e7GpJ3ZGBz6WTkEfyuSHGH13hrRLitWcYihs4fn7n0kYCdGfveYO7rWYSffI cXeCAKNGC11xlwQVTT+P/CyyC6FC7Bm/quT9lBTETIZIA2+wMul2sbNMhmg3SPQ4hvKVgLTDHHc T5x57Ipkwlhmh52N2m+ipmCZLoIQJ9QaQ9w2g6kX1CzOjhRc9yS6SL/ZnmIN+HNx92JLQQ== X-Google-Smtp-Source: AGHT+IHzYnG1Q67QoKSFJx+h5jPQaNu3fis8IoYs4sBaSTupv984ZvQyex5BVmGbt92C9CR44EK3RQ== X-Received: by 2002:a5d:588a:0:b0:394:ef93:9afc with SMTP id ffacd0b85a97d-39c120dc1aamr4747563f8f.18.1743368887428; Sun, 30 Mar 2025 14:08:07 -0700 (PDT) Received: from iku.Home ([2a06:5906:61b:2d00:8249:9390:e853:c628]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-43d91429c36sm69778175e9.0.2025.03.30.14.08.05 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 30 Mar 2025 14:08:06 -0700 (PDT) From: Prabhakar X-Google-Original-From: Prabhakar To: Geert Uytterhoeven , Andrzej Hajda , Neil Armstrong , Robert Foss , Laurent Pinchart , Jonas Karlman , Jernej Skrabec , David Airlie , Simona Vetter , Maarten Lankhorst , Maxime Ripard , Thomas Zimmermann , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Biju Das , Mauro Carvalho Chehab , Kieran Bingham , Stephen Boyd , Philipp Zabel Cc: devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, linux-renesas-soc@vger.kernel.org, linux-media@vger.kernel.org, linux-clk@vger.kernel.org, Prabhakar , Fabrizio Castro , Lad Prabhakar Subject: [PATCH 06/17] dt-bindings: display: bridge: renesas,dsi: Add support for RZ/V2H(P) SoC Date: Sun, 30 Mar 2025 22:07:02 +0100 Message-ID: <20250330210717.46080-7-prabhakar.mahadev-lad.rj@bp.renesas.com> X-Mailer: git-send-email 2.49.0 In-Reply-To: <20250330210717.46080-1-prabhakar.mahadev-lad.rj@bp.renesas.com> References: <20250330210717.46080-1-prabhakar.mahadev-lad.rj@bp.renesas.com> Precedence: bulk X-Mailing-List: linux-renesas-soc@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 From: Lad Prabhakar The MIPI DSI interface on the RZ/V2H(P) SoC is nearly identical to that of the RZ/G2L SoC. While the LINK registers are the same for both SoCs, the D-PHY registers differ. Additionally, the number of resets for DSI on RZ/V2H(P) is two compared to three on the RZ/G2L. To accommodate these differences, a SoC-specific `renesas,r9a09g057-mipi-dsi` compatible string has been added for the RZ/V2H(P) SoC. Signed-off-by: Lad Prabhakar Reviewed-by: Krzysztof Kozlowski --- .../bindings/display/bridge/renesas,dsi.yaml | 117 +++++++++++++----- 1 file changed, 87 insertions(+), 30 deletions(-) diff --git a/Documentation/devicetree/bindings/display/bridge/renesas,dsi.yaml b/Documentation/devicetree/bindings/display/bridge/renesas,dsi.yaml index e08c24633926..501239f7adab 100644 --- a/Documentation/devicetree/bindings/display/bridge/renesas,dsi.yaml +++ b/Documentation/devicetree/bindings/display/bridge/renesas,dsi.yaml @@ -14,16 +14,16 @@ description: | RZ/G2L alike family of SoC's. The encoder can operate in DSI mode, with up to four data lanes. -allOf: - - $ref: /schemas/display/dsi-controller.yaml# - properties: compatible: - items: - - enum: - - renesas,r9a07g044-mipi-dsi # RZ/G2{L,LC} - - renesas,r9a07g054-mipi-dsi # RZ/V2L - - const: renesas,rzg2l-mipi-dsi + oneOf: + - items: + - enum: + - renesas,r9a07g044-mipi-dsi # RZ/G2{L,LC} + - renesas,r9a07g054-mipi-dsi # RZ/V2L + - const: renesas,rzg2l-mipi-dsi + + - const: renesas,r9a09g057-mipi-dsi # RZ/V2H(P) reg: maxItems: 1 @@ -49,34 +49,56 @@ properties: - const: debug clocks: - items: - - description: DSI D-PHY PLL multiplied clock - - description: DSI D-PHY system clock - - description: DSI AXI bus clock - - description: DSI Register access clock - - description: DSI Video clock - - description: DSI D-PHY Escape mode transmit clock + oneOf: + - items: + - description: DSI D-PHY PLL multiplied clock + - description: DSI D-PHY system clock + - description: DSI AXI bus clock + - description: DSI Register access clock + - description: DSI Video clock + - description: DSI D-PHY Escape mode transmit clock + - items: + - description: DSI D-PHY PLL multiplied clock + - description: DSI AXI bus clock + - description: DSI Register access clock + - description: DSI Video clock + - description: DSI D-PHY Escape mode transmit clock clock-names: - items: - - const: pllclk - - const: sysclk - - const: aclk - - const: pclk - - const: vclk - - const: lpclk + oneOf: + - items: + - const: pllclk + - const: sysclk + - const: aclk + - const: pclk + - const: vclk + - const: lpclk + - items: + - const: pllclk + - const: aclk + - const: pclk + - const: vclk + - const: lpclk resets: - items: - - description: MIPI_DSI_CMN_RSTB - - description: MIPI_DSI_ARESET_N - - description: MIPI_DSI_PRESET_N + oneOf: + - items: + - description: MIPI_DSI_CMN_RSTB + - description: MIPI_DSI_ARESET_N + - description: MIPI_DSI_PRESET_N + - items: + - description: MIPI_DSI_ARESET_N + - description: MIPI_DSI_PRESET_N reset-names: - items: - - const: rst - - const: arst - - const: prst + oneOf: + - items: + - const: rst + - const: arst + - const: prst + - items: + - const: arst + - const: prst power-domains: maxItems: 1 @@ -130,6 +152,41 @@ required: additionalProperties: false +allOf: + - $ref: ../dsi-controller.yaml# + + - if: + properties: + compatible: + contains: + const: renesas,r9a09g057-mipi-dsi + then: + properties: + clocks: + maxItems: 5 + + clock-names: + maxItems: 5 + + resets: + maxItems: 2 + + reset-names: + maxItems: 2 + else: + properties: + clocks: + minItems: 6 + + clock-names: + minItems: 6 + + resets: + minItems: 3 + + reset-names: + minItems: 3 + examples: - | #include From patchwork Sun Mar 30 21:07:03 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Lad, Prabhakar" X-Patchwork-Id: 14033036 X-Patchwork-Delegate: kieran@bingham.xyz Received: from mail-wm1-f42.google.com (mail-wm1-f42.google.com [209.85.128.42]) (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 6F7641E261F; Sun, 30 Mar 2025 21:08:10 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.128.42 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1743368892; cv=none; b=s0ZftbA8ZvvP/oy32DyXw+9zYt9Hrr9uRbqCOwRMr6YXSuyAuhi2yczC9KrzODsoVv2Uq2EH5dqdhuW5izBDd83FsgpqidRwU+jf0yb6ZNISxNXKCBZHrzSLUUapKiZdpQj4IzTb1hg7Iy+dwmHX8+p/r0rIgZdGQdGfLTyvqAk= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1743368892; c=relaxed/simple; bh=RULVOVjR7RbbdsyLcOIkpSNvyaI8NAYtawM8UYjTFuk=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=rNxrpOsTomkmItsz05iGulhPI4kS/90LmqHN1e46rGxF8Fg/obDY5o9yOLxFTbNDWW4FgDdXLuj7GVgpLM2N4ktmkMbPabxp6CtGwspqiv6tYslo8bzAhz9n7bHqUDSZO28tgkaUlMiTJf1L/ZnH50qY1EBlV129LIeuMujAsCU= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=SdNWydus; arc=none smtp.client-ip=209.85.128.42 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="SdNWydus" Received: by mail-wm1-f42.google.com with SMTP id 5b1f17b1804b1-43948021a45so38627415e9.1; Sun, 30 Mar 2025 14:08:10 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1743368889; x=1743973689; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=vWGwt05eoKsBOuAIkdn87vjxTMsvoFkURE5F8gc9+EE=; b=SdNWydusgHwbRKQzZSlAd05rDDij/d7SmFha+5l2oM9QbZNObUogdW4vGHNB7pHtPw Y8zcSV/k2VB/ZUeDay/ctAcc38w0LV3QnSY0ya9BQfquyD0wD0Dpf6CYWMsPt/oflJ8l dJ6E61tUlTGoO5ITUmO36C02qF1cxi2cJDk6yzUdHnVFhxDLfBuUAzRVaSbQmHdJpKWA EnoQjZPtSGcwYNGEx+u6Du4MzJJm/FNtCvgUj0sYiZAL82g5GE36/IGmY9WUjAwBLy48 zlkznlcA9HpDiSuC5h5/0/OaQ6UEJdZBvjQyiOMJu7XWoNgh4deh+6O7r+kDYNcXnoVF Vp9Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1743368889; x=1743973689; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=vWGwt05eoKsBOuAIkdn87vjxTMsvoFkURE5F8gc9+EE=; b=mrPERLdAVufh/dPYxSmXuekA+AF5KI4O4QtRV+yhQYnBptm52vLOoVYRJtE6ytG+K0 /VEEcpktLszm+h1t6CNlI5nRE6AZ3Lyk40cpdYK/i7X2tD2eSK5it1yanqI2hmP+Tqw+ 1IKnWYMroZvIyGW1mmbNx7SYYnr6+M5HGmuTqX83RFaTZbUGOPBo8PrjR4xDGvSFqID4 9WJC5T6FtVgOPUp5QwgjbcwAmgzx28+R0AGid2ezYlmgp2Q2opFuq45DInFpY1kzzmT/ kxWPq9SvEnqcDhILXn1YWemYmr/svT+cF7buKlwZwTcHsv6WE8iAsXlRVxLXmITfSRdH ypPg== X-Forwarded-Encrypted: i=1; AJvYcCU7lIRhnFqqM4N11DY8HrVPyf812C+acJLCEBOJKSsDKb3n+dcYITRCcDUZlLawzfmOuLqZJrOt8b9M38fl@vger.kernel.org, AJvYcCV1DSlLs4yZ8O+t8i3d6YKbSgqWR3RbvJCuF6SyZCU/K21RGew+6pKdn7g/fcC4ZZSfTIjPeHa5VLbdnYd4k+sjRcY=@vger.kernel.org, AJvYcCXM77Qju+kZXD6QIiC/YkpjPEyo0Lk+NwHOcrJqpbqmmkRhQJnO54UPJixlIIEsubPvQbjDiJ2qFbTy/uc=@vger.kernel.org, AJvYcCXTzbirBEqzjcbC4zZQutVSEwc/fVncjA5mO6Ketr56ho85Ultf/MULdDkxCuzR5+ZkxXNLbTO5POE=@vger.kernel.org X-Gm-Message-State: AOJu0Yw4kYaplnCr69+4lkU3ENcyg9Dkp118i/2X6oYMjA2aEsoiWTS1 AS1e4ZA9OMXQTxVK/IoEj+67UooMJos16x3yJVun3ffVY+M1AcLm X-Gm-Gg: ASbGnctAz7PJMdfg5Fpies5HyL0oA0qUJC8L16q0liSsRdA5PrNcILrwxaAFsCc7AEX whqvq5ZhsyxwjAZkrpMIqozYigijfKMeyHgO1eH5JD3sPXUh4SU/l3wh3sMm2SUGw3Q0Xv8GAWS H4nCaNIj+0Dm9fzJf5YL8gIEifOGjZVGPDp9z0OBGtKJ+F5KWosFHRId8SiiOiLEFuMjGuoKrDQ 5qJycvbEEnvUy8DAb/7bM6S6e/G1Bo5rgohIVs+6DQz58FjrA4QfvrawzjeEkpi4K7qL8v33zhq O0R4+OZRSrrHJWaBQNjbFEOyrjbAC9is7AZppXBKMiMp4fdHenhzk7RxHjMwYYEwW6CcAw== X-Google-Smtp-Source: AGHT+IEtGYaKa03nkcnkCso7yQ9l2iGopbNXYO0E/o7N8DtFwH+edLdC+6NX2B3qDLnOS/6zKUWNJA== X-Received: by 2002:a05:600c:a08b:b0:43b:ce3c:19d0 with SMTP id 5b1f17b1804b1-43db62bf93bmr61843325e9.29.1743368888691; Sun, 30 Mar 2025 14:08:08 -0700 (PDT) Received: from iku.Home ([2a06:5906:61b:2d00:8249:9390:e853:c628]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-43d91429c36sm69778175e9.0.2025.03.30.14.08.07 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 30 Mar 2025 14:08:08 -0700 (PDT) From: Prabhakar X-Google-Original-From: Prabhakar To: Geert Uytterhoeven , Andrzej Hajda , Neil Armstrong , Robert Foss , Laurent Pinchart , Jonas Karlman , Jernej Skrabec , David Airlie , Simona Vetter , Maarten Lankhorst , Maxime Ripard , Thomas Zimmermann , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Biju Das , Mauro Carvalho Chehab , Kieran Bingham , Stephen Boyd , Philipp Zabel Cc: devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, linux-renesas-soc@vger.kernel.org, linux-media@vger.kernel.org, linux-clk@vger.kernel.org, Prabhakar , Fabrizio Castro , Lad Prabhakar Subject: [PATCH 07/17] drm: renesas: rz-du: Add support for RZ/V2H(P) SoC Date: Sun, 30 Mar 2025 22:07:03 +0100 Message-ID: <20250330210717.46080-8-prabhakar.mahadev-lad.rj@bp.renesas.com> X-Mailer: git-send-email 2.49.0 In-Reply-To: <20250330210717.46080-1-prabhakar.mahadev-lad.rj@bp.renesas.com> References: <20250330210717.46080-1-prabhakar.mahadev-lad.rj@bp.renesas.com> Precedence: bulk X-Mailing-List: linux-renesas-soc@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 From: Lad Prabhakar The LCD controller (LCDC) on the RZ/V2H(P) SoC is composed of Frame Compression Processor (FCPVD), Video Signal Processor (VSPD), and Display Unit (DU). There is one LCDC unit available on the RZ/V2H(P) SoC which is connected to the DSI. Signed-off-by: Lad Prabhakar --- drivers/gpu/drm/renesas/rz-du/rzg2l_du_drv.c | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/drivers/gpu/drm/renesas/rz-du/rzg2l_du_drv.c b/drivers/gpu/drm/renesas/rz-du/rzg2l_du_drv.c index 5e40f0c1e7b0..e1aa6a719529 100644 --- a/drivers/gpu/drm/renesas/rz-du/rzg2l_du_drv.c +++ b/drivers/gpu/drm/renesas/rz-du/rzg2l_du_drv.c @@ -50,9 +50,20 @@ static const struct rzg2l_du_device_info rzg2l_du_r9a07g044_info = { } }; +static const struct rzg2l_du_device_info rzg2l_du_r9a09g057_info = { + .channels_mask = BIT(0), + .routes = { + [RZG2L_DU_OUTPUT_DSI0] = { + .possible_outputs = BIT(0), + .port = 0, + }, + }, +}; + static const struct of_device_id rzg2l_du_of_table[] = { { .compatible = "renesas,r9a07g043u-du", .data = &rzg2l_du_r9a07g043u_info }, { .compatible = "renesas,r9a07g044-du", .data = &rzg2l_du_r9a07g044_info }, + { .compatible = "renesas,r9a09g057-du", .data = &rzg2l_du_r9a09g057_info }, { /* sentinel */ } }; From patchwork Sun Mar 30 21:07:04 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Lad, Prabhakar" X-Patchwork-Id: 14033037 X-Patchwork-Delegate: kieran@bingham.xyz Received: from mail-wm1-f46.google.com (mail-wm1-f46.google.com [209.85.128.46]) (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 032501E3DCF; Sun, 30 Mar 2025 21:08:11 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.128.46 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1743368893; cv=none; b=VmpPfQ0kYnUv+XNqLY+MgHWhiicw+ImBssS2B/gM40yaHaUD74M+ljIxc+VhcEDAimcjfiCw9pPQYrci8ZRbXZGaEQLqMxXLTMEiuKTg/oa+xnU6ZqJcWG94wds9AM2FGH7GbuKO+i8eawFNXkyZ5zpgrWDUv3U7Np9c83aFLDM= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1743368893; c=relaxed/simple; bh=pUB80jcdw+SEt5UJdAEGsRQbvnGhM71RY61ujzFAxt0=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=RVerFk7+mkC2oB7Pemep1DrrY9Z9mpOu1S+ym8ZH6bgchDBPi2uhYty9lc3CB3YX/qtRir+7t8k0H0IZDvLbSxcX7LCJJQtfSA8XcvsMu5eFkeb38r8JISxvnoaJHA062ijVouGu8+TSgbSc/R6iZL1z6iK7si5ByykN8B+8BQs= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=eQLV5eiP; arc=none smtp.client-ip=209.85.128.46 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="eQLV5eiP" Received: by mail-wm1-f46.google.com with SMTP id 5b1f17b1804b1-43948021a45so38627525e9.1; Sun, 30 Mar 2025 14:08:11 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1743368890; x=1743973690; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=9dLdv4ZldCWKu7a6syiIE6FXAFQiZOOGUWYnODshxvg=; b=eQLV5eiPL4Ig67At4dNaoTLLfHIgJc+qujUczOUtHUrAilgDvOsc19ZA5zw5rjTeAS +5tCwe+rDOQw1c0h0mpMm2vFuR4RtULmB37dF7Lq5MhIpB77khIlHHLM2r9k5a8VyJVv iRKK3HpPPusgPA80maUedLPT3yWibQ2YFt2QXX8PzOJ2vhkYQAzZqid9iZHA4VjNSevH my6th7jKbNuvT2k9/AbgwfAXDY4JcxIBUXogSnBmpRRusHnLJlAjwVSR7+IybXj40wk0 22Oe9y5RCfeU7Vp0GrMBDIgElEfl8fhGDZhh+aelOlnZRDRj+NIzhOwYur+NNkpeUNTh bgEA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1743368890; x=1743973690; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=9dLdv4ZldCWKu7a6syiIE6FXAFQiZOOGUWYnODshxvg=; b=MsbbkZm0/CP3DOpUwWFFrntU0ncK8qJ4llfQbt/jMc0beYmvrFsD8Af2yoRr6MwRhH rIu+IUMf4/7v5X5qcSN0XG0Vkn7GyJ1+1u+FNgC5v0qTyDh/ZO077kzTmiO8dZBxAXt9 u1Fy+CUAt0euT0yYv93ePEn1hxQSl4zZFzP17YVsPE5aTZYjJJ/3rIuKuKV9/fP4OgBE +k1QMw+hcCmrzmQrOiY6Ab2XEX5syTsG5yh3ylxkbUwxTc7CBOirirxt/snsFvVb1eWN BEjAnbr4bidzYIj7DZIE1hSFMrmiMq+TKvdd54r99vUP4+kx6WV+zWwQATlyLUL3Azsr StBw== X-Forwarded-Encrypted: i=1; AJvYcCVjJSSyyfBrsbjFOltASzZO09xRMxaSzX8l1J8emlXlUioQ7IOnNWTAG73otKh2UsNOyyAzcAeTr8AKTQOtMwe+g+c=@vger.kernel.org, AJvYcCVuYYnsSzg5jMUYz12bGRtR3ipmGMdP5ZH6T2SxIiU5AZHqPUyfkNdEeUF+s+f5QmnqdBgI2jtECrAfEdAo@vger.kernel.org, AJvYcCWuoXFbvMIElhDFJKRP3+HBe1jtxng7vvJ4kdodWFYbvRIJG26rIzj2HkwOh3/3nONNHaBfMtkFlP8=@vger.kernel.org, AJvYcCXH53MVPncHIWJFWvqSAt2/xjeOmP6ifN8/dtytISXFcW1PIJ5TjS2aY0eZo67jZ7IQTIeWrZCXoR1a308=@vger.kernel.org X-Gm-Message-State: AOJu0YzXxpiZ0c7/5L7wtc7nyPFJ2nCWlR+P0B8UwSlMSmOb9Usocu4I YJyQUsjSScSCTfRua3Xf34T6150u+JFkyNQDJdh2Xp4r9Ir8s86m X-Gm-Gg: ASbGnct5BR/uR4/771Seag2981Y3bwy6LaFr7VUwmJHh3QfrNCBKCtQqSqEgoTykvzE bHl/Wwbw85QX+I0ThGDrv9Mmm7nnQBAgKBjFJvKOpPni0Lsy71FmyDafPUloa65xSD1z8hIJIfl giGdiU/XPctw9o9cw/oY879zrPGCy4C4gxYIi2EQp8G9cbt8vvqW6o5Q+pXV+nFSSejoG5j0hu7 GoA5S/eSMR1wdDQMlE6scxtxdz7akJ06HJeHc8VS5k29CwrHdl1MkpMj+BFVKCZjpqHLFNxwK5r xRpvD0oidqAQbGpLyK1cLr6Buz/1aZ45ShT7FaGiF/rlSbRZdHZUbmzc0x1IhtA+SjQ5/A== X-Google-Smtp-Source: AGHT+IFAPFwaUcZMgmo+j4Ii43YGNOsRxtJkgn4pcZP0N3XOIaRU8lEcRfQCd0g8rcOSNCN05e/YLQ== X-Received: by 2002:a05:600c:5489:b0:43c:fda5:41e9 with SMTP id 5b1f17b1804b1-43dbc419540mr59851395e9.31.1743368889889; Sun, 30 Mar 2025 14:08:09 -0700 (PDT) Received: from iku.Home ([2a06:5906:61b:2d00:8249:9390:e853:c628]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-43d91429c36sm69778175e9.0.2025.03.30.14.08.08 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 30 Mar 2025 14:08:09 -0700 (PDT) From: Prabhakar X-Google-Original-From: Prabhakar To: Geert Uytterhoeven , Andrzej Hajda , Neil Armstrong , Robert Foss , Laurent Pinchart , Jonas Karlman , Jernej Skrabec , David Airlie , Simona Vetter , Maarten Lankhorst , Maxime Ripard , Thomas Zimmermann , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Biju Das , Mauro Carvalho Chehab , Kieran Bingham , Stephen Boyd , Philipp Zabel Cc: devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, linux-renesas-soc@vger.kernel.org, linux-media@vger.kernel.org, linux-clk@vger.kernel.org, Prabhakar , Fabrizio Castro , Lad Prabhakar Subject: [PATCH 08/17] drm: renesas: rz-du: mipi_dsi: Add min check for VCLK range Date: Sun, 30 Mar 2025 22:07:04 +0100 Message-ID: <20250330210717.46080-9-prabhakar.mahadev-lad.rj@bp.renesas.com> X-Mailer: git-send-email 2.49.0 In-Reply-To: <20250330210717.46080-1-prabhakar.mahadev-lad.rj@bp.renesas.com> References: <20250330210717.46080-1-prabhakar.mahadev-lad.rj@bp.renesas.com> Precedence: bulk X-Mailing-List: linux-renesas-soc@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 From: Lad Prabhakar The VCLK range for Renesas RZ/G2L SoC is 148.5 MHz to 5.803 MHz. Add a minimum clock check in the mode_valid callback to ensure that the clock value does not fall below the valid range. Co-developed-by: Fabrizio Castro Signed-off-by: Fabrizio Castro Signed-off-by: Lad Prabhakar Reviewed-by: Biju Das --- drivers/gpu/drm/renesas/rz-du/rzg2l_mipi_dsi.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/drivers/gpu/drm/renesas/rz-du/rzg2l_mipi_dsi.c b/drivers/gpu/drm/renesas/rz-du/rzg2l_mipi_dsi.c index fa7a1ae22aa3..c6f60b7f203b 100644 --- a/drivers/gpu/drm/renesas/rz-du/rzg2l_mipi_dsi.c +++ b/drivers/gpu/drm/renesas/rz-du/rzg2l_mipi_dsi.c @@ -585,6 +585,9 @@ rzg2l_mipi_dsi_bridge_mode_valid(struct drm_bridge *bridge, if (mode->clock > 148500) return MODE_CLOCK_HIGH; + if (mode->clock < 5803) + return MODE_CLOCK_LOW; + return MODE_OK; } From patchwork Sun Mar 30 21:07:05 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Lad, Prabhakar" X-Patchwork-Id: 14033038 X-Patchwork-Delegate: kieran@bingham.xyz Received: from mail-wm1-f47.google.com (mail-wm1-f47.google.com [209.85.128.47]) (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 753821E47CC; Sun, 30 Mar 2025 21:08:13 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.128.47 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1743368895; cv=none; b=cfqqwakXu4wV1JPpp8QQfX164LNlCxerXC1fte8q9StPw5F0S6/DHVEMqeJngJ7A/qknQJwr6DOsjlQCbnhaOCgqRcilNZn8db2FibnhayucwxUzCFUwpkeTsemfm3CXTewzAlnmgFcPYQl35FeW6RvGgiXTdoSOiUa+UQ9+gHY= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1743368895; c=relaxed/simple; bh=YKgC+zpcSZVti9qYdSidphksILumJm0KABmDUV6Mvrs=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=HfT6aBop8Fc99BzLthEjbnqyXTAj99A/EEFt09rKziT1+XRyJV65oxnzCg8MglLXxCdtdTRxQMs7cI8VsoDhS9UOArk2kc3vhuk0MxPPXieDA5ESt7cfur4HhS9eQ3h73rBWr63dCAuPtDGUNujUgCtNcg/Ffdw7ZTDG/UoFgB0= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=VOf1X/ur; arc=none smtp.client-ip=209.85.128.47 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="VOf1X/ur" Received: by mail-wm1-f47.google.com with SMTP id 5b1f17b1804b1-43d0359b1fcso24306805e9.0; Sun, 30 Mar 2025 14:08:13 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1743368892; x=1743973692; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=kNJLghqN1mIY8gBZTth5tmRykFOjM9B4vy7KpwCmFEw=; b=VOf1X/urW0xCy6NQcyvoGMyWpibXEadZeBstxbj0Dql6pW6VbKQ6yi32mp6ZWS8tvg No7FyQh47z5W8SjK47tCzmbjXWwWIbCzQvTJpP+05Vg5VKWafc0PHxT6R3+Z6qqHU1k0 2pY/RFQEVyCsisGCvzarC0i9NmH84N/GmtqpWm5YophuOGN81d6ESPf+3iTIPg5ey/wS Buad14GOPUXY9oJPseJw+JpUtyrF9qNKjs3FpJOLnqNy8kCrLU6yHUjYQ4ylKua8zMRr 6KR2VsL2kNuVH8pnnaHCtvJ/higNovsIo3pe+UbQqjERozVtSWOqxFYQTy7bRfQKjTAV IxqQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1743368892; x=1743973692; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=kNJLghqN1mIY8gBZTth5tmRykFOjM9B4vy7KpwCmFEw=; b=BK0snACDQf3szKNd/7p/yQcgL18vubZERqHT2fVx8V8XOG5B8/u3A7qmaKAPnuS0s2 UO+Z+IN+td7+8AoseYKGkj401VDFJjWFR1Y7MRu8H7xKUqFkKxRHWhf8a5JIMolTcczS nRBHHxZ5C3hq51eXhW8pkdmBk9eGG7IvbCVCgQ9/TVUPrz+jzspYV7vZhNx+OIJKyFaL tTr1DJ50pGCCwa/EIiS2L3GAH1ujyw+kJ8McMuH+mBy/T8zDhIF3vpAoVPtgASEfJ+kI lbuJPc2xDFtwE9+ZUrXey8W3bkNEO7SPaNgJ1yH9Ci9Jt/HHNZLpUxVCVBAC1WPZkGYY 4CWg== X-Forwarded-Encrypted: i=1; AJvYcCWBgYG63u2xQZ7/IJuQxW51vjJRpC02PZKfYcF0LRG/PjuHqLQ0YQKwOr9CHckA8GhnD4z6xk+zbN79dQbA@vger.kernel.org, AJvYcCWEhFivPpMmpp7oaXNVDFocWDh39Q+0D1qNWLJ2iu9zm/z6NSIxuOLFyWUVFhcaH74yayxk9+PoCAd6hao=@vger.kernel.org, AJvYcCWs02DVR8v6CtQbnm+MorJS+37yN/V72a1b3YaVBcQLBi+t66uCSNvrOOPIudsUeS/vwaAA2kVkyJw=@vger.kernel.org, AJvYcCXMfBjrsi2stmxmxiRfjY3iyhMXu5nZAsWvvCQWI182/RyAbaS9f+C82m5uvaWquWO9QnE3uQLurqhaUl2BoDmZU74=@vger.kernel.org X-Gm-Message-State: AOJu0YzGH/jUChOJvUXMIPccuyfeGIatn4zGrreaLSparVIeCRVmWXQZ rxMlvnBYPX36AMeU2U8LzdYv02FGJN3wx1A+DgYh4B6jSPYNufR0 X-Gm-Gg: ASbGnctEo4sZ05/AhgaTBhH9yM9Oakpn+4K5DDZF8fXxKZxrElYi4e4q9De7gGx74QZ JVmmAAUsLAPihVM4fDzigCTvbMdN1ICeYwtk3SYyWZvc18BzJ2XHsn988sk9uh84vBkXEtDOAwl 5tiKAmVh6pLK8RWMoM+rqDB6diHPqJVWWBAivDywXaRSewAkJXHx2FSy/kT7NX5hO0ge3Zx7WGM /MyEsGeq7QmkCpz5vaYDac2CpYk6lCeUOnOjx1+FEbW9SLsB5agKnJuyB18CQ8Z4a3OVuBE9jCo 9x2vcg2+BvlxUfVVOHCuXBeHxZ6l4QSEqhpAkCfNVm9ChpiNeUs9l9szPrs0uO/uLKVc0g== X-Google-Smtp-Source: AGHT+IHRCWNdlr1N97JeMQhY/V9AuUUxbx6AHheyyzxTEXHJff9QfGN9BuyicTXtDKQfE+20Uuxn3w== X-Received: by 2002:a05:600c:6053:b0:439:91c7:895a with SMTP id 5b1f17b1804b1-43d9105bb78mr89122125e9.7.1743368891719; Sun, 30 Mar 2025 14:08:11 -0700 (PDT) Received: from iku.Home ([2a06:5906:61b:2d00:8249:9390:e853:c628]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-43d91429c36sm69778175e9.0.2025.03.30.14.08.10 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 30 Mar 2025 14:08:10 -0700 (PDT) From: Prabhakar X-Google-Original-From: Prabhakar To: Geert Uytterhoeven , Andrzej Hajda , Neil Armstrong , Robert Foss , Laurent Pinchart , Jonas Karlman , Jernej Skrabec , David Airlie , Simona Vetter , Maarten Lankhorst , Maxime Ripard , Thomas Zimmermann , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Biju Das , Mauro Carvalho Chehab , Kieran Bingham , Stephen Boyd , Philipp Zabel Cc: devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, linux-renesas-soc@vger.kernel.org, linux-media@vger.kernel.org, linux-clk@vger.kernel.org, Prabhakar , Fabrizio Castro , Lad Prabhakar Subject: [PATCH 09/17] drm: renesas: rz-du: mipi_dsi: Simplify HSFREQ calculation Date: Sun, 30 Mar 2025 22:07:05 +0100 Message-ID: <20250330210717.46080-10-prabhakar.mahadev-lad.rj@bp.renesas.com> X-Mailer: git-send-email 2.49.0 In-Reply-To: <20250330210717.46080-1-prabhakar.mahadev-lad.rj@bp.renesas.com> References: <20250330210717.46080-1-prabhakar.mahadev-lad.rj@bp.renesas.com> Precedence: bulk X-Mailing-List: linux-renesas-soc@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 From: Lad Prabhakar Simplify the high-speed clock frequency (HSFREQ) calculation by removing the redundant multiplication and division by 8. The updated equation: hsfreq = (mode->clock * bpp) / (dsi->lanes); produces the same result while improving readability and clarity. Additionally, update the comment to clarify the relationship between HS clock bit frequency, HS byte clock frequency, and HSFREQ. Signed-off-by: Lad Prabhakar Reviewed-by: Biju Das --- drivers/gpu/drm/renesas/rz-du/rzg2l_mipi_dsi.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/drivers/gpu/drm/renesas/rz-du/rzg2l_mipi_dsi.c b/drivers/gpu/drm/renesas/rz-du/rzg2l_mipi_dsi.c index c6f60b7f203b..746f82442c01 100644 --- a/drivers/gpu/drm/renesas/rz-du/rzg2l_mipi_dsi.c +++ b/drivers/gpu/drm/renesas/rz-du/rzg2l_mipi_dsi.c @@ -277,10 +277,10 @@ static int rzg2l_mipi_dsi_startup(struct rzg2l_mipi_dsi *dsi, * hsclk: DSI HS Byte clock frequency (Hz) * lanes: number of data lanes * - * hsclk(bit) = hsclk(byte) * 8 + * hsclk(bit) = hsclk(byte) * 8 = hsfreq */ bpp = mipi_dsi_pixel_format_to_bpp(dsi->format); - hsfreq = (mode->clock * bpp * 8) / (8 * dsi->lanes); + hsfreq = (mode->clock * bpp) / dsi->lanes; ret = pm_runtime_resume_and_get(dsi->dev); if (ret < 0) From patchwork Sun Mar 30 21:07:06 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Lad, Prabhakar" X-Patchwork-Id: 14033039 X-Patchwork-Delegate: kieran@bingham.xyz Received: from mail-wr1-f54.google.com (mail-wr1-f54.google.com [209.85.221.54]) (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 6B3371E5718; Sun, 30 Mar 2025 21:08:15 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.221.54 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1743368897; cv=none; b=qsPrsU5mqXZsiIvkd05IK8XEuIJyOm/Y4P5CXvcuYAG3AWs7a/QqSZZZO9/qbKi3hQtcEIARuReCxK9c17505t07X7DdmNRmUVY1Pkx2rPLCHKDPdO2nX8xDq7ySXngLflaLmIeVK/UF0bqqWc0bJjcrvGU07JGtox3liECUXsM= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1743368897; c=relaxed/simple; bh=Yuu7EcI0Z8OztFCQ9CzecHKvzg4QvaUN18KPhtqSLQg=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=cdrsDxdJdoF9Xmx22BRiU3rh/zqT6zNuRUh4pqaXMMEc3Y2Ks0u9vhFWywyaqzHhAQfFU8QNDtFrB1Z2P33Mniv+02MYRezFLzitnEA3cPPwHKmKOOrWirNMmoDfwYMp2DmCJoftlLKy0vf6F/faYSlL84RoBAEk1yeEnW5q+ts= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=Vl7geLDJ; arc=none smtp.client-ip=209.85.221.54 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="Vl7geLDJ" Received: by mail-wr1-f54.google.com with SMTP id ffacd0b85a97d-399744f74e9so2529605f8f.1; Sun, 30 Mar 2025 14:08:15 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1743368894; x=1743973694; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=FDRRpWKz/Tp2Qssm7SKBOmwPw0YztrDOdZ3gIrdbwAw=; b=Vl7geLDJzPWA2CE+yM5DRnDaiBzPjoXd/4P1jYLOTQCcrpEiWrtcJrx5USE05iuC9/ +f0PxGNmieW8pDloqOLPfH8H2i76etctQHbvpMX0edZ9KdzKp0kDbn44R/sS+xFGuGN+ 6zJsIHJveO7j0fSwL+rrodEfed6LG/JsclXEAdCf4cJtik3dx+TfolSz3FjPNMC0Kvgz J7ipVs+iucs1q/TPeqjK7JUgaym9K3Byd3eaPlOb7uf9Ba18+7XFoALedRdK13NXSn1z HPoc9HTig/Ev6XzK4xFW5rR+ypKb8461T8QX+3cOA2LcE+uJMoIZBkD08dkYfmfvLZdi 4u2Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1743368894; x=1743973694; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=FDRRpWKz/Tp2Qssm7SKBOmwPw0YztrDOdZ3gIrdbwAw=; b=r6CqT+bVkpI1ISelj4vUmXyn6xP3AXdQAFm2pO7phVc/AO9zA7mGFoBFJ4fjzzFk+L 7Gr+sv8GAY42B1I1cG+GXrhjbDYRu4wO+ahs7gfWJ/SuF++faxXlA5KJCerzuNr3s4b/ hJGH8lFgbfOYgcBxUeudzm6g6ar7Mzy4ZiLQWe43Wub8P0tBuJz4q/X3NxjTZ/x/XoKZ uU0LOuzBDXpo53oJnKdYqbrauTsbyzKvy24tZjyl/o5YU1wiQlfoQF5af52Hsoi54OwF LROTFrOvabuXD+fFuNgtIYy8kmgQ+wK4FYaN4ROPSoPMTQqqPAe3Xj50cZ8mvq03YXb9 weWQ== X-Forwarded-Encrypted: i=1; AJvYcCUwdNLqSR6yOmJVj/vnHM90JM5/TW6xP1MhsPfgp2NpOaGZBRFF+EVZg50RIXqpStGuOjufFCd7UusLxmA=@vger.kernel.org, AJvYcCW/x1YtcU28c+Inejgp3kPyIICM755KCWK1JSbCSq/sg/N7AIw8P9PCk1rvce/XmNL6bspxZnv0Jgc=@vger.kernel.org, AJvYcCW54/I77rGPvk5o4D1JuTiykAGzAQ5asu8Pv9yzGFl7slcGBtcS8jMJ9B6Q6zkHCVBDXF7W30dVtQl533q0hNw1oBc=@vger.kernel.org, AJvYcCX1p8Gwf1DppUTZecxjzD5wnqHPhWkhpu/Jvmn5xRQrqriugeyvg+DUYKJd0gAAypw9r5NEVNhXWe51GK//@vger.kernel.org X-Gm-Message-State: AOJu0YyKvRVDo1YWuxPNueHQxKUj9abcuyPnG92HkmFJCIoht/O5qY7f 1b7u4htz9Z2ij1ZwawSLH66NHIU0GMvUbtgGlvC18qjBcvH/GLT7 X-Gm-Gg: ASbGncsnNSXTea9Oi7jgUm0f2UPYBYskJFftMQk91CaLQEGKKm8BY0gTy6dW4ZmZP9F /zRxjIv6tMFyUYAh8zdXp56kAXStVfNPxy4swk6GoUbjxfHy0GfPYetWd7oZO1CUwJlqn2w+TUx kfIjpVDUvbR/9NVvr0J5SxBY3CkUA8cD3x5JEDwEYrWk9DkL3adpEIVZ40sPRfQjgH/pBocmggN je/SXKIBGIRKnHoYJqNehWJ93EEzqwQQdOAfcYNJjVEEFEuGIXjUF15GCt9czyVa88qIeeAdPDP cQS1X2dCH88qJYi8EeQanuuGnen8k1lK83mscTxqa8MRWaLdV8sNiOkYqCJlc331El/frQ== X-Google-Smtp-Source: AGHT+IGAmb19RTswNLo6awQFTPPrZhGYowK/M/WktoMbi+P5JrRB9bYiaALFcRETjA+/vE6XZRBuDw== X-Received: by 2002:a05:6000:40e1:b0:391:49f6:dad4 with SMTP id ffacd0b85a97d-39c12113977mr4586276f8f.41.1743368893643; Sun, 30 Mar 2025 14:08:13 -0700 (PDT) Received: from iku.Home ([2a06:5906:61b:2d00:8249:9390:e853:c628]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-43d91429c36sm69778175e9.0.2025.03.30.14.08.11 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 30 Mar 2025 14:08:13 -0700 (PDT) From: Prabhakar X-Google-Original-From: Prabhakar To: Geert Uytterhoeven , Andrzej Hajda , Neil Armstrong , Robert Foss , Laurent Pinchart , Jonas Karlman , Jernej Skrabec , David Airlie , Simona Vetter , Maarten Lankhorst , Maxime Ripard , Thomas Zimmermann , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Biju Das , Mauro Carvalho Chehab , Kieran Bingham , Stephen Boyd , Philipp Zabel Cc: devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, linux-renesas-soc@vger.kernel.org, linux-media@vger.kernel.org, linux-clk@vger.kernel.org, Prabhakar , Fabrizio Castro , Lad Prabhakar Subject: [PATCH 10/17] drm: renesas: rz-du: mipi_dsi: Use VCLK for HSFREQ calculation Date: Sun, 30 Mar 2025 22:07:06 +0100 Message-ID: <20250330210717.46080-11-prabhakar.mahadev-lad.rj@bp.renesas.com> X-Mailer: git-send-email 2.49.0 In-Reply-To: <20250330210717.46080-1-prabhakar.mahadev-lad.rj@bp.renesas.com> References: <20250330210717.46080-1-prabhakar.mahadev-lad.rj@bp.renesas.com> Precedence: bulk X-Mailing-List: linux-renesas-soc@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 From: Lad Prabhakar Update the RZ/G2L MIPI DSI driver to calculate HSFREQ using the actual VCLK rate instead of the mode clock. The relationship between HSCLK and VCLK is: vclk * bpp <= hsclk * 8 * lanes Retrieve the VCLK rate using `clk_get_rate(dsi->vclk)`, ensuring that HSFREQ accurately reflects the clock rate set in hardware, leading to better precision in data transmission. Additionally, use `DIV_ROUND_CLOSEST_ULL` for a more precise division when computing `hsfreq`. Also, update unit conversions to use correct scaling factors for better clarity and correctness. Since `clk_get_rate()` returns the clock rate in Hz, update the HSFREQ threshold comparisons to use Hz instead of kHz to ensure correct behavior. Co-developed-by: Fabrizio Castro Signed-off-by: Fabrizio Castro Signed-off-by: Lad Prabhakar --- .../gpu/drm/renesas/rz-du/rzg2l_mipi_dsi.c | 27 ++++++++++--------- 1 file changed, 15 insertions(+), 12 deletions(-) diff --git a/drivers/gpu/drm/renesas/rz-du/rzg2l_mipi_dsi.c b/drivers/gpu/drm/renesas/rz-du/rzg2l_mipi_dsi.c index 746f82442c01..e0379f099659 100644 --- a/drivers/gpu/drm/renesas/rz-du/rzg2l_mipi_dsi.c +++ b/drivers/gpu/drm/renesas/rz-du/rzg2l_mipi_dsi.c @@ -8,6 +8,7 @@ #include #include #include +#include #include #include #include @@ -15,6 +16,7 @@ #include #include #include +#include #include #include @@ -199,7 +201,7 @@ static int rzg2l_mipi_dsi_dphy_init(struct rzg2l_mipi_dsi *dsi, /* All DSI global operation timings are set with recommended setting */ for (i = 0; i < ARRAY_SIZE(rzg2l_mipi_dsi_global_timings); ++i) { dphy_timings = &rzg2l_mipi_dsi_global_timings[i]; - if (hsfreq <= dphy_timings->hsfreq_max) + if (hsfreq <= (dphy_timings->hsfreq_max * KILO)) break; } @@ -258,7 +260,7 @@ static void rzg2l_mipi_dsi_dphy_exit(struct rzg2l_mipi_dsi *dsi) static int rzg2l_mipi_dsi_startup(struct rzg2l_mipi_dsi *dsi, const struct drm_display_mode *mode) { - unsigned long hsfreq; + unsigned long hsfreq, vclk_rate; unsigned int bpp; u32 txsetr; u32 clstptsetr; @@ -269,6 +271,12 @@ static int rzg2l_mipi_dsi_startup(struct rzg2l_mipi_dsi *dsi, u32 golpbkt; int ret; + ret = pm_runtime_resume_and_get(dsi->dev); + if (ret < 0) + return ret; + + clk_set_rate(dsi->vclk, mode->clock * KILO); + /* * Relationship between hsclk and vclk must follow * vclk * bpp = hsclk * 8 * lanes @@ -280,13 +288,8 @@ static int rzg2l_mipi_dsi_startup(struct rzg2l_mipi_dsi *dsi, * hsclk(bit) = hsclk(byte) * 8 = hsfreq */ bpp = mipi_dsi_pixel_format_to_bpp(dsi->format); - hsfreq = (mode->clock * bpp) / dsi->lanes; - - ret = pm_runtime_resume_and_get(dsi->dev); - if (ret < 0) - return ret; - - clk_set_rate(dsi->vclk, mode->clock * 1000); + vclk_rate = clk_get_rate(dsi->vclk); + hsfreq = DIV_ROUND_CLOSEST_ULL(vclk_rate * bpp, dsi->lanes); ret = rzg2l_mipi_dsi_dphy_init(dsi, hsfreq); if (ret < 0) @@ -304,12 +307,12 @@ static int rzg2l_mipi_dsi_startup(struct rzg2l_mipi_dsi *dsi, * - data lanes: maximum 4 lanes * Therefore maximum hsclk will be 891 Mbps. */ - if (hsfreq > 445500) { + if (hsfreq > 445500000) { clkkpt = 12; clkbfht = 15; clkstpt = 48; golpbkt = 75; - } else if (hsfreq > 250000) { + } else if (hsfreq > 250000000) { clkkpt = 7; clkbfht = 8; clkstpt = 27; @@ -754,7 +757,7 @@ static int rzg2l_mipi_dsi_probe(struct platform_device *pdev) * mode->clock and format are not available. So initialize DPHY with * timing parameters for 80Mbps. */ - ret = rzg2l_mipi_dsi_dphy_init(dsi, 80000); + ret = rzg2l_mipi_dsi_dphy_init(dsi, 80000000); if (ret < 0) goto err_phy; From patchwork Sun Mar 30 21:07:07 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Lad, Prabhakar" X-Patchwork-Id: 14033040 X-Patchwork-Delegate: kieran@bingham.xyz Received: from mail-wm1-f43.google.com (mail-wm1-f43.google.com [209.85.128.43]) (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 EC2FC1DEFE9; Sun, 30 Mar 2025 21:08:17 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.128.43 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1743368900; cv=none; b=Y6tB4RrXXHWbyxqhVLrmuOgLzHY43POyV3fAcTl5W2F+w544+VvsfbuSxVHLsEGxqsjZaEWEBUXy+f2rgXdhsxlILd0P5M5RdxflAxPlGwfUC80AGXr5rPB4wkm5T9/H7kXL33l/gou2UHSTX9eG0mE6LlMuSlaBQw1zQ0sfUMY= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1743368900; c=relaxed/simple; bh=JROumQIMuL2tEIbg+q4tZh6YElwxYECYEYCtgx6QE8Y=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=K9IfvhtMK8PMX6XzVHJ4EL51/7Rny+WmBs/eNMFzjxf2iR4OyOPv5dZ/M0IjfLo7FJOfaTo3MxGOpdOo/bP7/RvFPIsw4TYxwb2/p52RwlITMgOtnmJbGqVxITSNzd6Zx3x1Op69b7+Latf9u+kXAPRJ4vJIDbqzqTCj476fYjs= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=EmhRb7u/; arc=none smtp.client-ip=209.85.128.43 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="EmhRb7u/" Received: by mail-wm1-f43.google.com with SMTP id 5b1f17b1804b1-43948021a45so38627915e9.1; Sun, 30 Mar 2025 14:08:17 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1743368896; x=1743973696; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=DQHFR59dkqsOPoXxQiwxuI2Fxob9eQ6awblsa+mJ+JE=; b=EmhRb7u/r78dvn+TfKPcOiOuJ+HOsNUPZevRl10U9PTUc6fBXr3HFl4aMCH6Ne/yJM ub4on2ZVpCBKghiWTzD5WdIuAKcnjeoaXHXIwv7KLV+dMTEZxbSMJqBAGDbAZci8Ofhi K1LCwez86JNVSbJaqpki0FWK1Hk5550AaNU3uUXGE5bJUnz+fiviza6foDdJRGs/10Ds xt+2B/k+b0IM9sZB58aqu2EATU5AcJDKJs8nAH+YQkX3Y46p/39VODk3UYjMp+v1Rg2K dnucfDOP1or2poZ9A85UVMdCbBq6EAOz0wljOFa73iF0jCjgrBg+5AYO+gM1efBHxmEF Op9Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1743368896; x=1743973696; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=DQHFR59dkqsOPoXxQiwxuI2Fxob9eQ6awblsa+mJ+JE=; b=lBHt+hrjn7nHULWtfw3hPJ5wecLuDy/kmXK6nIaA4SGJXkK1fvw0gJ2Hpz8op17th6 0bH92x1ilt3Qt5iE60otgrrTG6jocz2H3/a0ep7p7XfCnWN5JLV1jH71ok0cULsxSKp8 eyJSimWst8X+MeGJx40ZwZZ8ThCoZZsAxFiu58jQ07ny+EiLqQKEj15cSXO4Z6LtRyeq NVS1KGX+BeGSlBtsmVz40gqU6yLDXWAwEPCDwFH+D31SMK4GK0XqHm/1HRCXaNPR4DOL MfUngilZUzkCNJW0Fr6BS9/nmUQzeo3ou/71BiC1XqhEUPY9czFOA4ppwtH94UdkyYX6 ZkSQ== X-Forwarded-Encrypted: i=1; AJvYcCUP9BPivKuPXxM2MEAsFBhnC/zXO25eloI1HT6zXZmfUvZsJzbAE2ZUBMmpakA9LmsUPM53jNh3t7o=@vger.kernel.org, AJvYcCUhOqeq5LpxxLxvG2faNY2bURgr2VU8UilKXPRet3iGWr12OfeyNG/oO9KkUZuVZhG4XPY5STtj+XlYNDAy4O1q1l4=@vger.kernel.org, AJvYcCUrMvAerGCvDfOfqanKkfO7RUv7HbRUfo09GzbaGc0HX5ESIHPF5gz3ZHRa2iM+lV5x0lpVS/q7VcYLP3s=@vger.kernel.org, AJvYcCWYE/gw7y48mcUY5u2OxdqjekTDhJUDYYqwLSD4kD4FDpbXPS15AUWMsyayIwSpN6XfuX+/4qZtfAZFeoQq@vger.kernel.org X-Gm-Message-State: AOJu0YzMZ24mqr35v3WlYUCOFl8npXziWjDlzqIoRLPMsoXY5a0AuKZS 6aLOylefxli/XpeKz39TroCeZOVRMiW1Gd++EC+TPmAbX11TKru2 X-Gm-Gg: ASbGncsZQJtel2ywe9lC/ir2DEKeP927R5yWsPyT/yhmBKK8fSYpaw/RaSxwFFvbMIk Dds8FidhJJ9KoxOmbCWEocaq45Tej8idmELuu1Akm09phpVQ5EaFVvzZS7aTZul8nVXBaZZUDq4 G/WycMHDAMzV1cwWQpqxNxtWWSsK3GJODWhAeXto0lh+9u1jkw2/bgks+0hhkvuJ4eu9su4xw3r xYhAYfNhZxiUWzD6TBerN3AYWLeR7GK1UOu/ZSz513TJvaNmJ8hkxsAoiKF5XaWQzSpwyosyHTW f/Zv0YTxC40Mow3E+uJSYb7dwRTi43B7rpwHn+zqDAsgkWt6unJNi+NlfAbNN5ykFrRJZA== X-Google-Smtp-Source: AGHT+IEks5Zd0aeJxmur0QRpEFpCL0qYNvoBm4U/H0V1UQjB+T7C1DuggC5cOUnZrF3aLLkGv6doHQ== X-Received: by 2002:a05:600c:3d8e:b0:43d:4e9:27fe with SMTP id 5b1f17b1804b1-43db6223fb0mr61444535e9.8.1743368895509; Sun, 30 Mar 2025 14:08:15 -0700 (PDT) Received: from iku.Home ([2a06:5906:61b:2d00:8249:9390:e853:c628]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-43d91429c36sm69778175e9.0.2025.03.30.14.08.13 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 30 Mar 2025 14:08:14 -0700 (PDT) From: Prabhakar X-Google-Original-From: Prabhakar To: Geert Uytterhoeven , Andrzej Hajda , Neil Armstrong , Robert Foss , Laurent Pinchart , Jonas Karlman , Jernej Skrabec , David Airlie , Simona Vetter , Maarten Lankhorst , Maxime Ripard , Thomas Zimmermann , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Biju Das , Mauro Carvalho Chehab , Kieran Bingham , Stephen Boyd , Philipp Zabel Cc: devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, linux-renesas-soc@vger.kernel.org, linux-media@vger.kernel.org, linux-clk@vger.kernel.org, Prabhakar , Fabrizio Castro , Lad Prabhakar Subject: [PATCH 11/17] drm: renesas: rz-du: mipi_dsi: Add OF data support Date: Sun, 30 Mar 2025 22:07:07 +0100 Message-ID: <20250330210717.46080-12-prabhakar.mahadev-lad.rj@bp.renesas.com> X-Mailer: git-send-email 2.49.0 In-Reply-To: <20250330210717.46080-1-prabhakar.mahadev-lad.rj@bp.renesas.com> References: <20250330210717.46080-1-prabhakar.mahadev-lad.rj@bp.renesas.com> Precedence: bulk X-Mailing-List: linux-renesas-soc@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 From: Lad Prabhakar In preparation for adding support for the Renesas RZ/V2H(P) SoC, this patch introduces a mechanism to pass SoC-specific information via OF data in the DSI driver. This enables the driver to adapt dynamically to various SoC-specific requirements without hardcoding configurations. The MIPI DSI interface on the RZ/V2H(P) SoC is nearly identical to the one on the RZ/G2L SoC. While the LINK registers are shared between the two SoCs, the D-PHY registers differ. Also the VCLK range differs on both these SoCs. To accommodate these differences `struct rzg2l_mipi_dsi_hw_info` is introduced and as now passed as OF data. These changes lay the groundwork for the upcoming RZ/V2H(P) SoC support by allowing SoC-specific data to be passed through OF. Co-developed-by: Fabrizio Castro Signed-off-by: Fabrizio Castro Signed-off-by: Lad Prabhakar --- .../gpu/drm/renesas/rz-du/rzg2l_mipi_dsi.c | 66 ++++++++++++++----- .../drm/renesas/rz-du/rzg2l_mipi_dsi_regs.h | 2 - 2 files changed, 49 insertions(+), 19 deletions(-) diff --git a/drivers/gpu/drm/renesas/rz-du/rzg2l_mipi_dsi.c b/drivers/gpu/drm/renesas/rz-du/rzg2l_mipi_dsi.c index e0379f099659..44b95082b29c 100644 --- a/drivers/gpu/drm/renesas/rz-du/rzg2l_mipi_dsi.c +++ b/drivers/gpu/drm/renesas/rz-du/rzg2l_mipi_dsi.c @@ -28,10 +28,24 @@ #include "rzg2l_mipi_dsi_regs.h" +struct rzg2l_mipi_dsi; + +struct rzg2l_mipi_dsi_hw_info { + int (*dphy_init)(struct rzg2l_mipi_dsi *dsi, unsigned long hsfreq); + void (*dphy_exit)(struct rzg2l_mipi_dsi *dsi); + u32 phy_reg_offset; + u32 link_reg_offset; + unsigned long max_dclk; + unsigned long min_dclk; + bool has_dphy_rstc; +}; + struct rzg2l_mipi_dsi { struct device *dev; void __iomem *mmio; + const struct rzg2l_mipi_dsi_hw_info *info; + struct reset_control *rstc; struct reset_control *arstc; struct reset_control *prstc; @@ -164,22 +178,22 @@ static const struct rzg2l_mipi_dsi_timings rzg2l_mipi_dsi_global_timings[] = { static void rzg2l_mipi_dsi_phy_write(struct rzg2l_mipi_dsi *dsi, u32 reg, u32 data) { - iowrite32(data, dsi->mmio + reg); + iowrite32(data, dsi->mmio + dsi->info->phy_reg_offset + reg); } static void rzg2l_mipi_dsi_link_write(struct rzg2l_mipi_dsi *dsi, u32 reg, u32 data) { - iowrite32(data, dsi->mmio + LINK_REG_OFFSET + reg); + iowrite32(data, dsi->mmio + dsi->info->link_reg_offset + reg); } static u32 rzg2l_mipi_dsi_phy_read(struct rzg2l_mipi_dsi *dsi, u32 reg) { - return ioread32(dsi->mmio + reg); + return ioread32(dsi->mmio + dsi->info->phy_reg_offset + reg); } static u32 rzg2l_mipi_dsi_link_read(struct rzg2l_mipi_dsi *dsi, u32 reg) { - return ioread32(dsi->mmio + LINK_REG_OFFSET + reg); + return ioread32(dsi->mmio + dsi->info->link_reg_offset + reg); } /* ----------------------------------------------------------------------------- @@ -291,7 +305,7 @@ static int rzg2l_mipi_dsi_startup(struct rzg2l_mipi_dsi *dsi, vclk_rate = clk_get_rate(dsi->vclk); hsfreq = DIV_ROUND_CLOSEST_ULL(vclk_rate * bpp, dsi->lanes); - ret = rzg2l_mipi_dsi_dphy_init(dsi, hsfreq); + ret = dsi->info->dphy_init(dsi, hsfreq); if (ret < 0) goto err_phy; @@ -334,7 +348,7 @@ static int rzg2l_mipi_dsi_startup(struct rzg2l_mipi_dsi *dsi, return 0; err_phy: - rzg2l_mipi_dsi_dphy_exit(dsi); + dsi->info->dphy_exit(dsi); pm_runtime_put(dsi->dev); return ret; @@ -342,7 +356,7 @@ static int rzg2l_mipi_dsi_startup(struct rzg2l_mipi_dsi *dsi, static void rzg2l_mipi_dsi_stop(struct rzg2l_mipi_dsi *dsi) { - rzg2l_mipi_dsi_dphy_exit(dsi); + dsi->info->dphy_exit(dsi); pm_runtime_put(dsi->dev); } @@ -585,10 +599,12 @@ rzg2l_mipi_dsi_bridge_mode_valid(struct drm_bridge *bridge, const struct drm_display_info *info, const struct drm_display_mode *mode) { - if (mode->clock > 148500) + struct rzg2l_mipi_dsi *dsi = bridge_to_rzg2l_mipi_dsi(bridge); + + if (mode->clock > dsi->info->max_dclk) return MODE_CLOCK_HIGH; - if (mode->clock < 5803) + if (mode->clock < dsi->info->min_dclk) return MODE_CLOCK_LOW; return MODE_OK; @@ -714,6 +730,11 @@ static int rzg2l_mipi_dsi_probe(struct platform_device *pdev) platform_set_drvdata(pdev, dsi); dsi->dev = &pdev->dev; + dsi->info = of_device_get_match_data(&pdev->dev); + if (!dsi->info) + return dev_err_probe(dsi->dev, -ENODEV, + "missing data info\n"); + ret = drm_of_get_data_lanes_count_ep(dsi->dev->of_node, 1, 0, 1, 4); if (ret < 0) return dev_err_probe(dsi->dev, ret, @@ -729,10 +750,12 @@ static int rzg2l_mipi_dsi_probe(struct platform_device *pdev) if (IS_ERR(dsi->vclk)) return PTR_ERR(dsi->vclk); - dsi->rstc = devm_reset_control_get_exclusive(dsi->dev, "rst"); - if (IS_ERR(dsi->rstc)) - return dev_err_probe(dsi->dev, PTR_ERR(dsi->rstc), - "failed to get rst\n"); + if (dsi->info->has_dphy_rstc) { + dsi->rstc = devm_reset_control_get_exclusive(dsi->dev, "rst"); + if (IS_ERR(dsi->rstc)) + return dev_err_probe(dsi->dev, PTR_ERR(dsi->rstc), + "failed to get rst\n"); + } dsi->arstc = devm_reset_control_get_exclusive(dsi->dev, "arst"); if (IS_ERR(dsi->arstc)) @@ -757,13 +780,13 @@ static int rzg2l_mipi_dsi_probe(struct platform_device *pdev) * mode->clock and format are not available. So initialize DPHY with * timing parameters for 80Mbps. */ - ret = rzg2l_mipi_dsi_dphy_init(dsi, 80000000); + ret = dsi->info->dphy_init(dsi, 80000000); if (ret < 0) goto err_phy; txsetr = rzg2l_mipi_dsi_link_read(dsi, TXSETR); dsi->num_data_lanes = min(((txsetr >> 16) & 3) + 1, num_data_lanes); - rzg2l_mipi_dsi_dphy_exit(dsi); + dsi->info->dphy_exit(dsi); pm_runtime_put(dsi->dev); /* Initialize the DRM bridge. */ @@ -780,7 +803,7 @@ static int rzg2l_mipi_dsi_probe(struct platform_device *pdev) return 0; err_phy: - rzg2l_mipi_dsi_dphy_exit(dsi); + dsi->info->dphy_exit(dsi); pm_runtime_put(dsi->dev); err_pm_disable: pm_runtime_disable(dsi->dev); @@ -795,8 +818,17 @@ static void rzg2l_mipi_dsi_remove(struct platform_device *pdev) pm_runtime_disable(&pdev->dev); } +static const struct rzg2l_mipi_dsi_hw_info rzg2l_mipi_dsi_info = { + .dphy_init = rzg2l_mipi_dsi_dphy_init, + .dphy_exit = rzg2l_mipi_dsi_dphy_exit, + .has_dphy_rstc = true, + .link_reg_offset = 0x10000, + .max_dclk = 148500, + .min_dclk = 5803, +}; + static const struct of_device_id rzg2l_mipi_dsi_of_table[] = { - { .compatible = "renesas,rzg2l-mipi-dsi" }, + { .compatible = "renesas,rzg2l-mipi-dsi", .data = &rzg2l_mipi_dsi_info, }, { /* sentinel */ } }; diff --git a/drivers/gpu/drm/renesas/rz-du/rzg2l_mipi_dsi_regs.h b/drivers/gpu/drm/renesas/rz-du/rzg2l_mipi_dsi_regs.h index 1dbc16ec64a4..16efe4dc59f4 100644 --- a/drivers/gpu/drm/renesas/rz-du/rzg2l_mipi_dsi_regs.h +++ b/drivers/gpu/drm/renesas/rz-du/rzg2l_mipi_dsi_regs.h @@ -41,8 +41,6 @@ #define DSIDPHYTIM3_THS_ZERO(x) ((x) << 0) /* --------------------------------------------------------*/ -/* Link Registers */ -#define LINK_REG_OFFSET 0x10000 /* Link Status Register */ #define LINKSR 0x10 From patchwork Sun Mar 30 21:07:08 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Lad, Prabhakar" X-Patchwork-Id: 14033041 X-Patchwork-Delegate: kieran@bingham.xyz Received: from mail-wr1-f50.google.com (mail-wr1-f50.google.com [209.85.221.50]) (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 F24BD1E7C16; Sun, 30 Mar 2025 21:08:18 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.221.50 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1743368901; cv=none; b=XaFRCurGdHBZ+RevQHHIlJCRfGSg1rQKTg0gqdIZageOof/pod1CplN0thQu7er02lOqqeuyJsnsvo97LEKCtBBhvWnB3DTxN7if6RilpLiIs2yNIEFXik97Sarqsv6yw+rHIcffFfsDkWfRZdXF5Ft+ir4khNsW+xoN9JqP55Y= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1743368901; c=relaxed/simple; bh=MsrZr3jL026KNCW7PyRhg6lj5ZoZkgVtJKY/yobQsoE=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=nfqTl7NEIKLYz5tffZBYOgPQX9rjB2pSgX8IJ4ynC2oSVwUCz/sCEOrBbAW4dshfnuQyB5zqzpTLVW8Kh4kqwLdcAJPG1R5I9o20Hw+Nz7ZedqM+XpAaplk5JmCfe8nM5sJRbMHLFM8a/RaxdTsVy05hCqGuFBrw+VRHyN/Gt5s= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=UpvbY0xe; arc=none smtp.client-ip=209.85.221.50 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="UpvbY0xe" Received: by mail-wr1-f50.google.com with SMTP id ffacd0b85a97d-39c0dfba946so1281677f8f.3; Sun, 30 Mar 2025 14:08:18 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1743368897; x=1743973697; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=4WL47na/f7Cm5ezjeiYyvgmEI6emKIRhwkU1H7guX+E=; b=UpvbY0xeHGrNVOvimjmXfRpBJr0KW3uUddghrZY02XMu55YmrzhYLELkOBLjGk+Q0n H2NUR8U1WiJ9JGdnoDCXpm90Bhcui8ahZDhTBMWTOCX5Fx4zEN5bzKasvjjdq84XGiAx NKkjqLxgltVs3CngI0chV4s7oPxOzpm3VaQa//5KdkiflOrAB+aFVZtaFvrIavGFBqKc 9bNs8q92cyMUrwPrt3zK6xcKWg2xMMBibDgYLvlNrOjihWM1PvnknyyqGN/C7J0uM1kR Hpgg2wYDEa8RdPSjk6B6ckMKIVif9hNowWsHpTnJfpVs6Bvunpko0igqRny4WJFfAzpS i5wQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1743368897; x=1743973697; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=4WL47na/f7Cm5ezjeiYyvgmEI6emKIRhwkU1H7guX+E=; b=sXa7XNhAu/CjfT+/rX4dDwUbWPV7HigecNx5mZEOUEvyqjCzHR1oaEUMx3aI9zn6+I 1UnUbjgOz4rf+E8+yY1Imii0pdf+h/dGdVJzaquXe0omDn73p7COWqRSjuUB24GfXyQO 37lyqY0sgsMkP+OWoWAIz8NqnPfjs+KZqKH28q7Jm1VW4MO8nXArBopTw/NqKcXinjom ulucUSuzigGGw6kBRd09KhKrXDazpcafMfWDAuUld659jbP3g/pcwvANlSFgonrogK6I 2iM/3QUEaAO+J2eo3bqnyvQJgh1TKi01A4q43SafkWEK6lzlgBLK5Jem0mSA5GKqponn wN0A== X-Forwarded-Encrypted: i=1; AJvYcCV76UpTQPDK2Uik6GweWb58Nql0LF1pwSE5d/0GIh58clNiC9jYxKh52SZzmuUWV6A6LTcIg0ceVdAhLwMT@vger.kernel.org, AJvYcCVDxY1bksAWKrPNckOl+hdsNO1LnqwssDZVsa5xOJKQObXJHDuWO7coNSFe8d6tGEP1qpj3UbLg+6C9IyM=@vger.kernel.org, AJvYcCVupXwYl6jjLF6lua0acbTlTf6OFwOD3repy2tpX7O0YeYskBuLOeCnQIA6NmgMGx43ZMXrCFjBbAT/rLxq8hSy4Yg=@vger.kernel.org, AJvYcCXFE8vCuVVAycgN/LAOCVrbVguhXkYWg7wA4hdFu4PiHkk9vdBYfA7zvb6TguqszYoT5PbsirjcvTA=@vger.kernel.org X-Gm-Message-State: AOJu0Yxvy4qgZzjS324a7LhGBgh/u8y9PaAiFqU5uKxcRfbavNP4QYae YpcPXvz65vPQUlQ41EYNWuwTFVMyLSIyS4F8RNIvCDcNMbTTEuD0 X-Gm-Gg: ASbGncvFzGjbYeqkUh4kOwb69qUoBf45tmvZFP3nJqT7/C+P+eHtSGKioRW2/kJpwEZ no/Try73W4k9CwiaHFYsU/hWadKJrBW5DUNcK0IQA3PmBYkkJVEudQoBGK3UX7G5v0h1sXY2jRs jOf6qSHRqfQFplhUmO1SjdSQ0wyo37MdeBGVRgPXQwhA/kTHvEkUiO1BhBcbzjLiEgxUa8ml1D8 4KbUaxURGp7hAsCy7Ay8Eett8wz6JqhUcusHr0TaDZv1AcleqOXfNGpOyKmZG2YUu0pEEoKCCih viYj9D4YyW6veWxaU1w43lZP1ZpSLjzy3kFMN/sw88upEHGvjjBhoIFZF7cL4Gvz4rkPGw== X-Google-Smtp-Source: AGHT+IGh0oqGPfkf43mLqos238ALBWtWgRCoU8+NfGm32FoQHuOb01nXaAIF90vjNfOVilmYf+rBZw== X-Received: by 2002:a05:6000:1862:b0:391:40bd:6222 with SMTP id ffacd0b85a97d-39c120ded7bmr5144373f8f.22.1743368897156; Sun, 30 Mar 2025 14:08:17 -0700 (PDT) Received: from iku.Home ([2a06:5906:61b:2d00:8249:9390:e853:c628]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-43d91429c36sm69778175e9.0.2025.03.30.14.08.15 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 30 Mar 2025 14:08:16 -0700 (PDT) From: Prabhakar X-Google-Original-From: Prabhakar To: Geert Uytterhoeven , Andrzej Hajda , Neil Armstrong , Robert Foss , Laurent Pinchart , Jonas Karlman , Jernej Skrabec , David Airlie , Simona Vetter , Maarten Lankhorst , Maxime Ripard , Thomas Zimmermann , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Biju Das , Mauro Carvalho Chehab , Kieran Bingham , Stephen Boyd , Philipp Zabel Cc: devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, linux-renesas-soc@vger.kernel.org, linux-media@vger.kernel.org, linux-clk@vger.kernel.org, Prabhakar , Fabrizio Castro , Lad Prabhakar Subject: [PATCH 12/17] drm: renesas: rz-du: mipi_dsi: Use mHz for D-PHY frequency calculations Date: Sun, 30 Mar 2025 22:07:08 +0100 Message-ID: <20250330210717.46080-13-prabhakar.mahadev-lad.rj@bp.renesas.com> X-Mailer: git-send-email 2.49.0 In-Reply-To: <20250330210717.46080-1-prabhakar.mahadev-lad.rj@bp.renesas.com> References: <20250330210717.46080-1-prabhakar.mahadev-lad.rj@bp.renesas.com> Precedence: bulk X-Mailing-List: linux-renesas-soc@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 From: Lad Prabhakar Pass the HSFREQ in milli-Hz to the `dphy_init()` callback to improve precision, especially for the RZ/V2H(P) SoC, where PLL dividers require high accuracy. These changes prepare the driver for upcoming RZ/V2H(P) SoC support. Co-developed-by: Fabrizio Castro Signed-off-by: Fabrizio Castro Signed-off-by: Lad Prabhakar --- drivers/gpu/drm/renesas/rz-du/rzg2l_mipi_dsi.c | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/drivers/gpu/drm/renesas/rz-du/rzg2l_mipi_dsi.c b/drivers/gpu/drm/renesas/rz-du/rzg2l_mipi_dsi.c index 44b95082b29c..84c3384aa911 100644 --- a/drivers/gpu/drm/renesas/rz-du/rzg2l_mipi_dsi.c +++ b/drivers/gpu/drm/renesas/rz-du/rzg2l_mipi_dsi.c @@ -31,7 +31,7 @@ struct rzg2l_mipi_dsi; struct rzg2l_mipi_dsi_hw_info { - int (*dphy_init)(struct rzg2l_mipi_dsi *dsi, unsigned long hsfreq); + int (*dphy_init)(struct rzg2l_mipi_dsi *dsi, unsigned long long hsfreq_mhz); void (*dphy_exit)(struct rzg2l_mipi_dsi *dsi); u32 phy_reg_offset; u32 link_reg_offset; @@ -201,8 +201,9 @@ static u32 rzg2l_mipi_dsi_link_read(struct rzg2l_mipi_dsi *dsi, u32 reg) */ static int rzg2l_mipi_dsi_dphy_init(struct rzg2l_mipi_dsi *dsi, - unsigned long hsfreq) + unsigned long long hsfreq_mhz) { + unsigned long hsfreq = DIV_ROUND_CLOSEST_ULL(hsfreq_mhz, KILO); const struct rzg2l_mipi_dsi_timings *dphy_timings; unsigned int i; u32 dphyctrl0; @@ -275,6 +276,7 @@ static int rzg2l_mipi_dsi_startup(struct rzg2l_mipi_dsi *dsi, const struct drm_display_mode *mode) { unsigned long hsfreq, vclk_rate; + unsigned long long hsfreq_mhz; unsigned int bpp; u32 txsetr; u32 clstptsetr; @@ -303,9 +305,9 @@ static int rzg2l_mipi_dsi_startup(struct rzg2l_mipi_dsi *dsi, */ bpp = mipi_dsi_pixel_format_to_bpp(dsi->format); vclk_rate = clk_get_rate(dsi->vclk); - hsfreq = DIV_ROUND_CLOSEST_ULL(vclk_rate * bpp, dsi->lanes); + hsfreq_mhz = DIV_ROUND_CLOSEST_ULL(vclk_rate * bpp * KILO * 1ULL, dsi->lanes); - ret = dsi->info->dphy_init(dsi, hsfreq); + ret = dsi->info->dphy_init(dsi, hsfreq_mhz); if (ret < 0) goto err_phy; @@ -313,6 +315,7 @@ static int rzg2l_mipi_dsi_startup(struct rzg2l_mipi_dsi *dsi, txsetr = TXSETR_DLEN | TXSETR_NUMLANEUSE(dsi->lanes - 1) | TXSETR_CLEN; rzg2l_mipi_dsi_link_write(dsi, TXSETR, txsetr); + hsfreq = DIV_ROUND_CLOSEST_ULL(hsfreq_mhz, KILO); /* * Global timings characteristic depends on high speed Clock Frequency * Currently MIPI DSI-IF just supports maximum FHD@60 with: @@ -780,7 +783,7 @@ static int rzg2l_mipi_dsi_probe(struct platform_device *pdev) * mode->clock and format are not available. So initialize DPHY with * timing parameters for 80Mbps. */ - ret = dsi->info->dphy_init(dsi, 80000000); + ret = dsi->info->dphy_init(dsi, 80000000ULL * KILO); if (ret < 0) goto err_phy; From patchwork Sun Mar 30 21:07:09 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Lad, Prabhakar" X-Patchwork-Id: 14033042 X-Patchwork-Delegate: kieran@bingham.xyz Received: from mail-wm1-f54.google.com (mail-wm1-f54.google.com [209.85.128.54]) (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 C5B9F1DF244; Sun, 30 Mar 2025 21:08:20 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.128.54 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1743368902; cv=none; b=TmFHn7sCptWcA6tpmbEne37F+OTOj+poI4he2fn2lw9svdjgskRj+hRo4EwKZ3kuZ7SMtoRrPdw2KFlKOysm4QcsMoH5W8uFbWFE2FcZw18LXfbOnm0WGLwPBTuCxB24CYFF48/2AhsA5ZxQ9SkdvrlNqJyOa3kJweSW/TrTU2w= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1743368902; c=relaxed/simple; bh=0rvwfToYEVnAJefIAp/NDyLKZKuJeCDRniH2Xkb/HB8=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=oUPRSd7Comj7MGaDhsNmR+0o7RdBuyKcPCWQAZp2lT6F73b/UAC2QK0vtHvOnISNuwxhdz60hQ51lEGg2w3I2gSp4twfpZgUgx9aj6DqGmuOcEUGpimtHrswtT6UCAIaALc8MbEP3rd/Ck09lnHq2JAQRKB4RP8nwDYTAueIBLE= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=PW1cIpeg; arc=none smtp.client-ip=209.85.128.54 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="PW1cIpeg" Received: by mail-wm1-f54.google.com with SMTP id 5b1f17b1804b1-43d2d952eb1so26082215e9.1; Sun, 30 Mar 2025 14:08:20 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1743368899; x=1743973699; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=MQcdmv+fTi7nHJU3UY4t3nOmHBOro6YDyKJYXuGtsNE=; b=PW1cIpegriQ9yIkJv8we1O1+uNVj1CZEFG1davI165i5f3K+ojqm0YTAsPYo2G2z66 ya6DzP7sRGMJfnlL+ndv83dgAApGVyh/l/6vj8TilK73oRoMgm8shHc2863drVouBhsy TJvohOsleXaUxB9gPRTh43yNAXU0Jye3MFh7QLy9Yskn++gLsFnmr5AN/VNm55NxyX9Q EIk9IOemAF+nCGpYj61InJLPxjTaiP6BfvjKafiJs1ndqOxPedn3hXOIc1vRxNdd/MBw gQxGbJy9dqrtM+Otm5pmsE3vxs8Qwd25/B3jXDwlltR1ozxNLBcDHFQ+BwNDgN3yZviM PJJg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1743368899; x=1743973699; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=MQcdmv+fTi7nHJU3UY4t3nOmHBOro6YDyKJYXuGtsNE=; b=ABGxwvwjlrZ03G6gp1gkqldnPppe+B0XpDRP4aTyvRSzXv/7ufTZYi46pValxQlZDg XMRth1kE/kcwMP9BacAxTq8TEyMu2s8LbQs7VXrTHbbhjllSx9cgSw/XyGrrilgKJTl4 8GQHzagaCtDzmLrz/DJfv1RXGseuIh75SCs33lb6NgisqeliD/koDuhZEazguKIEEkhW EcU7RvGurZUmLDUOXqyc8DZGCAU8xNRpQp7Jj3mSIpM3a0putLtkfu7+YJTaC5yOjGD8 c8+g2bdAPwsetUxXl7MNbxrcK2RMisES+Q6RAaA+p6YCvLzRQDxKrBmt0+48/EztT2c7 EZCA== X-Forwarded-Encrypted: i=1; AJvYcCU0Zu0Kc8lFHknjPTwZq3bhZIPUvINA9AGs6cVs4a7z+xTLBdUrsd6WnxRItsbFiNY9CQ1/69kbENo=@vger.kernel.org, AJvYcCUXmN5iJT6yM8dpPQlsHPzhF+2AkqboRDw8dsytCWR2U9LELIVrF+DZw1lCAPW2q3OcEAKGFS8VjQP0Ow4=@vger.kernel.org, AJvYcCV0tf29uRO9ABuavXhpeQfTISsPU4uMPiTJjcAAyWr0VYT6hVWUPPwVmbjeXPuXPjcGUbhOpkaSPQHUJ4Ub9/+Nm2o=@vger.kernel.org, AJvYcCX/x9zM1JQzWslUbC297+bHBwThIMXFK066TykiKCrqZ9F+DKq+wBUGuQU6C3Opjoi+cU83yjdnlIyRem73@vger.kernel.org X-Gm-Message-State: AOJu0YyXV+TsBJ9fYsM7q0BHFXJBXaV058c0DfjOlX9RnxuqZGVoS8eQ lKGjou1j2y2Y59zopC2aZckxmo/ZCmH3A66q4ELaA7F/G0eulN/tM59zRKgY X-Gm-Gg: ASbGncugbrYHOUlCiUAdQNi8jUehXUXzv2u6ZsLrM8TQNAYmorPs9yCbXsCULJN4Q3H 6rWTF3IB2l5uC36SjNKSEYLQE7vY9OWbiSxtritv1J5MmsL7wRI2XDx2rMHic1Z21fI2rU343v4 La4PgvKtTkNebODQFRbF5EgvkDFygnNPmqiX7fKGSf4t+6BFLM7QIo3uDOjzjWaw2tiJ6evjVqS 4TjlB8aLmb08K4zH7x3DFnf95KTQQIcruCaZv+2sgdEAcBMKqTOcoRvJtLBSKbJL9cycongqpPW j4Fdm8lcgNEcEsxhzFuF/2H5qMaJusAhz9/Yy0vhyrRb44WZbD0qVRT1S9iNJVJzTVPQttjSsG8 fS4jd X-Google-Smtp-Source: AGHT+IGnEK+D9yEO+Df22WAZgqb9VPVBVAcc76yaOaBtPARGH861k4cRc8dmMhREx9RoOnEoG6Co9A== X-Received: by 2002:a05:600c:83cc:b0:43d:cc9:b09d with SMTP id 5b1f17b1804b1-43db62bc26fmr50846095e9.20.1743368898852; Sun, 30 Mar 2025 14:08:18 -0700 (PDT) Received: from iku.Home ([2a06:5906:61b:2d00:8249:9390:e853:c628]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-43d91429c36sm69778175e9.0.2025.03.30.14.08.17 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 30 Mar 2025 14:08:18 -0700 (PDT) From: Prabhakar X-Google-Original-From: Prabhakar To: Geert Uytterhoeven , Andrzej Hajda , Neil Armstrong , Robert Foss , Laurent Pinchart , Jonas Karlman , Jernej Skrabec , David Airlie , Simona Vetter , Maarten Lankhorst , Maxime Ripard , Thomas Zimmermann , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Biju Das , Mauro Carvalho Chehab , Kieran Bingham , Stephen Boyd , Philipp Zabel Cc: devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, linux-renesas-soc@vger.kernel.org, linux-media@vger.kernel.org, linux-clk@vger.kernel.org, Prabhakar , Fabrizio Castro , Lad Prabhakar Subject: [PATCH 13/17] drm: renesas: rz-du: mipi_dsi: Add feature flag for 16BPP support Date: Sun, 30 Mar 2025 22:07:09 +0100 Message-ID: <20250330210717.46080-14-prabhakar.mahadev-lad.rj@bp.renesas.com> X-Mailer: git-send-email 2.49.0 In-Reply-To: <20250330210717.46080-1-prabhakar.mahadev-lad.rj@bp.renesas.com> References: <20250330210717.46080-1-prabhakar.mahadev-lad.rj@bp.renesas.com> Precedence: bulk X-Mailing-List: linux-renesas-soc@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 From: Lad Prabhakar Introduce the `RZ_MIPI_DSI_16BPP` feature flag in `rzg2l_mipi_dsi_hw_info` to indicate support for 16BPP pixel formats. The RZ/V2H(P) SoC supports 16BPP, whereas this feature is missing on the RZ/G2L SoC. Update the `mipi_dsi_host_attach()` function to check this flag before allowing 16BPP formats. If the SoC does not support 16BPP, return an error to prevent incorrect format selection. This change enables finer-grained format support control for different SoC variants. Co-developed-by: Fabrizio Castro Signed-off-by: Fabrizio Castro Signed-off-by: Lad Prabhakar --- drivers/gpu/drm/renesas/rz-du/rzg2l_mipi_dsi.c | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/drivers/gpu/drm/renesas/rz-du/rzg2l_mipi_dsi.c b/drivers/gpu/drm/renesas/rz-du/rzg2l_mipi_dsi.c index 84c3384aa911..0ffef641e2bc 100644 --- a/drivers/gpu/drm/renesas/rz-du/rzg2l_mipi_dsi.c +++ b/drivers/gpu/drm/renesas/rz-du/rzg2l_mipi_dsi.c @@ -30,6 +30,8 @@ struct rzg2l_mipi_dsi; +#define RZ_MIPI_DSI_16BPP BIT(0) + struct rzg2l_mipi_dsi_hw_info { int (*dphy_init)(struct rzg2l_mipi_dsi *dsi, unsigned long long hsfreq_mhz); void (*dphy_exit)(struct rzg2l_mipi_dsi *dsi); @@ -38,6 +40,7 @@ struct rzg2l_mipi_dsi_hw_info { unsigned long max_dclk; unsigned long min_dclk; bool has_dphy_rstc; + u8 features; }; struct rzg2l_mipi_dsi { @@ -642,8 +645,16 @@ static int rzg2l_mipi_dsi_host_attach(struct mipi_dsi_host *host, switch (mipi_dsi_pixel_format_to_bpp(device->format)) { case 24: + break; case 18: break; + case 16: + if (!(dsi->info->features & RZ_MIPI_DSI_16BPP)) { + dev_err(dsi->dev, "Unsupported format 0x%04x\n", + device->format); + return -EINVAL; + } + break; default: dev_err(dsi->dev, "Unsupported format 0x%04x\n", device->format); return -EINVAL; From patchwork Sun Mar 30 21:07:10 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Lad, Prabhakar" X-Patchwork-Id: 14033043 X-Patchwork-Delegate: kieran@bingham.xyz Received: from mail-wm1-f52.google.com (mail-wm1-f52.google.com [209.85.128.52]) (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 61B391E98E0; Sun, 30 Mar 2025 21:08:22 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.128.52 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1743368904; cv=none; b=CYkm5MlRodQAFNnVaAuJ+po0OeiEElpqSF1A560DBcZ4/NZ7B0q+ian/Y70oOc6ZcavM2TTqyJQtiwK+VcApMrA2UtL6xJQev/8x68rCFPnySQA7cCq+LgobdBA2UHsU6fJWaUxcvmRcmjocc4yRvJfuBbtlBHwYHVbhotAzWyI= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1743368904; c=relaxed/simple; bh=oA29O4BuT4qmU4suGtxMk9Lj6+9M8aYIsfR/i+CfkLg=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=SOlPVVT8qXxDrycrcZvaSXLoJTZWMnQ90pXQmpWS94vConzUa7oY70Sv2AEK3ZUhCo3YErRKzRPnFnJgz6SkXoYdeoCbNqOSAr1RDB+t13I24CerWJL4Hb2uZG3Mnxru/VGUBPt8jyMHaiPryTqIVEEAYKGRdlbgSqdzkGwpw9Q= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=Zv/buWtc; arc=none smtp.client-ip=209.85.128.52 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="Zv/buWtc" Received: by mail-wm1-f52.google.com with SMTP id 5b1f17b1804b1-43cfe574976so26058135e9.1; Sun, 30 Mar 2025 14:08:22 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1743368900; x=1743973700; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=UluuZxUFbm5njLPBjb6IhbQdxhQua14hLJGR9/ZdZ2U=; b=Zv/buWtcphsm4/3JhEO6jS7KmFctm8N/ettaa7ucnLfPpVshshF0VqvJhuOlhLI3va h/X2nXkkd5m0kCLcIL69WztAZt35bZx3ZAAGPzJM3NbI7XRFtgS8GpdrB5NJVpmLLQQo 04guxyyAyZkOAiQ4WqZdB7BtXmNceLeEZS6hTKa01tgtw2H/OKpELMBgEjbmO+FrnFA4 SgtPKRB8TUeX2tD4UStcEcnYvcOeDIJN45fKuIsJrDarKvTEFiiEn30NzRgjSdinDdFS djn7RCvt9LHkKyZxc+Ez242U0w7MObvEoW856Ypne2dEhLONgerLUo/FRN4ff+UgVy+w O5Vg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1743368900; x=1743973700; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=UluuZxUFbm5njLPBjb6IhbQdxhQua14hLJGR9/ZdZ2U=; b=quUmvzA0w3OSXazyFf1ePJGi+JJL8ST7vPUgY5SAdp9MiOUTk5Q5NvJZ4ToDgWRAld t0MvUXzpGqgD/qYLmiI+livUwsMhT2wi56Qt0VENRu8V/+ZcrkeYxvZfnzo7pojUslI4 jEsH1ybaINKIR8befQHtic5An1cCCipbEyKCb5oNGQ4STMmUpG7SF0rqHZ31OjeDwNU7 3fUgnPJpvfKJEczM2Ae5+3hLO9jtnogIx+rP/nPkb4UAWLiRd5h7OkdomYDVJ4wmnh0Y ASrwCaMrMPi+RdDdz3NUGBX7PSWknQkYFPqIIAEOpa/2TxGIOhUu1oda0RIsQSZAIUkQ X9Lw== X-Forwarded-Encrypted: i=1; AJvYcCVfbEaf/j7Xwgki7tPpGQcErxKIqDMivRbeLdovn21elnEaYdwWtODKpEKekmcix9qogZCHEQnugcNynnQ=@vger.kernel.org, AJvYcCVkJOEi2bfa02oQsWGJx0NneWFeLIjdezOefHdW/y/89xzAljZcKTBbyY/byh9NT/0vriCbjoijdafxp+wTPS9XnZA=@vger.kernel.org, AJvYcCVz7/ORcSk4wLCukMa1B9v2j0o+Vdn3owA86e1IxnmU2Sj586vYJ8zx0HVQCrytDrxnOTIeA+/3CaM=@vger.kernel.org, AJvYcCXimy/OWhLC7j5ugHv+UBsWf3iA/5J6ekUtJkN38rKy30IANAFtBfOBS2AFz3F4hnz1uGeo79XyoLVFhE/Q@vger.kernel.org X-Gm-Message-State: AOJu0YzolU7/3ig0APZvwnGbjx9HLdOl7/KFkCpbDgJnyPqZq1LtJGtg ljmJChuhL4bqSakYPwU+Y2oWlHehmH7NLP/TBNKXZyyTMhlxdrEgMEP/IinW X-Gm-Gg: ASbGncvYW3s/f0DZKr+3eHNkTzK62znZWM/BIyc8+uxXcf2i2JFSpLdxmB8vgbuX7NI YSs/Ld1h6TbcreO3mMaer3IPlYWHkgQ9JZdp79D/Jgy5gpOIqIzgu4SDxzMBVdCrzr1Z+IAejFj oHDU7x/5dJghEALrltQPcwkigRDY928FXtaZwFqzVeoXI2t3fsHxg3NjyW3f7/SaiW1znriWDRO vZZC0TegXSDyKqanbVy9WsQM84SkWyTiTu194xHlVoiS8EmY+4A+YnJNjZzIlWONiUO6ne3q8nA mCG+vvmZIkbWGUnTj7NWqSeVObWLGjJocQAYscOoxDP2KArxIlyXXzl85n+fY0x3BR/kFA== X-Google-Smtp-Source: AGHT+IGWSaixFwgM6lCiT9uhTH+eCMBpKmjujn+c51dMR09paDiw0I6E/1w2TqqN84Dp/PsM7X066w== X-Received: by 2002:a05:600c:470f:b0:43d:49eb:963f with SMTP id 5b1f17b1804b1-43db6289ce1mr59684945e9.24.1743368900500; Sun, 30 Mar 2025 14:08:20 -0700 (PDT) Received: from iku.Home ([2a06:5906:61b:2d00:8249:9390:e853:c628]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-43d91429c36sm69778175e9.0.2025.03.30.14.08.19 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 30 Mar 2025 14:08:19 -0700 (PDT) From: Prabhakar X-Google-Original-From: Prabhakar To: Geert Uytterhoeven , Andrzej Hajda , Neil Armstrong , Robert Foss , Laurent Pinchart , Jonas Karlman , Jernej Skrabec , David Airlie , Simona Vetter , Maarten Lankhorst , Maxime Ripard , Thomas Zimmermann , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Biju Das , Mauro Carvalho Chehab , Kieran Bingham , Stephen Boyd , Philipp Zabel Cc: devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, linux-renesas-soc@vger.kernel.org, linux-media@vger.kernel.org, linux-clk@vger.kernel.org, Prabhakar , Fabrizio Castro , Lad Prabhakar Subject: [PATCH 14/17] drm: renesas: rz-du: mipi_dsi: Add dphy_late_init() callback for RZ/V2H(P) Date: Sun, 30 Mar 2025 22:07:10 +0100 Message-ID: <20250330210717.46080-15-prabhakar.mahadev-lad.rj@bp.renesas.com> X-Mailer: git-send-email 2.49.0 In-Reply-To: <20250330210717.46080-1-prabhakar.mahadev-lad.rj@bp.renesas.com> References: <20250330210717.46080-1-prabhakar.mahadev-lad.rj@bp.renesas.com> Precedence: bulk X-Mailing-List: linux-renesas-soc@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 From: Lad Prabhakar Introduce the `dphy_late_init` callback in `rzg2l_mipi_dsi_hw_info` to allow additional D-PHY register configurations after enabling data and clock lanes. This is required for the RZ/V2H(P) SoC but not for the RZ/G2L SoC. Modify `rzg2l_mipi_dsi_startup()` to invoke `dphy_late_init` if defined, ensuring SoC-specific initialization is performed only when necessary. This change prepares for RZ/V2H(P) SoC support while maintaining compatibility with existing platforms. Co-developed-by: Fabrizio Castro Signed-off-by: Fabrizio Castro Signed-off-by: Lad Prabhakar --- drivers/gpu/drm/renesas/rz-du/rzg2l_mipi_dsi.c | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/drivers/gpu/drm/renesas/rz-du/rzg2l_mipi_dsi.c b/drivers/gpu/drm/renesas/rz-du/rzg2l_mipi_dsi.c index 0ffef641e2bc..143bb01e6f50 100644 --- a/drivers/gpu/drm/renesas/rz-du/rzg2l_mipi_dsi.c +++ b/drivers/gpu/drm/renesas/rz-du/rzg2l_mipi_dsi.c @@ -34,6 +34,7 @@ struct rzg2l_mipi_dsi; struct rzg2l_mipi_dsi_hw_info { int (*dphy_init)(struct rzg2l_mipi_dsi *dsi, unsigned long long hsfreq_mhz); + void (*dphy_late_init)(struct rzg2l_mipi_dsi *dsi); void (*dphy_exit)(struct rzg2l_mipi_dsi *dsi); u32 phy_reg_offset; u32 link_reg_offset; @@ -318,6 +319,9 @@ static int rzg2l_mipi_dsi_startup(struct rzg2l_mipi_dsi *dsi, txsetr = TXSETR_DLEN | TXSETR_NUMLANEUSE(dsi->lanes - 1) | TXSETR_CLEN; rzg2l_mipi_dsi_link_write(dsi, TXSETR, txsetr); + if (dsi->info->dphy_late_init) + dsi->info->dphy_late_init(dsi); + hsfreq = DIV_ROUND_CLOSEST_ULL(hsfreq_mhz, KILO); /* * Global timings characteristic depends on high speed Clock Frequency From patchwork Sun Mar 30 21:07:11 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Lad, Prabhakar" X-Patchwork-Id: 14033044 X-Patchwork-Delegate: kieran@bingham.xyz Received: from mail-wm1-f54.google.com (mail-wm1-f54.google.com [209.85.128.54]) (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 8BDA91E9B35; Sun, 30 Mar 2025 21:08:24 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.128.54 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1743368906; cv=none; b=jhyE3IFuW4GBldUJHCA4dUOCi6nmRvrr5KMBj/GPAGDubtArKzCzdLWk+BS1xwcqIDlb/ZyrJE4akHplG3Ee1kVBBQm9nGT84HK53Qixr80Qioun2LJVAeFgen2R6v0eS26AgBDLtIJTPFRJQEgZuvAOddzyVbOt66SxmUF1ic4= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1743368906; c=relaxed/simple; bh=vXBOHZRFep3xvb3C3XtWMgbDQa/LoryqVYq5e3iFgS4=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=uXpOilmOobAR5dEF0lPWNAqaxOjJAJ/hNzS3SUaOd/qw/8aDi0MJX1r81X3WYVQonRIir+OJLkaqebSIWtNB6knTyYWwtq64aqELp8K/oGYzbN+yyb8AJQmmRoyfv3V4xafM80Kng/lvOC5GU2MgeeqK0kHwqlbgr41/Xj0U1Us= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=LobWlovC; arc=none smtp.client-ip=209.85.128.54 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="LobWlovC" Received: by mail-wm1-f54.google.com with SMTP id 5b1f17b1804b1-4394345e4d5so23722005e9.0; Sun, 30 Mar 2025 14:08:24 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1743368903; x=1743973703; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=bNCfB9MBRvn1VCqAeA8M2J66qxPwT+h+pcoszvMMa9s=; b=LobWlovCpLSvVEqy0jLYMw+dpWg46jzcdpG5ejKUNwGG1m0X6Pgxgpf8MW6EvJFOXP TLGR59lx7Xdn4QN8Rz4NeZT9JY1JglLYHfdo/SCVOuxteTqrElHmr1JcGCIBQjTIOPAp psnQ+g/4y5ghYHKy5U1RPa6xfUdmdPuLhqizfMcCM4HTdN5+BPRn1a1FbKmMMz5q7e+6 sa7nlE81lvqSwsb7OywJFLl9Tio/4yzz96e6akLblJ5aDVFNsI3HaMjEoocejI2w7L8t PiqQZ2n4wrxzw5MpNq+TCruIC2VwCOiMorbpOqPPoR50KlTrpWl5kfcXD1M9XbIZX2z4 JbXA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1743368903; x=1743973703; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=bNCfB9MBRvn1VCqAeA8M2J66qxPwT+h+pcoszvMMa9s=; b=f6sSo9KL7ETCieC7960ZHwzCjx2ZEwTaNFJQ1PjC9/1yd6JZcotreYc6+tvsWZcgZq jbZB2Px/R3QlAbhLA1wCIIu2BiES6rqpEB5SVX1O7kmIIisFchR4ZNnGyqMEceIx6rqL 4gD2czGct9WlEyw8sOyMdvpak1s9IuLsG1Rx9TmIqGFBHc7T46kPoDCGNdt3Ok25MD01 yfnW3gz3bC13RgvPhR2ThYDYzDfV82FS3675NuweEwu8WO0SIONY5UPKnN3yITuRtFZC 5H7cUeltPRphJ9RIR++JM66qIcOrYE6wfL39TLkk5P39zI7PVYjWwJ6vUpKrw9QkpBha d0Zg== X-Forwarded-Encrypted: i=1; AJvYcCUB1RHlXh5EGJd6zd6K4OE9iGsSS7PNBbWlP4riMfmhjk+E9xb5h0iEtDVRnmrXbBkArmXg5+xlBD4mjFnZ@vger.kernel.org, AJvYcCUUrrg1TjXFC+q6GE/UyMkzW9ONWadUMAHU8RqFifmVo0hLTHYmKDkMy68Xi+fjm8SqVna/eE98uj2zYjQ=@vger.kernel.org, AJvYcCWJH4ahqmhGaLc5rT1xu49I3bRBvuTGybjZm+UobVjnHxn7Oo6yVBKmS1g/ZYl/TqqaY+lkSmlMDTwFZLciPzN3yPw=@vger.kernel.org, AJvYcCXcjiLgJVB88J3Mk6AZ89fmrX7AuSO0Oc1UApU8yC8/T0WIXMHdZt68xUaDUfhv3VPRKVZMFT3v2kg=@vger.kernel.org X-Gm-Message-State: AOJu0YznV58TEfAr2rbITmtugKu5k5ukKFQ7HbaZdx883TSHWJfMpuPL rtJUlOLR+uwb4N85tBU+0JIMm5LRQ3tOXAbmaF/eL61GavM2ONfg X-Gm-Gg: ASbGncvhtTf3dPSVrzy5NC3VYlz7KCef9w/DfhGiUu1D7xNNqRD2NPFy1Au6D8RYksQ j4gMXInCKPHWwBLFctgmVZtlkrzimHkzvX7cVSKuXCP0UA3hCFfHWFieZylH0BIjOrVLNd781JV LfsoBpojvhvYmJfvMpGnHnRH4dtCp2Uo3VJjycWe+GZM6mwYVG3NCu26t8u3WIJpb6WJNcizswD jRgusRG/v4Gk5O5p9l/at/yTK0TtVPr/CEGVeFDfYle7VcDWuO6qwvbm0R69Wo2UZFsFsOncK6O dsJjvqtghiEutzAdxam5r99ZMf2AzG4+TrLZStKqB4maBO3J05YHyADV3eDigtivNHSEVw== X-Google-Smtp-Source: AGHT+IFAftaSJAKbqIoRETwZffEYb/7LjzE+RcmIpRe67qnXhh+L7GMuoWgTM3zGhePgjIT5PU+QJQ== X-Received: by 2002:a05:600c:1d8d:b0:43c:ea40:ae4a with SMTP id 5b1f17b1804b1-43dbc6f99dcmr64056755e9.31.1743368902764; Sun, 30 Mar 2025 14:08:22 -0700 (PDT) Received: from iku.Home ([2a06:5906:61b:2d00:8249:9390:e853:c628]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-43d91429c36sm69778175e9.0.2025.03.30.14.08.20 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 30 Mar 2025 14:08:21 -0700 (PDT) From: Prabhakar X-Google-Original-From: Prabhakar To: Geert Uytterhoeven , Andrzej Hajda , Neil Armstrong , Robert Foss , Laurent Pinchart , Jonas Karlman , Jernej Skrabec , David Airlie , Simona Vetter , Maarten Lankhorst , Maxime Ripard , Thomas Zimmermann , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Biju Das , Mauro Carvalho Chehab , Kieran Bingham , Stephen Boyd , Philipp Zabel Cc: devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, linux-renesas-soc@vger.kernel.org, linux-media@vger.kernel.org, linux-clk@vger.kernel.org, Prabhakar , Fabrizio Castro , Lad Prabhakar Subject: [PATCH 15/17] drm: renesas: rz-du: mipi_dsi: Add function pointers for configuring VCLK and mode validation Date: Sun, 30 Mar 2025 22:07:11 +0100 Message-ID: <20250330210717.46080-16-prabhakar.mahadev-lad.rj@bp.renesas.com> X-Mailer: git-send-email 2.49.0 In-Reply-To: <20250330210717.46080-1-prabhakar.mahadev-lad.rj@bp.renesas.com> References: <20250330210717.46080-1-prabhakar.mahadev-lad.rj@bp.renesas.com> Precedence: bulk X-Mailing-List: linux-renesas-soc@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 From: Lad Prabhakar Introduce `dphy_conf_clks` and `dphy_mode_clk_check` callbacks in `rzg2l_mipi_dsi_hw_info` to configure the VCLK and validate supported display modes. On the RZ/V2H(P) SoC, the DSI PLL dividers need to be as accurate as possible. To ensure compatibility with both RZ/G2L and RZ/V2H(P) SoCs, function pointers are introduced. Modify `rzg2l_mipi_dsi_startup()` to use `dphy_conf_clks` for clock configuration and `rzg2l_mipi_dsi_bridge_mode_valid()` to invoke `dphy_mode_clk_check` for mode validation. This change ensures proper operation across different SoC variants by allowing fine-grained control over clock configuration and mode validation. Co-developed-by: Fabrizio Castro Signed-off-by: Fabrizio Castro Signed-off-by: Lad Prabhakar --- .../gpu/drm/renesas/rz-du/rzg2l_mipi_dsi.c | 59 +++++++++++++------ 1 file changed, 42 insertions(+), 17 deletions(-) diff --git a/drivers/gpu/drm/renesas/rz-du/rzg2l_mipi_dsi.c b/drivers/gpu/drm/renesas/rz-du/rzg2l_mipi_dsi.c index 143bb01e6f50..2ca725a2ccaf 100644 --- a/drivers/gpu/drm/renesas/rz-du/rzg2l_mipi_dsi.c +++ b/drivers/gpu/drm/renesas/rz-du/rzg2l_mipi_dsi.c @@ -36,6 +36,10 @@ struct rzg2l_mipi_dsi_hw_info { int (*dphy_init)(struct rzg2l_mipi_dsi *dsi, unsigned long long hsfreq_mhz); void (*dphy_late_init)(struct rzg2l_mipi_dsi *dsi); void (*dphy_exit)(struct rzg2l_mipi_dsi *dsi); + int (*dphy_conf_clks)(struct rzg2l_mipi_dsi *dsi, unsigned long mode_freq, + unsigned long long *hsfreq_mhz); + unsigned int (*dphy_mode_clk_check)(struct rzg2l_mipi_dsi *dsi, + unsigned long mode_freq); u32 phy_reg_offset; u32 link_reg_offset; unsigned long max_dclk; @@ -276,12 +280,36 @@ static void rzg2l_mipi_dsi_dphy_exit(struct rzg2l_mipi_dsi *dsi) reset_control_assert(dsi->rstc); } +static int rzg2l_dphy_conf_clks(struct rzg2l_mipi_dsi *dsi, unsigned long mode_freq, + unsigned long long *hsfreq_mhz) +{ + unsigned long vclk_rate; + unsigned int bpp; + + clk_set_rate(dsi->vclk, mode_freq * KILO); + /* + * Relationship between hsclk and vclk must follow + * vclk * bpp = hsclk * 8 * lanes + * where vclk: video clock (Hz) + * bpp: video pixel bit depth + * hsclk: DSI HS Byte clock frequency (Hz) + * lanes: number of data lanes + * + * hsclk(bit) = hsclk(byte) * 8 = hsfreq + */ + bpp = mipi_dsi_pixel_format_to_bpp(dsi->format); + vclk_rate = clk_get_rate(dsi->vclk); + *hsfreq_mhz = DIV_ROUND_CLOSEST_ULL(vclk_rate * bpp * KILO * 1ULL, + dsi->lanes); + + return 0; +} + static int rzg2l_mipi_dsi_startup(struct rzg2l_mipi_dsi *dsi, const struct drm_display_mode *mode) { - unsigned long hsfreq, vclk_rate; unsigned long long hsfreq_mhz; - unsigned int bpp; + unsigned long hsfreq; u32 txsetr; u32 clstptsetr; u32 lptrnstsetr; @@ -295,21 +323,9 @@ static int rzg2l_mipi_dsi_startup(struct rzg2l_mipi_dsi *dsi, if (ret < 0) return ret; - clk_set_rate(dsi->vclk, mode->clock * KILO); - - /* - * Relationship between hsclk and vclk must follow - * vclk * bpp = hsclk * 8 * lanes - * where vclk: video clock (Hz) - * bpp: video pixel bit depth - * hsclk: DSI HS Byte clock frequency (Hz) - * lanes: number of data lanes - * - * hsclk(bit) = hsclk(byte) * 8 = hsfreq - */ - bpp = mipi_dsi_pixel_format_to_bpp(dsi->format); - vclk_rate = clk_get_rate(dsi->vclk); - hsfreq_mhz = DIV_ROUND_CLOSEST_ULL(vclk_rate * bpp * KILO * 1ULL, dsi->lanes); + ret = dsi->info->dphy_conf_clks(dsi, mode->clock, &hsfreq_mhz); + if (ret < 0) + goto err_phy; ret = dsi->info->dphy_init(dsi, hsfreq_mhz); if (ret < 0) @@ -617,6 +633,14 @@ rzg2l_mipi_dsi_bridge_mode_valid(struct drm_bridge *bridge, if (mode->clock < dsi->info->min_dclk) return MODE_CLOCK_LOW; + if (dsi->info->dphy_mode_clk_check) { + enum drm_mode_status status; + + status = dsi->info->dphy_mode_clk_check(dsi, mode->clock); + if (status != MODE_OK) + return status; + } + return MODE_OK; } @@ -839,6 +863,7 @@ static void rzg2l_mipi_dsi_remove(struct platform_device *pdev) static const struct rzg2l_mipi_dsi_hw_info rzg2l_mipi_dsi_info = { .dphy_init = rzg2l_mipi_dsi_dphy_init, .dphy_exit = rzg2l_mipi_dsi_dphy_exit, + .dphy_conf_clks = rzg2l_dphy_conf_clks, .has_dphy_rstc = true, .link_reg_offset = 0x10000, .max_dclk = 148500, From patchwork Sun Mar 30 21:07:12 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Lad, Prabhakar" X-Patchwork-Id: 14033045 X-Patchwork-Delegate: kieran@bingham.xyz Received: from mail-wm1-f44.google.com (mail-wm1-f44.google.com [209.85.128.44]) (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 63DD81DF273; Sun, 30 Mar 2025 21:08:26 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.128.44 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1743368908; cv=none; b=oXZiH4l7lDR8pd0eM7wJFAEuE0ngPQgQFR+uDBsBdQ+BwjAk9/hpPyt+rrH+KSvtF+0YPbWJdqDgfSCqyzuDwbjDKWzSeHdNxjwjCDV2EDEAIIsdOInNyqNLP4qyjKqaadabJGnVNXjyik44XqpTnu4flnhN09bN65vAECy8iBA= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1743368908; c=relaxed/simple; bh=qbZ9CLVTvFBXb1/aDJNUu0h82il0cJdAPvAUCS+PUB8=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=oMB8SitOe2T7aRnjPXE3efwzTvq9b1E2ImVF9bn5FNSx2KRZTtJJxQctdW6/gUrmOcwsTsf6tBngF+IcTW1pYef/rZ7Pe95tfSSlsCSf495ZkSLRZqy2om9pqTNgGRg/o074Mwl8/xbri/PrTRjAJz78BqhtbBVgdl4NszdXdQE= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=iGMEBb8M; arc=none smtp.client-ip=209.85.128.44 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="iGMEBb8M" Received: by mail-wm1-f44.google.com with SMTP id 5b1f17b1804b1-43cfebc343dso28697615e9.2; Sun, 30 Mar 2025 14:08:26 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1743368905; x=1743973705; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=JgZl3iQ4HtNNUBIsgM1/CPu8w0Lc9rfs3qjDG6SyzfU=; b=iGMEBb8MXiTMtwYeKe3MCVWeoQgoH/3cV+iv7++ouftPapGsGXd3B5ijv3ur8PXeXt VDmzVdrk8hw8tnVt8oktz3h6g+UTwtJNLSdXQvzciCMilTpZbN1OjBy1ULVH4S/8rtAL 1NEaBz+HMm0ksGDfUaqKyiFfQnteCMU2c8C6PH/gfSrQUxec0EZb21yfFnz9UMi7eryo ORzRoEjvuxUVjix5dv/0XWPMNT/szujhWWXFr0YHQAdvXqYeRdSZFhNt6+/ziNgS3a7+ TeMmLtP2u12QWcPVFQAFf0jySPsvcrO4JTjhWRvePR7bkubehicyTHQOepBuU9zANj29 Qh5g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1743368905; x=1743973705; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=JgZl3iQ4HtNNUBIsgM1/CPu8w0Lc9rfs3qjDG6SyzfU=; b=GbRvdchKTBRXelGVp6bFCCJNNONX3TvTBp231Beg4ryuvu1IoVCw+nWt5CWKFH2IOf k31g3z/ovgsgn3ar0lxm0pYg2/hFIJhJYC7UcH2eDurabqQqi+IMQRRcHQc16LzJXrdm J0Q2AJAGWi7xN/3QIZIODXW/Ah7RIqY0IFpJLMiruf891y2Wthru9mTRNP9z/mMxk0T0 Xyg3aEQkqjH2sYjH+RqZA9uUkYhSqnCt1F5uRbq49UG/yZbJ3MBe23v2BUzizCXQNW0+ KoDED0wUw5+gcLznRxcRcGWeGBYXB+Ph10HLxheRAGpHgmUr7x9b5nmPESq46U3mhqWC VCjA== X-Forwarded-Encrypted: i=1; AJvYcCUP5MoEXVkRhtVorDqZgOft2Cm4OrVQOiTk9S15HYAw6E+1XN10FLSJMgPFC4UrHlmBZoCHTPcx2w+w5twjKU9hqis=@vger.kernel.org, AJvYcCVBzbBWqPMKauy9vCVC/lstU/WglGjdpXjjND/iSRZIwedX0k+6k1F9LYQB8Tdj181oW8GYuQwcXM6UII0=@vger.kernel.org, AJvYcCWAstA8NfxmQjTAzLUADN5EOkNO3yMzoZndMO6HLKXf6zPRS7ukMNbsx0Tk0sV6cxHYERI0P9RDFqp1yg91@vger.kernel.org, AJvYcCWM9oocAGU7ZIuT2xBM0kGfRF3S2kSuTuO04DpdzZULGYRp1J9TVC3MVS1vqhGofZ/qUb3bhgn/ozo=@vger.kernel.org X-Gm-Message-State: AOJu0YwX6/fo5x+e6JpJ4eb9aWICNto7nGXzFm0TWnVkeiaT9n7v9QUZ zwP91pP19ctdq3ZfGS0tixh8EjRtmJ0aURDWmcfEcZGJrgeCJ/Pm X-Gm-Gg: ASbGncuh6lOy4MPnp2fnANU4PTc6T8Zop3/m98AGmKYQDodPU06XjaFsA8iYanI6J32 zdAh/wYXrCql64Swr0pP4jVSoEsseHschYYJCUB4PphqEGBCVEBLYdF4FGdl4PYq18RPo4brWLk c+FlCkYaYVCttZJg7D4NRYvwDU2A3hgn1shxC5CAqMh+zsa9BU36xCUeFqEl2px1aAacAQgopJV cqUAmyPGZDqI3dpVOjEoVrYfueqMD+OF54iet1dJO7a+a9I1ouV0yNyvx8q7S/qfy5kCHjC6sTK uKdPvmPBZgdMK2Na6XqkQJZXtsgJPHc2+OMuhcmKyTkQknbBCNKVc9OIKpI1AOV4/+Do6hVoh5e U4zx+ X-Google-Smtp-Source: AGHT+IGfc1wGjPBYFHmkc3HGfL66Sv3eKWUxliHexa2q/W6z22Xc42Ggk4YJj7B2hkhXT+skl0n8kA== X-Received: by 2002:a05:600c:1e85:b0:43b:cc3c:60bc with SMTP id 5b1f17b1804b1-43db61fee40mr64885255e9.15.1743368904564; Sun, 30 Mar 2025 14:08:24 -0700 (PDT) Received: from iku.Home ([2a06:5906:61b:2d00:8249:9390:e853:c628]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-43d91429c36sm69778175e9.0.2025.03.30.14.08.22 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 30 Mar 2025 14:08:23 -0700 (PDT) From: Prabhakar X-Google-Original-From: Prabhakar To: Geert Uytterhoeven , Andrzej Hajda , Neil Armstrong , Robert Foss , Laurent Pinchart , Jonas Karlman , Jernej Skrabec , David Airlie , Simona Vetter , Maarten Lankhorst , Maxime Ripard , Thomas Zimmermann , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Biju Das , Mauro Carvalho Chehab , Kieran Bingham , Stephen Boyd , Philipp Zabel Cc: devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, linux-renesas-soc@vger.kernel.org, linux-media@vger.kernel.org, linux-clk@vger.kernel.org, Prabhakar , Fabrizio Castro , Lad Prabhakar Subject: [PATCH 16/17] drm: renesas: rz-du: mipi_dsi: Add support for LPCLK handling Date: Sun, 30 Mar 2025 22:07:12 +0100 Message-ID: <20250330210717.46080-17-prabhakar.mahadev-lad.rj@bp.renesas.com> X-Mailer: git-send-email 2.49.0 In-Reply-To: <20250330210717.46080-1-prabhakar.mahadev-lad.rj@bp.renesas.com> References: <20250330210717.46080-1-prabhakar.mahadev-lad.rj@bp.renesas.com> Precedence: bulk X-Mailing-List: linux-renesas-soc@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 From: Lad Prabhakar Introduce the `RZ_MIPI_DSI_HASLPCLK` feature flag in `rzg2l_mipi_dsi_hw_info` to indicate the need for LPCLK configuration. On the RZ/V2H(P) SoC, the LPCLK clock rate influences the required DPHY register configuration, whereas on the RZ/G2L SoC, this clock is not present. To accommodate this difference, add an `lpclk` clock handle in `rzg2l_mipi_dsi` and update the probe function to conditionally acquire LPCLK if the SoC supports it. Co-developed-by: Fabrizio Castro Signed-off-by: Fabrizio Castro Signed-off-by: Lad Prabhakar --- drivers/gpu/drm/renesas/rz-du/rzg2l_mipi_dsi.c | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/drivers/gpu/drm/renesas/rz-du/rzg2l_mipi_dsi.c b/drivers/gpu/drm/renesas/rz-du/rzg2l_mipi_dsi.c index 2ca725a2ccaf..26ec0f5d065a 100644 --- a/drivers/gpu/drm/renesas/rz-du/rzg2l_mipi_dsi.c +++ b/drivers/gpu/drm/renesas/rz-du/rzg2l_mipi_dsi.c @@ -31,6 +31,7 @@ struct rzg2l_mipi_dsi; #define RZ_MIPI_DSI_16BPP BIT(0) +#define RZ_MIPI_DSI_HASLPCLK BIT(1) struct rzg2l_mipi_dsi_hw_info { int (*dphy_init)(struct rzg2l_mipi_dsi *dsi, unsigned long long hsfreq_mhz); @@ -63,6 +64,7 @@ struct rzg2l_mipi_dsi { struct drm_bridge *next_bridge; struct clk *vclk; + struct clk *lpclk; enum mipi_dsi_pixel_format format; unsigned int num_data_lanes; @@ -792,6 +794,12 @@ static int rzg2l_mipi_dsi_probe(struct platform_device *pdev) if (IS_ERR(dsi->vclk)) return PTR_ERR(dsi->vclk); + if (dsi->info->features & RZ_MIPI_DSI_HASLPCLK) { + dsi->lpclk = devm_clk_get(dsi->dev, "lpclk"); + if (IS_ERR(dsi->lpclk)) + return PTR_ERR(dsi->lpclk); + } + if (dsi->info->has_dphy_rstc) { dsi->rstc = devm_reset_control_get_exclusive(dsi->dev, "rst"); if (IS_ERR(dsi->rstc)) From patchwork Sun Mar 30 21:07:13 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Lad, Prabhakar" X-Patchwork-Id: 14033046 X-Patchwork-Delegate: kieran@bingham.xyz Received: from mail-wm1-f49.google.com (mail-wm1-f49.google.com [209.85.128.49]) (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 770DD1EB5E0; Sun, 30 Mar 2025 21:08:28 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.128.49 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1743368910; cv=none; b=NaNcdfpSZF62LiAcZ9xZfPlIzlO8e8Uqw/x2xexnFkD4yMVejRc022ZDOwTJywe6CuXtOro9h2NWOz3quwkksaC+r3MKcxRTm5ecGKe2r/aGtwtcw0B3wmz7aaehJ9SLRyGmvzQ+oQuar+JydVerWVEWrLWrKeGnXgoZNOTXr50= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1743368910; c=relaxed/simple; bh=EOlXNzWhtfr9tAcWkH0F7AZwdis5Q+o4iJ7vXoW1Lks=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=HG5081A1WltPNNgL8A6O6hmHZJul6zc3XhkRNClSL8lmWW2VETtbZkuHhhfMmtqb8fMpTJgXwFVBuBv19L3pga0GI8H2YtCOBE42Hk1f1NDA0CQfyg6pTLmJNw0zUC+nCksLnaLK0tzZudWcpqZ3RxG3ZIljjNGuMCGyt6McWfA= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=MToTT07m; arc=none smtp.client-ip=209.85.128.49 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="MToTT07m" Received: by mail-wm1-f49.google.com with SMTP id 5b1f17b1804b1-43cfba466b2so38506845e9.3; Sun, 30 Mar 2025 14:08:28 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1743368907; x=1743973707; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=WJ59l6m6bxVI27Mf+5asUd1VDrpUuWbhL/i0GCBY5dQ=; b=MToTT07mHJ1LLayGZ5a/87S1KYW0pmYuqsDRQVGsa0/fc8imaQ50W9WIEYPNLtZ+Sy H6UC+8OY43TX3zYEqMsdnl9z+k3NjnM7UncvCQcV+3YADghRrWh2NuRd8maqDdSE6xBh 2nA3CGckskNhnder0HAVY2Fh3FTLBUv4UysLdckfEYtUi8pkPI9v4CnVJs3Cnm1hLb7Q Qz+KyCgqlFENQ/llKIh32olkuVKUQGePcRp9Ewsn5RRkJBdDYVz7wL2HgdVVP6obwOJb Bbfi/vqnfmYq3yFTIfu1TugM8jJRskpQKPED9MZlYPTyqw42mb6lU2QZFHYVwTm80OaN 8m0w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1743368907; x=1743973707; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=WJ59l6m6bxVI27Mf+5asUd1VDrpUuWbhL/i0GCBY5dQ=; b=QAOPxa/SXW1UgF30VrpV0qq7zOwuU+LqlxLj6VoE99JTsRtiJEem2Gu0IVBbNpBcmm +4TrSpemVn6xhCzY5FJGQ+13seWuORa+zlEELX78Gqju8muSeiofausStdDxnl1A4/mA sTTquzCsSdL9tICSqeYspp9m9eY6YYWcO5EYzzwQf+Goa2S6fKVCOYVxaFRJ37zpB4Gl JNF7NHz6gG+bi2sjYE677pSCdoHQ8iSnYEakn1FmO5XTZg2fIfKbKX5UyU4Xj4DI4KQ2 8q7tW7qQJCwubWtSIFCtRa59uTjAlx4jd6K3PK1gPzqgByKJPURbOvxLub8Ty/BmaTSN G+/g== X-Forwarded-Encrypted: i=1; AJvYcCUEIyrUIE21eh7Unsn+QSq0sGqfPa1TLPSLv4MvslngR8y5RsLLLFMQqFgUNvPXhQJiow0DHJ0MzHwEOxEY1D1iEWo=@vger.kernel.org, AJvYcCV+dcBSXxQvOR+iqP9rpLoRINBCMuWVxrn3izYgIUL+R/XUxtd47E/8avmgSDcIC3tEK+x9PkYXyOanaoQ/@vger.kernel.org, AJvYcCW0Psd2C6/6jp/+gvWSvU/tNOMjS6BMTj8rFZDEUQa808e2bsMJ9l+kwQHHK6TCB3xtHKYiYmM0qU89W9I=@vger.kernel.org, AJvYcCW48oFmrkU6EHz9HGklNzx/He50drxesEAp9H9jZhVcINiAhEm+OBO996sgoiNo2g8O7bzeMz6TkhQ=@vger.kernel.org X-Gm-Message-State: AOJu0Yyuv8whviQIU7+K1o2haaQ4mfupizbcZjsQCBfM+RkXeJfq3UTA s/3GT1tZmtjWI1yRkiipkHAMH32NACsou6Yp8eFuuj6HYqBvoZ31 X-Gm-Gg: ASbGnctuKNwo/fXFU2rsaMVdk2RowpCDTuwNlYocrKMaginmQkC63sRxKY9c9liOoPb X63RE8c6kUL09Tf99zIegmGj/dEbWOhKt4xvAP7BTo+ZFYx77PTN8bTUNps/WhzBDIqkZU/ocaI 2CZJLQKsVIe1QJTyizfgI2R9Nskp53ckD/t/vXSV5BjaRadWHRPHVX1o+Fe9JbNEtQFoa4wEWVC w6JEKe05mq3Qysg0Sp4OQiPhIq3j5WF4T0N2zCHapmTPHjqsvz6rNiJxXXzyMX4SnF2yNcrTYNj PsD6UGanUCKyqRAmmkq0RCVyqi0VSdue0juLLpZSMJr5Fg7YHDTNKruZ9dc47gji6JHQow== X-Google-Smtp-Source: AGHT+IGjVJQZz2HxzJy2yVEAVVveqTf//VEVqZTHpwQmKQoCMS/wVznctuwfhdYxAYIQgxUkqcaazw== X-Received: by 2002:a05:600c:870c:b0:43d:683:8cb2 with SMTP id 5b1f17b1804b1-43db624a3dbmr63640155e9.14.1743368906464; Sun, 30 Mar 2025 14:08:26 -0700 (PDT) Received: from iku.Home ([2a06:5906:61b:2d00:8249:9390:e853:c628]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-43d91429c36sm69778175e9.0.2025.03.30.14.08.24 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 30 Mar 2025 14:08:25 -0700 (PDT) From: Prabhakar X-Google-Original-From: Prabhakar To: Geert Uytterhoeven , Andrzej Hajda , Neil Armstrong , Robert Foss , Laurent Pinchart , Jonas Karlman , Jernej Skrabec , David Airlie , Simona Vetter , Maarten Lankhorst , Maxime Ripard , Thomas Zimmermann , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Biju Das , Mauro Carvalho Chehab , Kieran Bingham , Stephen Boyd , Philipp Zabel Cc: devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, linux-renesas-soc@vger.kernel.org, linux-media@vger.kernel.org, linux-clk@vger.kernel.org, Prabhakar , Fabrizio Castro , Lad Prabhakar Subject: [PATCH 17/17] drm: renesas: rz-du: mipi_dsi: Add support for RZ/V2H(P) SoC Date: Sun, 30 Mar 2025 22:07:13 +0100 Message-ID: <20250330210717.46080-18-prabhakar.mahadev-lad.rj@bp.renesas.com> X-Mailer: git-send-email 2.49.0 In-Reply-To: <20250330210717.46080-1-prabhakar.mahadev-lad.rj@bp.renesas.com> References: <20250330210717.46080-1-prabhakar.mahadev-lad.rj@bp.renesas.com> Precedence: bulk X-Mailing-List: linux-renesas-soc@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 From: Lad Prabhakar Add DSI support for Renesas RZ/V2H(P) SoC. Co-developed-by: Fabrizio Castro Signed-off-by: Fabrizio Castro Signed-off-by: Lad Prabhakar --- .../gpu/drm/renesas/rz-du/rzg2l_mipi_dsi.c | 450 ++++++++++++++++++ .../drm/renesas/rz-du/rzg2l_mipi_dsi_regs.h | 40 ++ 2 files changed, 490 insertions(+) diff --git a/drivers/gpu/drm/renesas/rz-du/rzg2l_mipi_dsi.c b/drivers/gpu/drm/renesas/rz-du/rzg2l_mipi_dsi.c index 26ec0f5d065a..3a70f479d473 100644 --- a/drivers/gpu/drm/renesas/rz-du/rzg2l_mipi_dsi.c +++ b/drivers/gpu/drm/renesas/rz-du/rzg2l_mipi_dsi.c @@ -5,6 +5,7 @@ * Copyright (C) 2022 Renesas Electronics Corporation */ #include +#include #include #include #include @@ -30,6 +31,9 @@ struct rzg2l_mipi_dsi; +#define RZV2H_MIPI_DPHY_FOUT_MIN_IN_MEGA (80 * MEGA) +#define RZV2H_MIPI_DPHY_FOUT_MAX_IN_MEGA (1500 * MEGA) + #define RZ_MIPI_DSI_16BPP BIT(0) #define RZ_MIPI_DSI_HASLPCLK BIT(1) @@ -41,6 +45,7 @@ struct rzg2l_mipi_dsi_hw_info { unsigned long long *hsfreq_mhz); unsigned int (*dphy_mode_clk_check)(struct rzg2l_mipi_dsi *dsi, unsigned long mode_freq); + const struct rzv2h_plldsi_div_limits *cpg_dsi_limits; u32 phy_reg_offset; u32 link_reg_offset; unsigned long max_dclk; @@ -49,6 +54,11 @@ struct rzg2l_mipi_dsi_hw_info { u8 features; }; +struct rzv2h_dsi_mode_calc { + unsigned long mode_freq; + unsigned long long mode_freq_hz; +}; + struct rzg2l_mipi_dsi { struct device *dev; void __iomem *mmio; @@ -70,6 +80,18 @@ struct rzg2l_mipi_dsi { unsigned int num_data_lanes; unsigned int lanes; unsigned long mode_flags; + + struct rzv2h_dsi_mode_calc mode_calc; + struct rzv2h_plldsi_parameters dsi_parameters; +}; + +static const struct rzv2h_plldsi_div_limits rzv2h_plldsi_div_limits = { + .m = { .min = 64, .max = 1023 }, + .p = { .min = 1, .max = 4 }, + .s = { .min = 0, .max = 5 }, + .k = { .min = -32768, .max = 32767 }, + .csdiv = { .min = 1, .max = 1 }, + .fvco = { .min = 1050 * MEGA, .max = 2100 * MEGA } }; static inline struct rzg2l_mipi_dsi * @@ -186,6 +208,249 @@ static const struct rzg2l_mipi_dsi_timings rzg2l_mipi_dsi_global_timings[] = { }, }; +struct rzv2h_mipi_dsi_timings { + unsigned long hsfreq; + u16 value; +}; + +static const struct rzv2h_mipi_dsi_timings TCLKPRPRCTL[] = { + {150000000UL, 0}, + {260000000UL, 1}, + {370000000UL, 2}, + {470000000UL, 3}, + {580000000UL, 4}, + {690000000UL, 5}, + {790000000UL, 6}, + {900000000UL, 7}, + {1010000000UL, 8}, + {1110000000UL, 9}, + {1220000000UL, 10}, + {1330000000UL, 11}, + {1430000000UL, 12}, + {1500000000UL, 13}, +}; + +static const struct rzv2h_mipi_dsi_timings TCLKZEROCTL[] = { + {90000000UL, 2}, + {110000000UL, 3}, + {130000000UL, 4}, + {150000000UL, 5}, + {180000000UL, 6}, + {210000000UL, 7}, + {230000000UL, 8}, + {240000000UL, 9}, + {250000000UL, 10}, + {270000000UL, 11}, + {290000000UL, 12}, + {310000000UL, 13}, + {340000000UL, 14}, + {360000000UL, 15}, + {380000000UL, 16}, + {410000000UL, 17}, + {430000000UL, 18}, + {450000000UL, 19}, + {470000000UL, 20}, + {500000000UL, 21}, + {520000000UL, 22}, + {540000000UL, 23}, + {570000000UL, 24}, + {590000000UL, 25}, + {610000000UL, 26}, + {630000000UL, 27}, + {660000000UL, 28}, + {680000000UL, 29}, + {700000000UL, 30}, + {730000000UL, 31}, + {750000000UL, 32}, + {770000000UL, 33}, + {790000000UL, 34}, + {820000000UL, 35}, + {840000000UL, 36}, + {860000000UL, 37}, + {890000000UL, 38}, + {910000000UL, 39}, + {930000000UL, 40}, + {950000000UL, 41}, + {980000000UL, 42}, + {1000000000UL, 43}, + {1020000000UL, 44}, + {1050000000UL, 45}, + {1070000000UL, 46}, + {1090000000UL, 47}, + {1110000000UL, 48}, + {1140000000UL, 49}, + {1160000000UL, 50}, + {1180000000UL, 51}, + {1210000000UL, 52}, + {1230000000UL, 53}, + {1250000000UL, 54}, + {1270000000UL, 55}, + {1300000000UL, 56}, + {1320000000UL, 57}, + {1340000000UL, 58}, + {1370000000UL, 59}, + {1390000000UL, 60}, + {1410000000UL, 61}, + {1430000000UL, 62}, + {1460000000UL, 63}, + {1480000000UL, 64}, + {1500000000UL, 65}, +}; + +static const struct rzv2h_mipi_dsi_timings TCLKPOSTCTL[] = { + {80000000UL, 6}, + {210000000UL, 7}, + {340000000UL, 8}, + {480000000UL, 9}, + {610000000UL, 10}, + {740000000UL, 11}, + {880000000UL, 12}, + {1010000000UL, 13}, + {1140000000UL, 14}, + {1280000000UL, 15}, + {1410000000UL, 16}, + {1500000000UL, 17}, +}; + +static const struct rzv2h_mipi_dsi_timings TCLKTRAILCTL[] = { + {140000000UL, 1}, + {250000000UL, 2}, + {370000000UL, 3}, + {480000000UL, 4}, + {590000000UL, 5}, + {710000000UL, 6}, + {820000000UL, 7}, + {940000000UL, 8}, + {1050000000UL, 9}, + {1170000000UL, 10}, + {1280000000UL, 11}, + {1390000000UL, 12}, + {1500000000UL, 13}, +}; + +static const struct rzv2h_mipi_dsi_timings THSPRPRCTL[] = { + {110000000UL, 0}, + {190000000UL, 1}, + {290000000UL, 2}, + {400000000UL, 3}, + {500000000UL, 4}, + {610000000UL, 5}, + {720000000UL, 6}, + {820000000UL, 7}, + {930000000UL, 8}, + {1030000000UL, 9}, + {1140000000UL, 10}, + {1250000000UL, 11}, + {1350000000UL, 12}, + {1460000000UL, 13}, + {1500000000UL, 14}, +}; + +static const struct rzv2h_mipi_dsi_timings THSZEROCTL[] = { + {180000000UL, 0}, + {240000000UL, 1}, + {290000000UL, 2}, + {350000000UL, 3}, + {400000000UL, 4}, + {460000000UL, 5}, + {510000000UL, 6}, + {570000000UL, 7}, + {620000000UL, 8}, + {680000000UL, 9}, + {730000000UL, 10}, + {790000000UL, 11}, + {840000000UL, 12}, + {900000000UL, 13}, + {950000000UL, 14}, + {1010000000UL, 15}, + {1060000000UL, 16}, + {1120000000UL, 17}, + {1170000000UL, 18}, + {1230000000UL, 19}, + {1280000000UL, 20}, + {1340000000UL, 21}, + {1390000000UL, 22}, + {1450000000UL, 23}, + {1500000000UL, 24}, +}; + +static const struct rzv2h_mipi_dsi_timings THSTRAILCTL[] = { + {100000000UL, 3}, + {210000000UL, 4}, + {320000000UL, 5}, + {420000000UL, 6}, + {530000000UL, 7}, + {640000000UL, 8}, + {750000000UL, 9}, + {850000000UL, 10}, + {960000000UL, 11}, + {1070000000UL, 12}, + {1180000000UL, 13}, + {1280000000UL, 14}, + {1390000000UL, 15}, + {1500000000UL, 16}, +}; + +static const struct rzv2h_mipi_dsi_timings TLPXCTL[] = { + {130000000UL, 0}, + {260000000UL, 1}, + {390000000UL, 2}, + {530000000UL, 3}, + {660000000UL, 4}, + {790000000UL, 5}, + {930000000UL, 6}, + {1060000000UL, 7}, + {1190000000UL, 8}, + {1330000000UL, 9}, + {1460000000UL, 10}, + {1500000000UL, 11}, +}; + +static const struct rzv2h_mipi_dsi_timings THSEXITCTL[] = { + {150000000UL, 1}, + {230000000UL, 2}, + {310000000UL, 3}, + {390000000UL, 4}, + {470000000UL, 5}, + {550000000UL, 6}, + {630000000UL, 7}, + {710000000UL, 8}, + {790000000UL, 9}, + {870000000UL, 10}, + {950000000UL, 11}, + {1030000000UL, 12}, + {1110000000UL, 13}, + {1190000000UL, 14}, + {1270000000UL, 15}, + {1350000000UL, 16}, + {1430000000UL, 17}, + {1500000000UL, 18}, +}; + +static const struct rzv2h_mipi_dsi_timings ULPSEXIT[] = { + {1953125UL, 49}, + {3906250UL, 98}, + {7812500UL, 195}, + {15625000UL, 391}, +}; + +static int rzv2h_dphy_find_timings_val(unsigned long freq, + const struct rzv2h_mipi_dsi_timings timings[], + unsigned int size) +{ + unsigned int i; + + for (i = 0; i < size; i++) { + if (freq <= timings[i].hsfreq) + break; + } + + if (i == size) + i -= 1; + + return timings[i].value; +}; + static void rzg2l_mipi_dsi_phy_write(struct rzg2l_mipi_dsi *dsi, u32 reg, u32 data) { iowrite32(data, dsi->mmio + dsi->info->phy_reg_offset + reg); @@ -307,6 +572,168 @@ static int rzg2l_dphy_conf_clks(struct rzg2l_mipi_dsi *dsi, unsigned long mode_f return 0; } +static unsigned int rzv2h_dphy_mode_clk_check(struct rzg2l_mipi_dsi *dsi, + unsigned long mode_freq) +{ + struct rzv2h_plldsi_parameters *dsi_parameters = &dsi->dsi_parameters; + unsigned long long hsfreq_mhz, mode_freq_hz, mode_freq_mhz; + struct rzv2h_plldsi_parameters cpg_dsi_parameters; + unsigned int bpp, i; + + bpp = mipi_dsi_pixel_format_to_bpp(dsi->format); + + for (i = 0; i < 10; i += 1) { + unsigned long hsfreq; + bool parameters_found; + + mode_freq_hz = mode_freq * KILO + i; + mode_freq_mhz = mode_freq_hz * KILO * 1ULL; + parameters_found = rzv2h_dsi_get_pll_parameters_values(dsi->info->cpg_dsi_limits, + &cpg_dsi_parameters, + mode_freq_mhz); + if (!parameters_found) + continue; + + hsfreq_mhz = DIV_ROUND_CLOSEST_ULL(cpg_dsi_parameters.freq_mhz * bpp, dsi->lanes); + parameters_found = rzv2h_dsi_get_pll_parameters_values(&rzv2h_plldsi_div_limits, + dsi_parameters, + hsfreq_mhz); + if (!parameters_found) + continue; + + if (abs(dsi_parameters->error_mhz) >= 500) + continue; + + hsfreq = DIV_ROUND_CLOSEST_ULL(hsfreq_mhz, KILO); + if (hsfreq >= RZV2H_MIPI_DPHY_FOUT_MIN_IN_MEGA && + hsfreq <= RZV2H_MIPI_DPHY_FOUT_MAX_IN_MEGA) { + dsi->mode_calc.mode_freq_hz = mode_freq_hz; + dsi->mode_calc.mode_freq = mode_freq; + return MODE_OK; + } + } + + return MODE_CLOCK_RANGE; +} + +static int rzv2h_dphy_conf_clks(struct rzg2l_mipi_dsi *dsi, unsigned long mode_freq, + unsigned long long *hsfreq_mhz) +{ + struct rzv2h_plldsi_parameters *dsi_parameters = &dsi->dsi_parameters; + unsigned long status; + + if (dsi->mode_calc.mode_freq != mode_freq) { + status = rzv2h_dphy_mode_clk_check(dsi, mode_freq); + if (status != MODE_OK) { + dev_err(dsi->dev, "No PLL parameters found for mode clk %lu\n", + mode_freq); + return -EINVAL; + } + } + + clk_set_rate(dsi->vclk, dsi->mode_calc.mode_freq_hz); + *hsfreq_mhz = dsi_parameters->freq_mhz; + + return 0; +} + +static int rzv2h_mipi_dsi_dphy_init(struct rzg2l_mipi_dsi *dsi, + unsigned long long hsfreq_mhz) +{ + struct rzv2h_plldsi_parameters *dsi_parameters = &dsi->dsi_parameters; + unsigned long lpclk_rate = clk_get_rate(dsi->lpclk); + u32 phytclksetr, phythssetr, phytlpxsetr, phycr; + struct rzg2l_mipi_dsi_timings dphy_timings; + unsigned long long hsfreq; + u32 ulpsexit; + + hsfreq = DIV_ROUND_CLOSEST_ULL(hsfreq_mhz, KILO); + + if (dsi_parameters->freq_mhz == hsfreq_mhz) + goto parameters_found; + + if (rzv2h_dsi_get_pll_parameters_values(&rzv2h_plldsi_div_limits, + dsi_parameters, hsfreq_mhz)) + goto parameters_found; + + dev_err(dsi->dev, "No PLL parameters found for HSFREQ %lluHz\n", hsfreq); + return -EINVAL; + +parameters_found: + dphy_timings.tclk_trail = + rzv2h_dphy_find_timings_val(hsfreq, TCLKTRAILCTL, + ARRAY_SIZE(TCLKTRAILCTL)); + dphy_timings.tclk_post = + rzv2h_dphy_find_timings_val(hsfreq, TCLKPOSTCTL, + ARRAY_SIZE(TCLKPOSTCTL)); + dphy_timings.tclk_zero = + rzv2h_dphy_find_timings_val(hsfreq, TCLKZEROCTL, + ARRAY_SIZE(TCLKZEROCTL)); + dphy_timings.tclk_prepare = + rzv2h_dphy_find_timings_val(hsfreq, TCLKPRPRCTL, + ARRAY_SIZE(TCLKPRPRCTL)); + dphy_timings.ths_exit = + rzv2h_dphy_find_timings_val(hsfreq, THSEXITCTL, + ARRAY_SIZE(THSEXITCTL)); + dphy_timings.ths_trail = + rzv2h_dphy_find_timings_val(hsfreq, THSTRAILCTL, + ARRAY_SIZE(THSTRAILCTL)); + dphy_timings.ths_zero = + rzv2h_dphy_find_timings_val(hsfreq, THSZEROCTL, + ARRAY_SIZE(THSZEROCTL)); + dphy_timings.ths_prepare = + rzv2h_dphy_find_timings_val(hsfreq, THSPRPRCTL, + ARRAY_SIZE(THSPRPRCTL)); + dphy_timings.tlpx = + rzv2h_dphy_find_timings_val(hsfreq, TLPXCTL, + ARRAY_SIZE(TLPXCTL)); + ulpsexit = + rzv2h_dphy_find_timings_val(lpclk_rate, ULPSEXIT, + ARRAY_SIZE(ULPSEXIT)); + + phytclksetr = PHYTCLKSETR_TCLKTRAILCTL(dphy_timings.tclk_trail) | + PHYTCLKSETR_TCLKPOSTCTL(dphy_timings.tclk_post) | + PHYTCLKSETR_TCLKZEROCTL(dphy_timings.tclk_zero) | + PHYTCLKSETR_TCLKPRPRCTL(dphy_timings.tclk_prepare); + phythssetr = PHYTHSSETR_THSEXITCTL(dphy_timings.ths_exit) | + PHYTHSSETR_THSTRAILCTL(dphy_timings.ths_trail) | + PHYTHSSETR_THSZEROCTL(dphy_timings.ths_zero) | + PHYTHSSETR_THSPRPRCTL(dphy_timings.ths_prepare); + phytlpxsetr = rzg2l_mipi_dsi_phy_read(dsi, PHYTLPXSETR) & ~GENMASK(7, 0); + phytlpxsetr |= PHYTLPXSETR_TLPXCTL(dphy_timings.tlpx); + phycr = rzg2l_mipi_dsi_phy_read(dsi, PHYCR) & ~GENMASK(9, 0); + phycr |= PHYCR_ULPSEXIT(ulpsexit); + + /* Setting all D-PHY Timings Registers */ + rzg2l_mipi_dsi_phy_write(dsi, PHYTCLKSETR, phytclksetr); + rzg2l_mipi_dsi_phy_write(dsi, PHYTHSSETR, phythssetr); + rzg2l_mipi_dsi_phy_write(dsi, PHYTLPXSETR, phytlpxsetr); + rzg2l_mipi_dsi_phy_write(dsi, PHYCR, phycr); + + rzg2l_mipi_dsi_phy_write(dsi, PLLCLKSET0R, + PLLCLKSET0R_PLL_S(dsi_parameters->s) | + PLLCLKSET0R_PLL_P(dsi_parameters->p) | + PLLCLKSET0R_PLL_M(dsi_parameters->m)); + rzg2l_mipi_dsi_phy_write(dsi, PLLCLKSET1R, PLLCLKSET1R_PLL_K(dsi_parameters->k)); + udelay(20); + + rzg2l_mipi_dsi_phy_write(dsi, PLLENR, PLLENR_PLLEN); + udelay(500); + + return 0; +} + +static void rzv2h_mipi_dsi_dphy_late_init(struct rzg2l_mipi_dsi *dsi) +{ + udelay(220); + rzg2l_mipi_dsi_phy_write(dsi, PHYRSTR, PHYRSTR_PHYMRSTN); +} + +static void rzv2h_mipi_dsi_dphy_exit(struct rzg2l_mipi_dsi *dsi) +{ + rzg2l_mipi_dsi_phy_write(dsi, PLLENR, 0); +} + static int rzg2l_mipi_dsi_startup(struct rzg2l_mipi_dsi *dsi, const struct drm_display_mode *mode) { @@ -409,6 +836,9 @@ static void rzg2l_mipi_dsi_set_display_timing(struct rzg2l_mipi_dsi *dsi, case 18: vich1ppsetr = VICH1PPSETR_DT_RGB18; break; + case 16: + vich1ppsetr = VICH1PPSETR_DT_RGB16; + break; } if ((dsi->mode_flags & MIPI_DSI_MODE_VIDEO_SYNC_PULSE) && @@ -439,6 +869,9 @@ static void rzg2l_mipi_dsi_set_display_timing(struct rzg2l_mipi_dsi *dsi, rzg2l_mipi_dsi_link_write(dsi, VICH1HSSETR, vich1hssetr); rzg2l_mipi_dsi_link_write(dsi, VICH1HPSETR, vich1hpsetr); + if (dsi->info->dphy_late_init) + dsi->info->dphy_late_init(dsi); + /* * Configuration for Delay Value * Delay value based on 2 ranges of video clock. @@ -868,6 +1301,22 @@ static void rzg2l_mipi_dsi_remove(struct platform_device *pdev) pm_runtime_disable(&pdev->dev); } +RZV2H_CPG_PLL_DSI_LIMITS(rzv2h_cpg_pll_dsi_limits); + +static const struct rzg2l_mipi_dsi_hw_info rzv2h_mipi_dsi_info = { + .dphy_init = rzv2h_mipi_dsi_dphy_init, + .dphy_late_init = rzv2h_mipi_dsi_dphy_late_init, + .dphy_exit = rzv2h_mipi_dsi_dphy_exit, + .dphy_mode_clk_check = rzv2h_dphy_mode_clk_check, + .dphy_conf_clks = rzv2h_dphy_conf_clks, + .cpg_dsi_limits = &rzv2h_cpg_pll_dsi_limits, + .phy_reg_offset = 0x10000, + .link_reg_offset = 0, + .max_dclk = 187500, + .min_dclk = 5440, + .features = RZ_MIPI_DSI_16BPP, +}; + static const struct rzg2l_mipi_dsi_hw_info rzg2l_mipi_dsi_info = { .dphy_init = rzg2l_mipi_dsi_dphy_init, .dphy_exit = rzg2l_mipi_dsi_dphy_exit, @@ -879,6 +1328,7 @@ static const struct rzg2l_mipi_dsi_hw_info rzg2l_mipi_dsi_info = { }; static const struct of_device_id rzg2l_mipi_dsi_of_table[] = { + { .compatible = "renesas,r9a09g057-mipi-dsi", .data = &rzv2h_mipi_dsi_info, }, { .compatible = "renesas,rzg2l-mipi-dsi", .data = &rzg2l_mipi_dsi_info, }, { /* sentinel */ } }; diff --git a/drivers/gpu/drm/renesas/rz-du/rzg2l_mipi_dsi_regs.h b/drivers/gpu/drm/renesas/rz-du/rzg2l_mipi_dsi_regs.h index 16efe4dc59f4..81ce0c37aacb 100644 --- a/drivers/gpu/drm/renesas/rz-du/rzg2l_mipi_dsi_regs.h +++ b/drivers/gpu/drm/renesas/rz-du/rzg2l_mipi_dsi_regs.h @@ -40,6 +40,45 @@ #define DSIDPHYTIM3_THS_TRAIL(x) ((x) << 8) #define DSIDPHYTIM3_THS_ZERO(x) ((x) << 0) +/* RZ/V2H DPHY Registers */ +#define PLLENR 0x000 +#define PLLENR_PLLEN BIT(0) + +#define PHYRSTR 0x004 +#define PHYRSTR_PHYMRSTN BIT(0) + +#define PLLCLKSET0R 0x010 +#define PLLCLKSET0R_PLL_S(x) ((x) << 0) +#define PLLCLKSET0R_PLL_P(x) ((x) << 8) +#define PLLCLKSET0R_PLL_M(x) ((x) << 16) + +#define PLLCLKSET1R 0x014 +#define PLLCLKSET1R_PLL_K(x) ((x) << 0) + +#define PHYTCLKSETR 0x020 +#define PHYTCLKSETR_TCLKTRAILCTL(x) ((x) << 0) +#define PHYTCLKSETR_TCLKPOSTCTL(x) ((x) << 8) +#define PHYTCLKSETR_TCLKZEROCTL(x) ((x) << 16) +#define PHYTCLKSETR_TCLKPRPRCTL(x) ((x) << 24) + +#define PHYTHSSETR 0x024 +#define PHYTHSSETR_THSEXITCTL(x) ((x) << 0) +#define PHYTHSSETR_THSTRAILCTL(x) ((x) << 8) +#define PHYTHSSETR_THSZEROCTL(x) ((x) << 16) +#define PHYTHSSETR_THSPRPRCTL(x) ((x) << 24) + +#define PHYTLPXSETR 0x028 +#define PHYTLPXSETR_TLPXCTL(x) ((x) << 0) + +#define PHYCR 0x030 +#define PHYCR_ULPSEXIT(x) ((x) << 0) + +#define PHYC1R 0x034 + +#define PHYC2R 0x038 + +#define PHYC3R 0x03c + /* --------------------------------------------------------*/ /* Link Status Register */ @@ -116,6 +155,7 @@ /* Video-Input Channel 1 Pixel Packet Set Register */ #define VICH1PPSETR 0x420 +#define VICH1PPSETR_DT_RGB16 (0x0e << 16) #define VICH1PPSETR_DT_RGB18 (0x1e << 16) #define VICH1PPSETR_DT_RGB18_LS (0x2e << 16) #define VICH1PPSETR_DT_RGB24 (0x3e << 16)