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 83DA8C001B0 for ; Wed, 19 Jul 2023 05:46:23 +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=PAlzf+2cVAXMUBZHnJrUd1yEddKWpHf7La4R8TAQves=; b=bPjexYmxx+MMDz D18VsP8+5Dv0odtErbjIGjiMHriqSHzK2xJvSwXGhUnpYPrXsFV6ZSf4foawhyqkdmOGfdLedzTxK y3Ya0O3spwOEw+femzHx3n7T/HxpEOcp2WEoxfohw1li81fSv0fJ9rixtkTKgaHPQ4Y7I4V+2vuPN h7TlISnMF5Rkzhr6H6qqHW63gU39Tknf51FHyg8ypaZZqIDYRDbg3DmmOzhOirt5PDtab17pKYr6C ehCZfDKl/CbPanY+dqY403iTcy30MMVb7wXcNL95AmwyCwwHiKU0SxuYnlTFtx9yKMga3LgobexdA lFBA70OwJMEcEWTQ3TAA==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.96 #2 (Red Hat Linux)) id 1qM00k-005PRp-23; Wed, 19 Jul 2023 05:46:06 +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 1qM00i-005PRN-19 for linux-arm-kernel@bombadil.infradead.org; Wed, 19 Jul 2023 05:46:04 +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=35izBTlsDrsZg236Zf6prZGetXUm/PRQN5Sro/Cl3Dk=; b=hJ3M+OR36NQhFYIUIAzxyTls+z qKnuk7SNXjG/xqpvZaZVeZYh4bNmEy+wFox9+e8IB0fFG7IfA73GrZz+2jb5vGcQER4AREehsTp5J A4m0Dpd+oMgfk3zevwBkLIX2jYhO6XdNdNvSgCWH958hOxZOx74Hfhoj7X+zNLm5rd9fFniVwn285 tq940xy/xAPQ5ZZIuH7ALQW4SNeTgd9s9TV01X1kagGgy7k07hx/rUS2PDk2n+LCTmLQygqcr35Z4 62ncDHW6waLJbXKK3fqyin1Jyg4gcJZUYXsO9I7bT5cssc/7UrNJymP9qQmEpPQOQFTyVtwzeMYxv Pb8UhwtQ==; Received: from mx1.tq-group.com ([93.104.207.81]) by desiato.infradead.org with esmtps (Exim 4.96 #2 (Red Hat Linux)) id 1qLfTR-00BGgw-14 for linux-arm-kernel@lists.infradead.org; Tue, 18 Jul 2023 07:50:23 +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=1689666621; x=1721202621; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=35izBTlsDrsZg236Zf6prZGetXUm/PRQN5Sro/Cl3Dk=; b=Gla6X42OBqtwIl66v6yQzMrI1m13QOJ0MEvZ+eOiNAdfhQRWUBemo894 Aypzo9OMsSJ18mZE3odimYE9QDGwr85N3qpsj4vZWMEX0lXMeoufwhh5s 1FBabsfH0cEwUqafLUaSchHJh2xbUmvlXtc6gCunw9Afb0/BF2Qd+boJd u98vHUiNx8nomvZxDf/siqzwA2+ZJitwq9XWb1YGBM/0K0WrqVj07vxGJ b7jl1+E8/n+hsk56qcdg0kZE6EDfXg8fCMzA28Zlb/P/LNzCz5Vsj6nnF pXll9yrn9vIbHww+kK/CFiD9XvCy0OvjDScCawOQO4vUjbyXelQUKgWEP w==; X-IronPort-AV: E=Sophos;i="6.01,213,1684792800"; d="scan'208";a="31978873" Received: from vtuxmail01.tq-net.de ([10.115.0.20]) by mx1.tq-group.com with ESMTP; 18 Jul 2023 09:49:20 +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 B9BF7280078; Tue, 18 Jul 2023 09:49:19 +0200 (CEST) From: Alexander Stein To: dri-devel@lists.freedesktop.org, devicetree@vger.kernel.org, linux-arm-kernel@lists.infradead.org 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, linux-imx@nxp.com, Liu Ying Subject: Re: [PATCH 9/9] drm/bridge: imx: Add i.MX93 MIPI DSI support Date: Tue, 18 Jul 2023 09:49:19 +0200 Message-ID: <3174425.5fSG56mABF@steina-w> Organization: TQ-Systems GmbH In-Reply-To: <20230717061831.1826878-10-victor.liu@nxp.com> References: <20230717061831.1826878-1-victor.liu@nxp.com> <20230717061831.1826878-10-victor.liu@nxp.com> MIME-Version: 1.0 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20230718_085021_710243_B3884666 X-CRM114-Status: GOOD ( 23.16 ) 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, thanks for the patch. 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 MIPI = 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? > + 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? > + 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? > + 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? 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.tq-group.com/ _______________________________________________ linux-arm-kernel mailing list linux-arm-kernel@lists.infradead.org http://lists.infradead.org/mailman/listinfo/linux-arm-kernel