From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id 739D5EB64DA for ; Wed, 19 Jul 2023 05:12:52 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender: Content-Transfer-Encoding:Content-Type:List-Subscribe:List-Help:List-Post: List-Archive:List-Unsubscribe:List-Id:MIME-Version:References:In-Reply-To: Message-ID:Date:Subject:Cc:To:From:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=Bs9wAvFb0wQHpEVLijaFk8T9D8EoEZxQ8cglczXSp2k=; b=cUqxUZjAKPxO0X ulDOXpvoQhoEubENvCrvge8LowMQ7wxrkjTKXfX32YeeZcxPRs+PwPDb/36LPicNrnMLv+HyfweaE 8cO6KJHVTXypfQw9v0R0gEZ1k965JrDn+0z4eg3Yd9cjyRgW6xaKLFEqjlumiU3wwneAY0jO/KCQf 4HH6Mtvlw+8ZHW4qZhgZiphP4BOmzoR4wiOUFs8KRSaUheZEBHKEyHTl/ngYSeBE+UWdO+4BPx2DA 6LBDnFhqTiBXlMppaoyOQ4N4grimduT2J0poGmWGk8yl3o8LwyFiLWiBrtqtFfpUo4o2WgB2JxD6O CTv7McnPKT2gUp9eoYOg==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.96 #2 (Red Hat Linux)) id 1qLzUF-005BEz-1p; Wed, 19 Jul 2023 05:12:31 +0000 Received: from desiato.infradead.org ([2001:8b0:10b:1:d65d:64ff:fe57:4e05]) by bombadil.infradead.org with esmtps (Exim 4.96 #2 (Red Hat Linux)) id 1qLzUD-005BEO-2f for linux-arm-kernel@bombadil.infradead.org; Wed, 19 Jul 2023 05:12:29 +0000 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=infradead.org; s=desiato.20200630; h=Content-Type:Content-Transfer-Encoding :MIME-Version:References:In-Reply-To:Message-ID:Date:Subject:Cc:To:From: Sender:Reply-To:Content-ID:Content-Description; bh=57+ullO1ijISCv2nmZbVaR8CKu2emO90qj71uBLQ9hU=; b=ilHg+3k9Ub732PlbZPdpOE1LI+ 5E+GTrFiSKDtd1QxewqLs+ZLk3V/9eShyOHHEADa820QIazG7ScTup2Aq1C2vEqG6zG+NR/RbXGEn CVX1MhXQ7cBqD/xBioXFTk+IDQYi3gN0139aHMMuYupEDXv/UIf9mwp8uICIt1D+LmfRRApd6nh9M NN0jtHn2+tukB73hJvwPX6G9QRJZENbh+Umxkjbh381bkY60BHmXWRMFjw+2dewSqcsyYjPBDD5fE iV/o/VCNKMZmWJsY5SILu6jTWPClzTAdckC1JzcGtHG5CXJCdB0U8ugP0BQrgkfZVSBuHhGxjhXbx foTrK3Ow==; Received: from mx1.tq-group.com ([93.104.207.81]) by desiato.infradead.org with esmtps (Exim 4.96 #2 (Red Hat Linux)) id 1qLh3D-00BMUu-2w for linux-arm-kernel@lists.infradead.org; Tue, 18 Jul 2023 09:31:26 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=tq-group.com; i=@tq-group.com; q=dns/txt; s=key1; t=1689672683; x=1721208683; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=57+ullO1ijISCv2nmZbVaR8CKu2emO90qj71uBLQ9hU=; b=kQNMStH1KgKkOjW6OAO0FBsgbDJalweFaHyxTTkHlUW/lQmGuePC4fFs Oli0WviREvIAXcMvnAhAwSiOBg5Rgylmn94rKRkJblLKXg+0js+eR+ALe 0JV7UC12ACYnX36nw9GXErtVhrdrjzMmLEWjvHFgCGlHOZA2d7vRQLH13 tSw9zo5L2Tn1xitlKmirKMe9GqF5j+aUmc1y6WZjXHsxHKIxO3E735vMX yjtpL0N1yirszwz3eV+tOWipYGIURbQbJeoLu3XBVrUD/w5spKNaL0Kb7 Mlo50MIbowHhaN2XNfksl9+4531n0Q8UtbYrKqgYfhFs+nrYvO8o6wEe6 A==; X-IronPort-AV: E=Sophos;i="6.01,213,1684792800"; d="scan'208";a="31982646" Received: from vtuxmail01.tq-net.de ([10.115.0.20]) by mx1.tq-group.com with ESMTP; 18 Jul 2023 11:31:02 +0200 Received: from steina-w.localnet (unknown [10.123.53.21]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by vtuxmail01.tq-net.de (Postfix) with ESMTPSA id 1428F280078; Tue, 18 Jul 2023 11:31:02 +0200 (CEST) From: Alexander Stein To: "dri-devel@lists.freedesktop.org" , "devicetree@vger.kernel.org" , "linux-arm-kernel@lists.infradead.org" , Ying Liu Cc: "neil.armstrong@linaro.org" , "conor+dt@kernel.org" , "rfoss@kernel.org" , "krzysztof.kozlowski+dt@linaro.org" , "jonas@kwiboo.se" , "shawnguo@kernel.org" , "s.hauer@pengutronix.de" , "jernej.skrabec@gmail.com" , "robh+dt@kernel.org" , "Laurent.pinchart@ideasonboard.com" , "andrzej.hajda@intel.com" , "kernel@pengutronix.de" , dl-linux-imx Subject: Re: [PATCH 9/9] drm/bridge: imx: Add i.MX93 MIPI DSI support Date: Tue, 18 Jul 2023 11:31:01 +0200 Message-ID: <8287028.NyiUUSuA9g@steina-w> Organization: TQ-Systems GmbH In-Reply-To: References: <20230717061831.1826878-1-victor.liu@nxp.com> <3174425.5fSG56mABF@steina-w> MIME-Version: 1.0 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20230718_103124_317233_A6C76927 X-CRM114-Status: GOOD ( 31.31 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org Hi, Am Dienstag, 18. Juli 2023, 11:00:25 CEST schrieb Ying Liu: > On Tuesday, July 18, 2023 3:49 PM Alexander Stein wrote: > > Hi, > = > Hi, > = > > thanks for the patch. > = > Thanks for your review. > = > > Am Montag, 17. Juli 2023, 08:18:31 CEST schrieb Liu Ying: > > > Freescale i.MX93 SoC embeds a Synopsys Designware MIPI DSI host > > > controller and a Synopsys Designware MIPI DPHY. Some configurations > > > and extensions to them are controlled by i.MX93 media blk-ctrl. > > > = > > > Add a DRM bridge for i.MX93 MIPI DSI by using existing DW MIPI DSI > > > bridge helpers and implementing i.MX93 MIPI DSI specific extensions. > > > = > > > Signed-off-by: Liu Ying > > > --- > > > = > > > drivers/gpu/drm/bridge/imx/Kconfig | 10 + > > > drivers/gpu/drm/bridge/imx/Makefile | 1 + > > > drivers/gpu/drm/bridge/imx/imx93-mipi-dsi.c | 934 > > = > > ++++++++++++++++++++ > > = > > > 3 files changed, 945 insertions(+) > > > create mode 100644 drivers/gpu/drm/bridge/imx/imx93-mipi-dsi.c > > > = > > > diff --git a/drivers/gpu/drm/bridge/imx/Kconfig > > > b/drivers/gpu/drm/bridge/imx/Kconfig index > > = > > 9fae28db6aa7..5182298c7182 > > = > > > 100644 > > > --- a/drivers/gpu/drm/bridge/imx/Kconfig > > > +++ b/drivers/gpu/drm/bridge/imx/Kconfig > > > @@ -49,4 +49,14 @@ config DRM_IMX8QXP_PIXEL_LINK_TO_DPI > > > = > > > Choose this to enable pixel link to display pixel > > = > > interface(PXL2DPI) > > = > > > found in Freescale i.MX8qxp processor. > > > = > > > +config DRM_IMX93_MIPI_DSI > > > + tristate "Freescale i.MX93 specific extensions for Synopsys DW MI= PI > > = > > DSI" > > = > > > + depends on OF > > > + depends on COMMON_CLK > > > + select DRM_DW_MIPI_DSI > > > + select GENERIC_PHY_MIPI_DPHY > > > + help > > > + Choose this to enable MIPI DSI controller found in Freescale > > = > > i.MX93 > > = > > > + processor. > > > + > > > = > > > endif # ARCH_MXC || COMPILE_TEST > > > = > > > diff --git a/drivers/gpu/drm/bridge/imx/Makefile > > > b/drivers/gpu/drm/bridge/imx/Makefile index > > = > > 8e2ebf3399a1..2b0c2e44aa1b > > = > > > 100644 > > > --- a/drivers/gpu/drm/bridge/imx/Makefile > > > +++ b/drivers/gpu/drm/bridge/imx/Makefile > > > @@ -4,3 +4,4 @@ obj-$(CONFIG_DRM_IMX8QXP_LDB) +=3D imx8qxp-ldb.o > > > = > > > obj-$(CONFIG_DRM_IMX8QXP_PIXEL_COMBINER) +=3D imx8qxp-pixel- > > = > > combiner.o > > = > > > obj-$(CONFIG_DRM_IMX8QXP_PIXEL_LINK) +=3D imx8qxp-pixel-link.o > > > obj-$(CONFIG_DRM_IMX8QXP_PIXEL_LINK_TO_DPI) +=3D imx8qxp-pxl2dpi.o > > > = > > > +obj-$(CONFIG_DRM_IMX93_MIPI_DSI) +=3D imx93-mipi-dsi.o > > > diff --git a/drivers/gpu/drm/bridge/imx/imx93-mipi-dsi.c > > > b/drivers/gpu/drm/bridge/imx/imx93-mipi-dsi.c new file mode 100644 > > > index 000000000000..77f59e3407a0 > > > --- /dev/null > > > +++ b/drivers/gpu/drm/bridge/imx/imx93-mipi-dsi.c > > > = > > > [snip] > > > = > > > +static int imx93_dsi_probe(struct platform_device *pdev) > > > +{ > > > + struct device *dev =3D &pdev->dev; > > > + struct device_node *np =3D dev->of_node; > > > + struct imx93_dsi *dsi; > > > + int ret; > > > + > > > + dsi =3D devm_kzalloc(dev, sizeof(*dsi), GFP_KERNEL); > > > + if (!dsi) > > > + return -ENOMEM; > > > + > > > + dsi->regmap =3D syscon_regmap_lookup_by_phandle(np, "fsl,media- > > = > > blk- > > ctrl"); > > = > > > + if (IS_ERR(dsi->regmap)) { > > > + ret =3D PTR_ERR(dsi->regmap); > > = > > > + DRM_DEV_ERROR(dev, "failed to get block ctrl regmap: > > %d\n", ret); > > = > > Could you use dev_err_probe here instead? > = > Maybe, it's better to keep using DRM_DEV_ERROR to achieve consistent > error log format across the driver which is implemented in drm_dev_printk= (). > I see other DRM drivers do the same. I see your point. On the other hand the benefit of dev_err_probe() is that = the = message of deferred probe can be seen in /sys/kernel/debug/devices_deferred. Your check against EPROBE_DEFER will hide the message if something is not = correct. Maybe a to be introduced DRM_DEV_ERROR_PROBE might be useful. Best regards, Alexander > > > + return ret; > > > + } > > > + > > > + dsi->clk_pixel =3D devm_clk_get(dev, "pix"); > > > + if (IS_ERR(dsi->clk_pixel)) { > > > + ret =3D PTR_ERR(dsi->clk_pixel); > > > + if (ret !=3D -EPROBE_DEFER) > > = > > > + DRM_DEV_ERROR(dev, "failed to get pixel clock: > > %d\n", ret); > > = > > Could you use dev_err_probe here instead? > = > Ditto. > = > > > + return ret; > > > + } > > > + > > > + dsi->clk_cfg =3D devm_clk_get(dev, "phy_cfg"); > > > + if (IS_ERR(dsi->clk_cfg)) { > > > + ret =3D PTR_ERR(dsi->clk_cfg); > > > + if (ret !=3D -EPROBE_DEFER) > > = > > > + DRM_DEV_ERROR(dev, "failed to get phy cfg clock: > > %d\n", ret); > > = > > > + return ret; > > > + } > > > + > > > + dsi->clk_ref =3D devm_clk_get(dev, "phy_ref"); > > > + if (IS_ERR(dsi->clk_ref)) { > > > + ret =3D PTR_ERR(dsi->clk_ref); > > > + if (ret !=3D -EPROBE_DEFER) > > = > > > + DRM_DEV_ERROR(dev, "failed to get phy ref clock: > > %d\n", ret); > > = > > Could you use dev_err_probe here instead? > = > Ditto. > = > > > + return ret; > > > + } > > > + > > > + dsi->ref_clk_rate =3D clk_get_rate(dsi->clk_ref); > > > + if (dsi->ref_clk_rate < REF_CLK_RATE_MIN || > > > + dsi->ref_clk_rate > REF_CLK_RATE_MAX) { > > > + DRM_DEV_ERROR(dev, "invalid phy ref clock rate %lu\n", > > > + dsi->ref_clk_rate); > > > + return -EINVAL; > > > + } > > > + DRM_DEV_DEBUG_DRIVER(dev, "phy ref clock rate: %lu\n", dsi- > > > > > >ref_clk_rate); > > > > > > + > > > + dsi->dev =3D dev; > > > + dsi->pdata.max_data_lanes =3D 4; > > > + dsi->pdata.mode_valid =3D imx93_dsi_mode_valid; > > > + dsi->pdata.mode_fixup =3D imx93_dsi_mode_fixup; > > > + dsi->pdata.get_input_bus_fmts =3D imx93_dsi_get_input_bus_fmts; > > > + dsi->pdata.phy_ops =3D &imx93_dsi_phy_ops; > > > + dsi->pdata.host_ops =3D &imx93_dsi_host_ops; > > > + dsi->pdata.priv_data =3D dsi; > > > + platform_set_drvdata(pdev, dsi); > > > + > > > + dsi->dmd =3D dw_mipi_dsi_probe(pdev, &dsi->pdata); > > > + if (IS_ERR(dsi->dmd)) { > > > + ret =3D PTR_ERR(dsi->dmd); > > > + if (ret !=3D -EPROBE_DEFER) > > = > > > + DRM_DEV_ERROR(dev, "failed to probe dw_mipi_dsi: > > %d\n", ret); > > = > > Could you use dev_err_probe here instead? > = > Ditto. > = > Regards, > Liu Ying > = > > Best regards, > > Alexander > > = > > > + return ret; > > > + } > > > + > > > + return 0; > > > +} > > > + > > > +static void imx93_dsi_remove(struct platform_device *pdev) > > > +{ > > > + struct imx93_dsi *dsi =3D platform_get_drvdata(pdev); > > > + > > > + dw_mipi_dsi_remove(dsi->dmd); > > > +} > > > + > > > +static const struct of_device_id imx93_dsi_dt_ids[] =3D { > > > + { .compatible =3D "fsl,imx93-mipi-dsi", }, > > > + { /* sentinel */ } > > > +}; > > > +MODULE_DEVICE_TABLE(of, imx93_dsi_dt_ids); > > > + > > > +static struct platform_driver imx93_dsi_driver =3D { > > > + .probe =3D imx93_dsi_probe, > > > + .remove_new =3D imx93_dsi_remove, > > > + .driver =3D { > > > + .of_match_table =3D imx93_dsi_dt_ids, > > > + .name =3D "imx93_mipi_dsi", > > > + }, > > > +}; > > > +module_platform_driver(imx93_dsi_driver); > > > + > > > +MODULE_DESCRIPTION("Freescale i.MX93 MIPI DSI driver"); > > > +MODULE_AUTHOR("Liu Ying "); > > > +MODULE_LICENSE("GPL"); > > = > > -- > > TQ-Systems GmbH | M=FChlstra=DFe 2, Gut Delling | 82229 Seefeld, Germany > > Amtsgericht M=FCnchen, HRB 105018 > > Gesch=E4ftsf=FChrer: Detlef Schneider, R=FCdiger Stahl, Stefan Schneider > > http://www.t/ > > q- > > group.com%2F&data=3D05%7C01%7Cvictor.liu%40nxp.com%7Cc42417f9a9484 > > 3ead2b808db876380d3%7C686ea1d3bc2b4c6fa92cd99c5c301635%7C0%7C0 > > %7C638252633665634690%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLj > > AwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C3000%7C% > > 7C%7C&sdata=3DGUWOZgHFFp0nKImw2aIAsaqMv9KtgI6%2BD%2BaOdDhJ%2B > > tU%3D&reserved=3D0 -- = TQ-Systems GmbH | M=FChlstra=DFe 2, Gut Delling | 82229 Seefeld, Germany Amtsgericht M=FCnchen, HRB 105018 Gesch=E4ftsf=FChrer: Detlef Schneider, R=FCdiger Stahl, Stefan Schneider http://www.tq-group.com/ _______________________________________________ linux-arm-kernel mailing list linux-arm-kernel@lists.infradead.org http://lists.infradead.org/mailman/listinfo/linux-arm-kernel