From: Manivannan Sadhasivam <manivannan.sadhasivam@linaro.org>
To: Frank Li <Frank.Li@nxp.com>
Cc: krzysztof.kozlowski@linaro.org, bhelgaas@google.com,
conor+dt@kernel.org, devicetree@vger.kernel.org,
festevam@gmail.com, helgaas@kernel.org, hongxing.zhu@nxp.com,
imx@lists.linux.dev, kernel@pengutronix.de,
krzysztof.kozlowski+dt@linaro.org, kw@linux.com,
l.stach@pengutronix.de, linux-arm-kernel@lists.infradead.org,
linux-imx@nxp.com, linux-kernel@vger.kernel.org,
linux-pci@vger.kernel.org, lpieralisi@kernel.org,
robh@kernel.org, s.hauer@pengutronix.de, shawnguo@kernel.org
Subject: Re: [PATCH v4 02/15] PCI: imx6: Simplify phy handling by using by using IMX6_PCIE_FLAG_HAS_PHY
Date: Sun, 17 Dec 2023 22:48:11 +0530 [thread overview]
Message-ID: <20231217171811.GD6748@thinkpad> (raw)
In-Reply-To: <20231217051210.754832-3-Frank.Li@nxp.com>
On Sun, Dec 17, 2023 at 12:11:57AM -0500, Frank Li wrote:
> Refactors the phy handling logic in the imx6 PCI driver by adding
> IMX6_PCIE_FLAG_HAS_PHY bitmask define for drvdata::flags.
>
> The drvdata::flags and a bitmask ensures a cleaner and more scalable
> switch-case structure for handling phy.
>
> Signed-off-by: Frank Li <Frank.Li@nxp.com>
> ---
>
> Notes:
> Change from v1 to v3:
> - none
>
> drivers/pci/controller/dwc/pci-imx6.c | 23 ++++++++++++++++-------
> 1 file changed, 16 insertions(+), 7 deletions(-)
>
> diff --git a/drivers/pci/controller/dwc/pci-imx6.c b/drivers/pci/controller/dwc/pci-imx6.c
> index 2086214345e9a..91ba26a4b4c3d 100644
> --- a/drivers/pci/controller/dwc/pci-imx6.c
> +++ b/drivers/pci/controller/dwc/pci-imx6.c
> @@ -60,6 +60,9 @@ enum imx6_pcie_variants {
> #define IMX6_PCIE_FLAG_IMX6_PHY BIT(0)
> #define IMX6_PCIE_FLAG_IMX6_SPEED_CHANGE BIT(1)
> #define IMX6_PCIE_FLAG_SUPPORTS_SUSPEND BIT(2)
> +#define IMX6_PCIE_FLAG_HAS_PHY BIT(3)
> +
> +#define imx6_check_flag(pci, val) (pci->drvdata->flags & val)
>
> #define IMX6_PCIE_MAX_CLKS 6
>
> @@ -1277,6 +1280,13 @@ static int imx6_pcie_probe(struct platform_device *pdev)
> if (ret)
> return ret;
>
> + if (imx6_check_flag(imx6_pcie, IMX6_PCIE_FLAG_HAS_PHY)) {
> + imx6_pcie->phy = devm_phy_get(dev, "pcie-phy");
Can't you use devm_phy_optional_get()? This will return NULL if the PHY is not
defined in DT. So you can use IS_ERR() to catch error if there are issues in
acquiring PHY if defined and NULL can be safely passed to other PHY APIs like
phy_init() as well.
With this, you won't need a flag in drv_data and can also get rid of the
condition around PHY APIs.
- Mani
> + if (IS_ERR(imx6_pcie->phy))
> + return dev_err_probe(dev, PTR_ERR(imx6_pcie->phy),
> + "failed to get pcie phy\n");
> + }
> +
> switch (imx6_pcie->drvdata->variant) {
> case IMX7D:
> if (dbi_base->start == IMX8MQ_PCIE2_BASE_ADDR)
> @@ -1306,11 +1316,6 @@ static int imx6_pcie_probe(struct platform_device *pdev)
> return dev_err_probe(dev, PTR_ERR(imx6_pcie->apps_reset),
> "failed to get pcie apps reset control\n");
>
> - imx6_pcie->phy = devm_phy_get(dev, "pcie-phy");
> - if (IS_ERR(imx6_pcie->phy))
> - return dev_err_probe(dev, PTR_ERR(imx6_pcie->phy),
> - "failed to get pcie phy\n");
> -
> break;
> default:
> break;
> @@ -1447,13 +1452,15 @@ static const struct imx6_pcie_drvdata drvdata[] = {
> },
> [IMX8MM] = {
> .variant = IMX8MM,
> - .flags = IMX6_PCIE_FLAG_SUPPORTS_SUSPEND,
> + .flags = IMX6_PCIE_FLAG_SUPPORTS_SUSPEND |
> + IMX6_PCIE_FLAG_HAS_PHY,
> .gpr = "fsl,imx8mm-iomuxc-gpr",
> .clk_names = {IMX6_CLKS_COMMON, "pcie_aux"},
> },
> [IMX8MP] = {
> .variant = IMX8MP,
> - .flags = IMX6_PCIE_FLAG_SUPPORTS_SUSPEND,
> + .flags = IMX6_PCIE_FLAG_SUPPORTS_SUSPEND |
> + IMX6_PCIE_FLAG_HAS_PHY,
> .gpr = "fsl,imx8mp-iomuxc-gpr",
> .clk_names = {IMX6_CLKS_COMMON, "pcie_aux"},
> },
> @@ -1465,12 +1472,14 @@ static const struct imx6_pcie_drvdata drvdata[] = {
> },
> [IMX8MM_EP] = {
> .variant = IMX8MM_EP,
> + .flags = IMX6_PCIE_FLAG_HAS_PHY,
> .mode = DW_PCIE_EP_TYPE,
> .gpr = "fsl,imx8mm-iomuxc-gpr",
> .clk_names = {IMX6_CLKS_COMMON, "pcie_aux"},
> },
> [IMX8MP_EP] = {
> .variant = IMX8MP_EP,
> + .flags = IMX6_PCIE_FLAG_HAS_PHY,
> .mode = DW_PCIE_EP_TYPE,
> .gpr = "fsl,imx8mp-iomuxc-gpr",
> .clk_names = {IMX6_CLKS_COMMON, "pcie_aux"},
> --
> 2.34.1
>
--
மணிவண்ணன் சதாசிவம்
WARNING: multiple messages have this Message-ID (diff)
From: Manivannan Sadhasivam <manivannan.sadhasivam@linaro.org>
To: Frank Li <Frank.Li@nxp.com>
Cc: krzysztof.kozlowski@linaro.org, bhelgaas@google.com,
conor+dt@kernel.org, devicetree@vger.kernel.org,
festevam@gmail.com, helgaas@kernel.org, hongxing.zhu@nxp.com,
imx@lists.linux.dev, kernel@pengutronix.de,
krzysztof.kozlowski+dt@linaro.org, kw@linux.com,
l.stach@pengutronix.de, linux-arm-kernel@lists.infradead.org,
linux-imx@nxp.com, linux-kernel@vger.kernel.org,
linux-pci@vger.kernel.org, lpieralisi@kernel.org,
robh@kernel.org, s.hauer@pengutronix.de, shawnguo@kernel.org
Subject: Re: [PATCH v4 02/15] PCI: imx6: Simplify phy handling by using by using IMX6_PCIE_FLAG_HAS_PHY
Date: Sun, 17 Dec 2023 22:48:11 +0530 [thread overview]
Message-ID: <20231217171811.GD6748@thinkpad> (raw)
In-Reply-To: <20231217051210.754832-3-Frank.Li@nxp.com>
On Sun, Dec 17, 2023 at 12:11:57AM -0500, Frank Li wrote:
> Refactors the phy handling logic in the imx6 PCI driver by adding
> IMX6_PCIE_FLAG_HAS_PHY bitmask define for drvdata::flags.
>
> The drvdata::flags and a bitmask ensures a cleaner and more scalable
> switch-case structure for handling phy.
>
> Signed-off-by: Frank Li <Frank.Li@nxp.com>
> ---
>
> Notes:
> Change from v1 to v3:
> - none
>
> drivers/pci/controller/dwc/pci-imx6.c | 23 ++++++++++++++++-------
> 1 file changed, 16 insertions(+), 7 deletions(-)
>
> diff --git a/drivers/pci/controller/dwc/pci-imx6.c b/drivers/pci/controller/dwc/pci-imx6.c
> index 2086214345e9a..91ba26a4b4c3d 100644
> --- a/drivers/pci/controller/dwc/pci-imx6.c
> +++ b/drivers/pci/controller/dwc/pci-imx6.c
> @@ -60,6 +60,9 @@ enum imx6_pcie_variants {
> #define IMX6_PCIE_FLAG_IMX6_PHY BIT(0)
> #define IMX6_PCIE_FLAG_IMX6_SPEED_CHANGE BIT(1)
> #define IMX6_PCIE_FLAG_SUPPORTS_SUSPEND BIT(2)
> +#define IMX6_PCIE_FLAG_HAS_PHY BIT(3)
> +
> +#define imx6_check_flag(pci, val) (pci->drvdata->flags & val)
>
> #define IMX6_PCIE_MAX_CLKS 6
>
> @@ -1277,6 +1280,13 @@ static int imx6_pcie_probe(struct platform_device *pdev)
> if (ret)
> return ret;
>
> + if (imx6_check_flag(imx6_pcie, IMX6_PCIE_FLAG_HAS_PHY)) {
> + imx6_pcie->phy = devm_phy_get(dev, "pcie-phy");
Can't you use devm_phy_optional_get()? This will return NULL if the PHY is not
defined in DT. So you can use IS_ERR() to catch error if there are issues in
acquiring PHY if defined and NULL can be safely passed to other PHY APIs like
phy_init() as well.
With this, you won't need a flag in drv_data and can also get rid of the
condition around PHY APIs.
- Mani
> + if (IS_ERR(imx6_pcie->phy))
> + return dev_err_probe(dev, PTR_ERR(imx6_pcie->phy),
> + "failed to get pcie phy\n");
> + }
> +
> switch (imx6_pcie->drvdata->variant) {
> case IMX7D:
> if (dbi_base->start == IMX8MQ_PCIE2_BASE_ADDR)
> @@ -1306,11 +1316,6 @@ static int imx6_pcie_probe(struct platform_device *pdev)
> return dev_err_probe(dev, PTR_ERR(imx6_pcie->apps_reset),
> "failed to get pcie apps reset control\n");
>
> - imx6_pcie->phy = devm_phy_get(dev, "pcie-phy");
> - if (IS_ERR(imx6_pcie->phy))
> - return dev_err_probe(dev, PTR_ERR(imx6_pcie->phy),
> - "failed to get pcie phy\n");
> -
> break;
> default:
> break;
> @@ -1447,13 +1452,15 @@ static const struct imx6_pcie_drvdata drvdata[] = {
> },
> [IMX8MM] = {
> .variant = IMX8MM,
> - .flags = IMX6_PCIE_FLAG_SUPPORTS_SUSPEND,
> + .flags = IMX6_PCIE_FLAG_SUPPORTS_SUSPEND |
> + IMX6_PCIE_FLAG_HAS_PHY,
> .gpr = "fsl,imx8mm-iomuxc-gpr",
> .clk_names = {IMX6_CLKS_COMMON, "pcie_aux"},
> },
> [IMX8MP] = {
> .variant = IMX8MP,
> - .flags = IMX6_PCIE_FLAG_SUPPORTS_SUSPEND,
> + .flags = IMX6_PCIE_FLAG_SUPPORTS_SUSPEND |
> + IMX6_PCIE_FLAG_HAS_PHY,
> .gpr = "fsl,imx8mp-iomuxc-gpr",
> .clk_names = {IMX6_CLKS_COMMON, "pcie_aux"},
> },
> @@ -1465,12 +1472,14 @@ static const struct imx6_pcie_drvdata drvdata[] = {
> },
> [IMX8MM_EP] = {
> .variant = IMX8MM_EP,
> + .flags = IMX6_PCIE_FLAG_HAS_PHY,
> .mode = DW_PCIE_EP_TYPE,
> .gpr = "fsl,imx8mm-iomuxc-gpr",
> .clk_names = {IMX6_CLKS_COMMON, "pcie_aux"},
> },
> [IMX8MP_EP] = {
> .variant = IMX8MP_EP,
> + .flags = IMX6_PCIE_FLAG_HAS_PHY,
> .mode = DW_PCIE_EP_TYPE,
> .gpr = "fsl,imx8mp-iomuxc-gpr",
> .clk_names = {IMX6_CLKS_COMMON, "pcie_aux"},
> --
> 2.34.1
>
--
மணிவண்ணன் சதாசிவம்
_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
next prev parent reply other threads:[~2023-12-17 17:18 UTC|newest]
Thread overview: 48+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-12-17 5:11 [PATCH v4 00/15] PCI: imx6: Clean up and add imx95 pci support Frank Li
2023-12-17 5:11 ` Frank Li
2023-12-17 5:11 ` [PATCH v4 01/15] PCI: imx6: Simplify clock handling by using bulk_clk_*() function Frank Li
2023-12-17 5:11 ` Frank Li
2023-12-17 17:06 ` Manivannan Sadhasivam
2023-12-17 17:06 ` Manivannan Sadhasivam
2023-12-18 14:28 ` Frank Li
2023-12-18 14:28 ` Frank Li
2023-12-17 5:11 ` [PATCH v4 02/15] PCI: imx6: Simplify phy handling by using by using IMX6_PCIE_FLAG_HAS_PHY Frank Li
2023-12-17 5:11 ` Frank Li
2023-12-17 17:18 ` Manivannan Sadhasivam [this message]
2023-12-17 17:18 ` Manivannan Sadhasivam
2023-12-18 14:35 ` Frank Li
2023-12-18 14:35 ` Frank Li
2023-12-17 5:11 ` [PATCH v4 03/15] PCI: imx6: Simplify reset handling by using by using *_FLAG_HAS_*_RESET Frank Li
2023-12-17 5:11 ` Frank Li
2023-12-17 17:34 ` Manivannan Sadhasivam
2023-12-17 17:34 ` Manivannan Sadhasivam
2023-12-17 5:11 ` [PATCH v4 04/15] PCI: imx6: Using "linux,pci-domain" as slot ID Frank Li
2023-12-17 5:11 ` Frank Li
2023-12-17 17:51 ` Manivannan Sadhasivam
2023-12-17 17:51 ` Manivannan Sadhasivam
2023-12-17 5:12 ` [PATCH v4 05/15] PCI: imx6: Simplify ltssm_enable() by using ltssm_off and ltssm_mask Frank Li
2023-12-17 5:12 ` Frank Li
2023-12-17 5:12 ` [PATCH v4 06/15] PCI: imx6: Simplify configure_type() by using mode_off and mode_mask Frank Li
2023-12-17 5:12 ` Frank Li
2023-12-17 5:12 ` [PATCH v4 07/15] PCI: imx6: Simplify switch-case logic by involve init_phy callback Frank Li
2023-12-17 5:12 ` Frank Li
2023-12-17 5:12 ` [PATCH v4 08/15] dt-bindings: imx6q-pcie: Clean up irrationality clocks check Frank Li
2023-12-17 5:12 ` Frank Li
2023-12-17 5:12 ` [PATCH v4 09/15] dt-bindings: imx6q-pcie: remove reg and reg-name Frank Li
2023-12-17 5:12 ` Frank Li
2023-12-20 15:46 ` Rob Herring
2023-12-20 15:46 ` Rob Herring
2023-12-20 15:54 ` Rob Herring
2023-12-20 15:54 ` Rob Herring
2023-12-17 5:12 ` [PATCH v4 10/15] dt-bindings: imx6q-pcie: Add imx95 pcie compatible string Frank Li
2023-12-17 5:12 ` Frank Li
2023-12-17 5:12 ` [PATCH v4 11/15] PCI: imx6: Add iMX95 PCIe support Frank Li
2023-12-17 5:12 ` Frank Li
2023-12-17 5:12 ` [PATCH v4 12/15] PCI: imx6: Clean up get addr_space code Frank Li
2023-12-17 5:12 ` Frank Li
2023-12-17 5:12 ` [PATCH v4 13/15] PCI: imx6: Add epc_features in imx6_pcie_drvdata Frank Li
2023-12-17 5:12 ` Frank Li
2023-12-17 5:12 ` [PATCH v4 14/15] dt-bindings: imx6q-pcie: Add iMX95 pcie endpoint compatible string Frank Li
2023-12-17 5:12 ` Frank Li
2023-12-17 5:12 ` [PATCH v4 15/15] PCI: imx6: Add iMX95 Endpoint (EP) function support Frank Li
2023-12-17 5:12 ` Frank Li
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20231217171811.GD6748@thinkpad \
--to=manivannan.sadhasivam@linaro.org \
--cc=Frank.Li@nxp.com \
--cc=bhelgaas@google.com \
--cc=conor+dt@kernel.org \
--cc=devicetree@vger.kernel.org \
--cc=festevam@gmail.com \
--cc=helgaas@kernel.org \
--cc=hongxing.zhu@nxp.com \
--cc=imx@lists.linux.dev \
--cc=kernel@pengutronix.de \
--cc=krzysztof.kozlowski+dt@linaro.org \
--cc=krzysztof.kozlowski@linaro.org \
--cc=kw@linux.com \
--cc=l.stach@pengutronix.de \
--cc=linux-arm-kernel@lists.infradead.org \
--cc=linux-imx@nxp.com \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-pci@vger.kernel.org \
--cc=lpieralisi@kernel.org \
--cc=robh@kernel.org \
--cc=s.hauer@pengutronix.de \
--cc=shawnguo@kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.