Received: by 2002:a05:6358:9144:b0:117:f937:c515 with SMTP id r4csp5370158rwr; Mon, 24 Apr 2023 03:10:06 -0700 (PDT) X-Google-Smtp-Source: AKy350aCldEkJf6UQxQgjfwIiDzDwnCOS24LY+IAJzcs2o/tVnBQC7XkBgnZoJNfo7uJSqAVvgx/ X-Received: by 2002:a05:6a00:1582:b0:63d:259b:b5ca with SMTP id u2-20020a056a00158200b0063d259bb5camr16902246pfk.11.1682331006587; Mon, 24 Apr 2023 03:10:06 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1682331006; cv=none; d=google.com; s=arc-20160816; b=PifCRx6bMyVFM/lmQiFoT/uxM8GtAu8E1AuOSteIMI97K/bzpY+PxeaGYI2gqBKtqO qz3gbdgYE0eMIPbdFE4B0pzTYSfPue2nY9YKXeEG9DNYKZ8a0uLdRBqioQ0nmz7Djpaf 4AvSQrP5jC9Hi1hkCcvNKsXdU+grFzN2SuxNMzB0Np9pb/SkaRXk3uu2IVTpQdzEOu32 1hJqOgHtRp9ZhHSevz2vvOKwzv7jkknMfxut5jFqDJHE4koiWtySrSz8QtsSkKeeG9t0 6q0IKV3l7rmeQIQz1IoKDqAJ/zwSsyEFf7ZPvYVPecHftPU2XsXWgaM94TfLebjk9R8s 6UAA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:cc:to:subject :message-id:date:from:in-reply-to:references:mime-version :dkim-signature; bh=pUMRNHc1IOPvtn61NaRliWajnbOQ2JnYVpMoyrR6jps=; b=Pq5hco4BKjWtqJqgiosRooovgPCicrVD8MKDj/5NXCo1n4cF4MwMDjCC+Bu96+lqvn iOlY0CjnfT77461rMKvuWcYsaTddR2lWwWPjRdS/EdCPgtsQHZq3iLrpOqrN8uVjjoWJ FGVdvigKo2qH9Z+aX8pFYBGIBZUpE8al6JR4+9eScrZYvw65l5jRR6vtQOOXcdktLMDo B0aZa3bO20GEl52YQi+sMzH3oedL1EovrTCP/AICAX8g/JZmM43lNeBi+kZayP/uE0+Q nsaZInT0wXBeFW9LL43kPKg80FFQSyARThim8fefP2DBrvr2k67wCXj1zkAWOG4C7GQm jbHA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@gmail.com header.s=20221208 header.b=ksjcdvRa; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Return-Path: Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id m14-20020a63580e000000b005137bf7e2d4si11046764pgb.652.2023.04.24.03.09.52; Mon, 24 Apr 2023 03:10:06 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; dkim=pass header.i=@gmail.com header.s=20221208 header.b=ksjcdvRa; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S231583AbjDXKAX (ORCPT + 99 others); Mon, 24 Apr 2023 06:00:23 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:59226 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S231539AbjDXKAW (ORCPT ); Mon, 24 Apr 2023 06:00:22 -0400 Received: from mail-pg1-x530.google.com (mail-pg1-x530.google.com [IPv6:2607:f8b0:4864:20::530]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 0C8CA196 for ; Mon, 24 Apr 2023 03:00:21 -0700 (PDT) Received: by mail-pg1-x530.google.com with SMTP id 41be03b00d2f7-51b6d0b9430so3272687a12.2 for ; Mon, 24 Apr 2023 03:00:21 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20221208; t=1682330420; x=1684922420; h=content-transfer-encoding:cc:to:subject:message-id:date:from :in-reply-to:references:mime-version:from:to:cc:subject:date :message-id:reply-to; bh=pUMRNHc1IOPvtn61NaRliWajnbOQ2JnYVpMoyrR6jps=; b=ksjcdvRamKkSMZEKA/vEAJ0XlgtzkXUIkC/Du4VtUU9X7CTiVzPMYUvDjSa3c5+4li x1zzd+9epZfHWAAwIcEa2E/n6sf5GZnQS4iYJM++OotNWPsHxewi3uPc686+XmMJik9G I/9DjXUg04FNDgiZg5B0QHdVjT4f5SlszJEUtAc1tVWLaemQmdo20Qo7bgpjARJVqXKx bMFlNL9lpNmTRCmBHrVDjDMiB56wJnhJAZnXTbeGw9zf9EYvQphDYAhm4Y7ytviRrH9o ezkINx3DgZirGId7U4BLS4yEg7J0cE+Aq3uGNCWl2yesZsmq2y9wO4Pg8T+DCIEioLIU 3J2A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1682330420; x=1684922420; h=content-transfer-encoding:cc:to:subject:message-id:date:from :in-reply-to:references:mime-version:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=pUMRNHc1IOPvtn61NaRliWajnbOQ2JnYVpMoyrR6jps=; b=HIqUEhUsA8mXjVSadWDJ0A6pdCSnGh9F+maLwWBBblxd8LE6WSDkDn2mrBQJzwexep kelg1dj40kfvr+u8Ew6V++/XSgtJkQMdLvU2VlIpJISeMzLCtHkL0V/ClMNiPMVbKIV1 JFEtIlwLfBwvw5zv0gNKc8LCpxdUFfjnSfQrxkQTQOIks1NdsXylfZqC7Pf/ipru1NWL Iux1StgzIeEzhHxaQMaY/y5+cV5PVEiQ1Q/5VJSCur58s8h4vypY66jBSrXhg3dhBxl5 SpQAoRHdek4kMIn0T9x8Iw481T8KBV3EWzxtupyST1jTwAkKeWLS27bw2h2cfIjv6DA8 TFDQ== X-Gm-Message-State: AAQBX9c12gAXMkSboLs5fHrMkpFwhLRBIDki632YzPVmyXqiQjxvkSGX yjMZoh9S9ljkCT8zKzUTTA3Biwsrxa/pMLl7yPM= X-Received: by 2002:a17:90a:4b42:b0:247:944d:b75e with SMTP id o2-20020a17090a4b4200b00247944db75emr13573601pjl.12.1682330420421; Mon, 24 Apr 2023 03:00:20 -0700 (PDT) MIME-Version: 1.0 References: <20230423121232.1345909-1-aford173@gmail.com> <20230423121232.1345909-6-aford173@gmail.com> In-Reply-To: From: Adam Ford Date: Mon, 24 Apr 2023 05:00:09 -0500 Message-ID: Subject: Re: [PATCH V2 5/6] drm: bridge: samsung-dsim: Support non-burst mode To: Marek Szyprowski Cc: dri-devel@lists.freedesktop.org, aford@beaconembedded.com, dario.binacchi@amarulasolutions.com, l.stach@pengutronix.de, Inki Dae , Jagan Teki , Andrzej Hajda , Neil Armstrong , Robert Foss , Laurent Pinchart , Jonas Karlman , Jernej Skrabec , David Airlie , Daniel Vetter , Marek Vasut , Frieder Schrempf , linux-kernel@vger.kernel.org Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,FREEMAIL_ENVFROM_END_DIGIT, FREEMAIL_FROM,RCVD_IN_DNSWL_NONE,SPF_HELO_NONE,SPF_PASS, T_SCC_BODY_TEXT_LINE autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Mon, Apr 24, 2023 at 3:25=E2=80=AFAM Marek Szyprowski wrote: > > On 23.04.2023 14:12, Adam Ford wrote: > > The high-speed clock is hard-coded to the burst-clock > > frequency specified in the device tree. However, when > > using devices like certain bridge chips without burst mode > > and varying resolutions and refresh rates, it may be > > necessary to set the high-speed clock dynamically based > > on the desired pixel clock for the connected device. > > > > This also removes the need to set a clock speed from > > the device tree for non-burst mode operation, since the > > pixel clock rate is the rate requested from the attached > > device like an HDMI bridge chip. This should have no > > impact for people using burst-mode and setting the burst > > clock rate is still required for those users. > > > > Signed-off-by: Adam Ford > > This one breaks Exynos-5433 based TM2e board with a DSI panel. Marek S, Thank you for testing! I knoiw there are several of us who appreciate your testing this since it's hard to know if something broke without hardware. Is there any way you can tell me if the flag is set to enable MIPI_DSI_MODE_VIDEO_BURST? I was trying to be diligent about not breaking your boards, but without your boards, it's difficult. The theory was that if MIPI_DSI_MODE_VIDEO_BURST is set and there is a burst clock set in the device tree, it would use the burst clock. As a fall-back I could just simply check for the presence of the burst_clock_rate instead of both MIPI_DSI_MODE_VIDEO_BURST and burst_clock_rate. > > > --- > > drivers/gpu/drm/bridge/samsung-dsim.c | 17 ++++++++++++++--- > > 1 file changed, 14 insertions(+), 3 deletions(-) > > > > diff --git a/drivers/gpu/drm/bridge/samsung-dsim.c b/drivers/gpu/drm/br= idge/samsung-dsim.c > > index f165483d5044..cea847b8e23c 100644 > > --- a/drivers/gpu/drm/bridge/samsung-dsim.c > > +++ b/drivers/gpu/drm/bridge/samsung-dsim.c > > @@ -657,11 +657,21 @@ static unsigned long samsung_dsim_set_pll(struct = samsung_dsim *dsi, > > > > static int samsung_dsim_enable_clock(struct samsung_dsim *dsi) > > { > > - unsigned long hs_clk, byte_clk, esc_clk; > > + unsigned long hs_clk, byte_clk, esc_clk, pix_clk; > > unsigned long esc_div; > > u32 reg; > > + struct drm_display_mode *m =3D &dsi->mode; > > + int bpp =3D mipi_dsi_pixel_format_to_bpp(dsi->format); > > + > > + /* m->clock is in KHz */ > > + pix_clk =3D m->clock * 1000; > > + > > + /* Use burst_clk_rate for burst mode, otherwise use the pix_clk *= / > > + if ((dsi->mode_flags & MIPI_DSI_MODE_VIDEO_BURST) && dsi->burst_c= lk_rate) Would you be willing to test this if this line just read: if (dsi->burst_clk_rate) That would tell me if my fallback idea works. Thank you, adam > > + hs_clk =3D samsung_dsim_set_pll(dsi, dsi->burst_clk_rate)= ; > > + else > > + hs_clk =3D samsung_dsim_set_pll(dsi, DIV_ROUND_UP(pix_clk= * bpp, dsi->lanes)); > > > > - hs_clk =3D samsung_dsim_set_pll(dsi, dsi->burst_clk_rate); > > if (!hs_clk) { > > dev_err(dsi->dev, "failed to configure DSI PLL\n"); > > return -EFAULT; > > @@ -1800,10 +1810,11 @@ static int samsung_dsim_parse_dt(struct samsung= _dsim *dsi) > > return PTR_ERR(pll_clk); > > } > > > > + /* If it doesn't exist, use pixel clock instead of failing */ > > ret =3D samsung_dsim_of_read_u32(node, "samsung,burst-clock-frequ= ency", > > &dsi->burst_clk_rate); > > if (ret < 0) > > - return ret; > > + dsi->burst_clk_rate =3D 0; > > > > ret =3D samsung_dsim_of_read_u32(node, "samsung,esc-clock-frequen= cy", > > &dsi->esc_clk_rate); > > Best regards > -- > Marek Szyprowski, PhD > Samsung R&D Institute Poland >