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 2D6FEC021A4 for ; Sun, 16 Feb 2025 09:42:34 +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:In-Reply-To:From:References:Cc:To: Subject:MIME-Version:Date:Message-ID:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=jDKmrkQzlEoFDLv4USiBjEQ6C5zNHhX7gJ8caaPlWKk=; b=SEHsOwzytOEc5B 7bygLVuzdkwmBjuOrFexOLLFjc/W0EFbDOCYosG2rDk+baYiyw4FJ/YzqvehuLI6U2GEgWlDWSCaX YAs+U/1xhHpPwpwIIdB8aN4Ssj2LkE3Jd6r5rMr/Pw8cr6ikoVwlqHMAc9LIzxxsSRzVrwbPZrvqV gtxBpFxh4w9Wt25PI4iNK/bh90o/QNp6A+mIrGYJ6fv7N8/lPYBjklzhzcgltyu9KPS6uA/nzNLgV zhteJqGXCz/2x6CqvoC6wxgg61smvD92F7v6iG30GFhFL2mX90Y8JY5ImCDgLwM9uYJ8FUAk+2a06 E0C1Em+ui5rWSIB/lJCA==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.98 #2 (Red Hat Linux)) id 1tjbAX-00000001Zju-3spu; Sun, 16 Feb 2025 09:42:33 +0000 Received: from dfw.source.kernel.org ([139.178.84.217]) by bombadil.infradead.org with esmtps (Exim 4.98 #2 (Red Hat Linux)) id 1tjavX-00000001X4L-2L4e; Sun, 16 Feb 2025 09:27:04 +0000 Received: from smtp.kernel.org (transwarp.subspace.kernel.org [100.75.92.58]) by dfw.source.kernel.org (Postfix) with ESMTP id E5D485C55B1; Sun, 16 Feb 2025 09:26:21 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id 4826BC4CEDD; Sun, 16 Feb 2025 09:26:57 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1739698021; bh=KCr9jygXAg+0o4J6BBNz+HNon4o3TNCuw5LJpm2Y8CY=; h=Date:Subject:To:Cc:References:From:In-Reply-To:From; b=jmwyELEKKT2068Vxfa/KEodRqQbsSTAeInBzDx5otFgQa0s4zOBJr8DkoBa+mym1R PAyM9wCWC/3Lmh0f8qCv1a0TTxRgVwu0I/BPY31MQCqyrJFi/inlGX3zr2AshDMFGh XZZM28Bep332zd4+gFxRVNfkLltowa4aORfVBiiqxVX1vFCCqdLIbxykBU+9rd/Dq3 GfZ6wp28wb3ObRWHt9Qwgtu3wsR8JP1UKZvjpCLnw6jxXr1V8D2mkgAXXjrJviPa2g QcFbhM3hf16X5tA960QNfmsDv3kFnQeEgX3LbnogdOKRr/kKjxYLQy47+dG4Cx2JPG Ms+HCV6tjMFfg== Message-ID: Date: Sun, 16 Feb 2025 10:26:55 +0100 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: [PATCH v1 3/4] phy: samsung: add Exynos2200 SNPS eUSB2 driver To: Ivaylo Ivanov , Vinod Koul , Kishon Vijay Abraham I , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Alim Akhtar , Philipp Zabel Cc: linux-arm-kernel@lists.infradead.org, linux-samsung-soc@vger.kernel.org, linux-phy@lists.infradead.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org References: <20250215122409.162810-1-ivo.ivanov.ivanov1@gmail.com> <20250215122409.162810-4-ivo.ivanov.ivanov1@gmail.com> From: Krzysztof Kozlowski Content-Language: en-US Autocrypt: addr=krzk@kernel.org; keydata= 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 fv0= In-Reply-To: <20250215122409.162810-4-ivo.ivanov.ivanov1@gmail.com> X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20250216_012703_687622_E5C4D7E0 X-CRM114-Status: GOOD ( 24.40 ) X-BeenThere: linux-phy@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: Linux Phy Mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Sender: "linux-phy" Errors-To: linux-phy-bounces+linux-phy=archiver.kernel.org@lists.infradead.org On 15/02/2025 13:24, Ivaylo Ivanov wrote: > The Exynos2200 SoC uses Synopsis eUSB2 PHY for USB 2.0. Add a new > driver for it. > > eUSB2 on Exynos SoCs is usually paired alongside a USB PHY controller. > Currently the driver is modelled to take and enable/disable the usb phy > controller when needed. > > The driver is based on information from downstream drivers. > > Signed-off-by: Ivaylo Ivanov > --- > drivers/phy/samsung/Kconfig | 13 + > drivers/phy/samsung/Makefile | 1 + > .../phy/samsung/phy-exynos2200-snps-eusb2.c | 351 ++++++++++++++++++ > 3 files changed, 365 insertions(+) > create mode 100644 drivers/phy/samsung/phy-exynos2200-snps-eusb2.c > > diff --git a/drivers/phy/samsung/Kconfig b/drivers/phy/samsung/Kconfig > index e2330b089..f62285254 100644 > --- a/drivers/phy/samsung/Kconfig > +++ b/drivers/phy/samsung/Kconfig > @@ -77,6 +77,19 @@ config PHY_S5PV210_USB2 > particular SoC is compiled in the driver. In case of S5PV210 two phys > are available - device and host. > > +config PHY_EXYNOS2200_SNPS_EUSB2 > + tristate "Exynos2200 eUSB 2.0 PHY driver" > + depends on (ARCH_EXYNOS && OF) || COMPILE_TEST > + depends on HAS_IOMEM > + depends on USB_DWC3_EXYNOS How does it depend? What are you using from DWC3? > + select GENERIC_PHY > + select MFD_SYSCON Where do you use it? > + default y > + help > + Enable USBCON PHY support for Exynos2200 SoC. > + This driver provides PHY interface for eUSB 2.0 controller > + present on Exynos5 SoC series. > + > config PHY_EXYNOS5_USBDRD > tristate "Exynos5 SoC series USB DRD PHY driver" > depends on (ARCH_EXYNOS && OF) || COMPILE_TEST > diff --git a/drivers/phy/samsung/Makefile b/drivers/phy/samsung/Makefile > index fea1f96d0..90b84c7fc 100644 > --- a/drivers/phy/samsung/Makefile > +++ b/drivers/phy/samsung/Makefile > @@ -14,5 +14,6 @@ phy-exynos-usb2-$(CONFIG_PHY_EXYNOS4210_USB2) += phy-exynos4210-usb2.o > phy-exynos-usb2-$(CONFIG_PHY_EXYNOS4X12_USB2) += phy-exynos4x12-usb2.o > phy-exynos-usb2-$(CONFIG_PHY_EXYNOS5250_USB2) += phy-exynos5250-usb2.o > phy-exynos-usb2-$(CONFIG_PHY_S5PV210_USB2) += phy-s5pv210-usb2.o > +obj-$(CONFIG_PHY_EXYNOS2200_SNPS_EUSB2) += phy-exynos2200-snps-eusb2.o Entire driver looks like repeating existing qcom-snps-eusb2. You need to integrate the changes, not create duplicated driver. ... > + > + ret = devm_clk_bulk_get(dev, drv_data->n_clks, > + phy->clks); > + if (ret) > + return dev_err_probe(dev, ret, > + "failed to get phy clock(s)\n"); > + > + for (int i = 0; i < phy->drv_data->n_clks; ++i) { > + if (!strcmp(phy->clks[i].id, "ref")) { > + phy->ref_clk = phy->clks[i].clk; > + break; > + } > + } > + > + phy->vregs = devm_kcalloc(dev, drv_data->n_regulators, > + sizeof(*phy->vregs), GFP_KERNEL); > + if (!phy->vregs) > + return -ENOMEM; > + regulator_bulk_set_supply_names(phy->vregs, > + drv_data->regulator_names, > + drv_data->n_regulators); > + ret = devm_regulator_bulk_get(dev, drv_data->n_regulators, > + phy->vregs); > + if (ret) > + return dev_err_probe(dev, ret, "failed to get regulators\n"); > + > + /* we treat the usblink controller phy as a separate phy */ > + phy->usbcon = devm_of_phy_get_by_index(dev, np, 0); > + if (IS_ERR(phy->usbcon)) > + return dev_err_probe(dev, PTR_ERR(phy->usbcon), > + "failed to get usbcon\n"); > + > + generic_phy = devm_phy_create(dev, NULL, &exynos2200_snps_eusb2_phy_ops); > + if (IS_ERR(generic_phy)) { > + dev_err(dev, "failed to create phy %d\n", ret); Syntax is return dev_err_probe > + return PTR_ERR(generic_phy); > + } > + > + dev_set_drvdata(dev, phy); > + phy_set_drvdata(generic_phy, phy); > + > + phy_provider = devm_of_phy_provider_register(dev, of_phy_simple_xlate); > + if (IS_ERR(phy_provider)) { > + dev_err(dev, "failed to register phy provider\n"); Syntax is return dev_err_probe > + return PTR_ERR(phy_provider); > + }; > + > + return 0; > +} Best regards, Krzysztof -- linux-phy mailing list linux-phy@lists.infradead.org https://lists.infradead.org/mailman/listinfo/linux-phy