Received: by 2002:a05:6a10:af89:0:0:0:0 with SMTP id iu9csp1157239pxb; Fri, 21 Jan 2022 11:04:17 -0800 (PST) X-Google-Smtp-Source: ABdhPJzT6yKlvXXtUQUlx6bVZ1kz+4yaIiAPNjdTPOKD4+S+tRyXV7tSYBYtLFG0vc7ZeDI4bkB7 X-Received: by 2002:a63:7514:: with SMTP id q20mr3898206pgc.260.1642791856991; Fri, 21 Jan 2022 11:04:16 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1642791856; cv=none; d=google.com; s=arc-20160816; b=J+XkOZceS0o7PmafQaJ6czH9u1elwqWoweIU4aN/L3EXD3KzIM6+ogklqT6qVhJ4zx uoD3hm16NvN6j6b3Qcj5eLD5kc5iwzdwK56AD3fgTjHtorTh62+MBlXmusS+KoHJRhOv UHeTsvmp5ougjcHluF4e5yeOPqtnqMule/Nw3JfhUxcirH2Cp4mxyJdYvd4wNh9oPSUF OiP1JuFHdjOB7wqsja5Ymn8y7EaVMoWPhVL+6tSD6ZZUwE1FG3YOrBvpaRQBqFyvrwHK VM8yH7b4dBXn2yp3EbRYXy75lwWXffYcOkrg/peB0RMkDD3SRyi63p+yn8u2aCKURHjd f3ew== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:content-language :in-reply-to:mime-version:user-agent:date:message-id:organization :references:cc:to:from:subject:dkim-signature; bh=C4Zc3pg97QhRBnCL31NpgyhTD5rJxIoNyw+4jb4dhT4=; b=kh5Td3xWG0fg9IIRaIqgxSINgvsnbsYWLFhjAmOSjc9PHtE9boiS9YAF5SBUfmpvfI L85rI0YNwfEpi83S+llDZV6952MCyX1u/yLWlG/XIA0PtNXvtpr5Lyynjb8DlvbgGpvg 8Kb4aYlRekStH6D+RQLZBgM3eJrKa3KjmtZHV0+YJTjtd1d3xohkhO/+63U1i2bN5+Bs EIvYfLjHwNROs2lqyJoPwxXJBVZnia1wmyPkNBDHYNe4L9FCjOGZ1w+rSnLM1vU/hFW4 Xy6lSH0uWGZBjasVc2AY+VL0U9PukyEUywo6s1b84c+mhdkXzlCGLh14/5c19aMXEQ18 J88A== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@baylibre-com.20210112.gappssmtp.com header.s=20210112 header.b="dUWihDw/"; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id h126si6818461pgc.42.2022.01.21.11.04.03; Fri, 21 Jan 2022 11:04:16 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; dkim=pass header.i=@baylibre-com.20210112.gappssmtp.com header.s=20210112 header.b="dUWihDw/"; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1352914AbiASJL7 (ORCPT + 99 others); Wed, 19 Jan 2022 04:11:59 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:56534 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1352908AbiASJL5 (ORCPT ); Wed, 19 Jan 2022 04:11:57 -0500 Received: from mail-wm1-x32d.google.com (mail-wm1-x32d.google.com [IPv6:2a00:1450:4864:20::32d]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 17168C06161C for ; Wed, 19 Jan 2022 01:11:57 -0800 (PST) Received: by mail-wm1-x32d.google.com with SMTP id ay14-20020a05600c1e0e00b0034d7bef1b5dso6111235wmb.3 for ; Wed, 19 Jan 2022 01:11:57 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=baylibre-com.20210112.gappssmtp.com; s=20210112; h=subject:from:to:cc:references:organization:message-id:date :user-agent:mime-version:in-reply-to:content-language :content-transfer-encoding; bh=C4Zc3pg97QhRBnCL31NpgyhTD5rJxIoNyw+4jb4dhT4=; b=dUWihDw/VMRg6sA/GD788IM8rAYRtmQWSJS0gFREajow6TJlqI3HWG9LdfWCkdehns NruAxdRRI2X+Uk+gUUPoKPdOTqJK+YDK5CJSoGRCB/3C7H1PyEBKYLOlsvC5+ZJ/iN7w sLVmiGGMz+7vD7j4OmVYXcymVoKHfPrIaHnZ3daxol1b0YtUcOYxwHo6PwsMN0R4vXH8 DTRh4zjjMkj5ajGAHKUT6HdO38ZLsNatcyXDwdK57z8EjwHMEFKcVrpf7Ubb/Ad3YD34 JlNxxTB2K9aFdD9aoaNV9IX1b4N+K7GLAEmJpqEeXp5G6u+ccu8PtuiTHp4MBNzSnSiB SL1A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:subject:from:to:cc:references:organization :message-id:date:user-agent:mime-version:in-reply-to :content-language:content-transfer-encoding; bh=C4Zc3pg97QhRBnCL31NpgyhTD5rJxIoNyw+4jb4dhT4=; b=LgDlUP/1aOutEeVWAhyswTV+1PAHUylrkVPhV1SKos/VLXGbNnaGvMg1rhVu0XWfzJ kxKpcUOgmrAC2pnShmOX/Psi3J/yuOKYyimkX0PeZlHjqbzYew//Y/bZ5KfZm/Zcw6ol VMVB0tMHBptmHYLihtaZduiZhbFKcxXQT+jCvTwY7zOAtsdsa6rq/sr6ho7zn99K5bV2 gJpqtuNqm3plCPVNm2MiBJuKSoe4UGOOiZ0ZDEwrVEY4Y/OLRrpBMhJu7+rWiXMiSGgJ eKfhLolqdXFIrL2YZn6Mmk1YN32pmdpB3TKIefr+2vwrVzor15CiWDgt23NrnLQ34Psd P5KA== X-Gm-Message-State: AOAM5317MuHss65AKoW2QkHPibAGS52gA2hYAlUB74aea4hF502qAO4r SmdSAV0Usf2qLgIIhHwOJpXsKg== X-Received: by 2002:a5d:46c6:: with SMTP id g6mr27435133wrs.322.1642583513901; Wed, 19 Jan 2022 01:11:53 -0800 (PST) Received: from ?IPv6:2001:861:44c0:66c0:d394:97d0:bc02:3846? ([2001:861:44c0:66c0:d394:97d0:bc02:3846]) by smtp.gmail.com with ESMTPSA id c8sm5634596wmq.34.2022.01.19.01.11.52 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Wed, 19 Jan 2022 01:11:53 -0800 (PST) Subject: Re: [PATCH v2] phy: dphy: Correct clk_pre parameter From: Neil Armstrong To: Liu Ying , dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org, linux-phy@lists.infradead.org, linux-arm-kernel@lists.infradead.org, linux-amlogic@lists.infradead.org, linux-rockchip@lists.infradead.org Cc: linux-imx@nxp.com, Andrzej Hajda , Robert Foss , Laurent Pinchart , Jonas Karlman , Jernej Skrabec , David Airlie , Daniel Vetter , Kishon Vijay Abraham I , Vinod Koul , Kevin Hilman , Jerome Brunet , Martin Blumenstingl , Heiko Stuebner , Maxime Ripard , =?UTF-8?Q?Guido_G=c3=bcnther?= References: <20220119023714.1498508-1-victor.liu@nxp.com> <28e3f723-daf0-b3c5-ee10-519c4cabfe17@baylibre.com> Organization: Baylibre Message-ID: <5a638561-c704-49e7-1fed-70e26fedb186@baylibre.com> Date: Wed, 19 Jan 2022 10:11:51 +0100 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:78.0) Gecko/20100101 Thunderbird/78.14.0 MIME-Version: 1.0 In-Reply-To: <28e3f723-daf0-b3c5-ee10-519c4cabfe17@baylibre.com> Content-Type: text/plain; charset=utf-8 Content-Language: en-US Content-Transfer-Encoding: 8bit Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On 19/01/2022 09:40, Neil Armstrong wrote: > Hi, > > On 19/01/2022 03:37, Liu Ying wrote: >> The D-PHY specification (v1.2) explicitly mentions that the T-CLK-PRE >> parameter's unit is Unit Interval(UI) and the minimum value is 8. Also, >> kernel doc of the 'clk_pre' member of struct phy_configure_opts_mipi_dphy >> mentions that it should be in UI. However, the dphy core driver wrongly >> sets 'clk_pre' to 8000, which seems to hint that it's in picoseconds. >> And, the kernel doc of the 'clk_pre' member wrongly says the minimum value >> is '8 UI', instead of 8. >> >> So, let's fix both the dphy core driver and the kernel doc of the 'clk_pre' >> member to correctly reflect the T-CLK-PRE parameter's unit and the minimum >> value according to the D-PHY specification. >> >> I'm assuming that all impacted custom drivers shall program values in >> TxByteClkHS cycles into hardware for the T-CLK-PRE parameter. The D-PHY >> specification mentions that the frequency of TxByteClkHS is exactly 1/8 >> the High-Speed(HS) bit rate(each HS bit consumes one UI). So, relevant >> custom driver code is changed to program those values as >> DIV_ROUND_UP(cfg->clk_pre, BITS_PER_BYTE), then. >> >> Note that I've only tested the patch with RM67191 DSI panel on i.MX8mq EVK. >> Help is needed to test with other i.MX8mq, Meson and Rockchip platforms, >> as I don't have the hardwares. >> >> Fixes: 2ed869990e14 ("phy: Add MIPI D-PHY configuration options") >> Cc: Andrzej Hajda >> Cc: Neil Armstrong >> Cc: Robert Foss >> Cc: Laurent Pinchart >> Cc: Jonas Karlman >> Cc: Jernej Skrabec >> Cc: David Airlie >> Cc: Daniel Vetter >> Cc: Kishon Vijay Abraham I >> Cc: Vinod Koul >> Cc: Kevin Hilman >> Cc: Jerome Brunet >> Cc: Martin Blumenstingl >> Cc: Heiko Stuebner >> Cc: Maxime Ripard >> Cc: Guido Günther >> Tested-by: Liu Ying # RM67191 DSI panel on i.MX8mq EVK >> Signed-off-by: Liu Ying >> --- >> v1->v2: >> * Use BITS_PER_BYTE macro. (Andrzej) >> * Drop dsi argument from ui2bc() in nwl-dsi.c. >> >> drivers/gpu/drm/bridge/nwl-dsi.c | 12 +++++------- >> drivers/phy/amlogic/phy-meson-axg-mipi-dphy.c | 3 ++- >> drivers/phy/phy-core-mipi-dphy.c | 4 ++-- >> drivers/phy/rockchip/phy-rockchip-inno-dsidphy.c | 3 ++- >> include/linux/phy/phy-mipi-dphy.h | 2 +- >> 5 files changed, 12 insertions(+), 12 deletions(-) >> [...] >> diff --git a/drivers/phy/amlogic/phy-meson-axg-mipi-dphy.c b/drivers/phy/amlogic/phy-meson-axg-mipi-dphy.c >> index cd2332bf0e31..fdbd64c03e12 100644 >> --- a/drivers/phy/amlogic/phy-meson-axg-mipi-dphy.c >> +++ b/drivers/phy/amlogic/phy-meson-axg-mipi-dphy.c >> @@ -9,6 +9,7 @@ >> >> #include >> #include >> +#include >> #include >> #include >> #include >> @@ -250,7 +251,7 @@ static int phy_meson_axg_mipi_dphy_power_on(struct phy *phy) >> (DIV_ROUND_UP(priv->config.clk_zero, temp) << 16) | >> (DIV_ROUND_UP(priv->config.clk_prepare, temp) << 24)); >> regmap_write(priv->regmap, MIPI_DSI_CLK_TIM1, >> - DIV_ROUND_UP(priv->config.clk_pre, temp)); >> + DIV_ROUND_UP(priv->config.clk_pre, BITS_PER_BYTE)); >> >> regmap_write(priv->regmap, MIPI_DSI_HS_TIM, >> DIV_ROUND_UP(priv->config.hs_exit, temp) | > > I'll try to run a test, currently the calculation gives 2, so this would give 1. The Amlogic vendor code does: /* >8*ui */ #define DPHY_TIME_CLK_PRE(ui) (10 * ui) t_ui = lcd_timing.bit_rate t_ui = (1000000 * 100) / (dsi_ui / 1000); /*100*ns */ temp = t_ui * 8; /* lane_byte cycle time */ dphy->clk_pre = ((DPHY_TIME_CLK_PRE(t_ui) + temp - 1) / temp) & 0xff; PHY Registers only says: MIPI_DSI_CLK_TIM1 [31:0] 7:0 R/W 0 tCLK_PRE > > Neil > [...]