From: Manivannan Sadhasivam <mani@kernel.org>
To: Niklas Cassel <cassel@kernel.org>
Cc: "Jingoo Han" <jingoohan1@gmail.com>,
"Manivannan Sadhasivam" <manivannan.sadhasivam@linaro.org>,
"Bjorn Helgaas" <bhelgaas@google.com>,
"Lorenzo Pieralisi" <lpieralisi@kernel.org>,
"Krzysztof Wilczyński" <kw@linux.com>,
"Rob Herring" <robh@kernel.org>,
"Krzysztof Kozlowski" <krzk+dt@kernel.org>,
"Conor Dooley" <conor+dt@kernel.org>,
"Heiko Stuebner" <heiko@sntech.de>,
"Kishon Vijay Abraham I" <kishon@kernel.org>,
"Arnd Bergmann" <arnd@arndb.de>,
"Damien Le Moal" <dlemoal@kernel.org>,
"Jon Lin" <jon.lin@rock-chips.com>,
"Shawn Lin" <shawn.lin@rock-chips.com>,
"Simon Xue" <xxm@rock-chips.com>,
linux-pci@vger.kernel.org, devicetree@vger.kernel.org,
linux-rockchip@lists.infradead.org
Subject: Re: [PATCH v4 09/13] PCI: dw-rockchip: Refactor the driver to prepare for EP mode
Date: Wed, 5 Jun 2024 13:36:40 +0530 [thread overview]
Message-ID: <20240605080640.GJ5085@thinkpad> (raw)
In-Reply-To: <20240529-rockchip-pcie-ep-v1-v4-9-3dc00fe21a78@kernel.org>
On Wed, May 29, 2024 at 10:29:03AM +0200, Niklas Cassel wrote:
> This refactors the driver to prepare for EP mode.
> Add of-match data to the existing compatible, and explicitly define it as
> DW_PCIE_RC_TYPE. This way, we will be able to add EP mode in a follow-up
> commit in a much less intrusive way, which makes the follup-up commit much
> easier to review.
>
> No functional change intended.
>
> Signed-off-by: Niklas Cassel <cassel@kernel.org>
Few nitpicks below. With those addressed,
Reviewed-by: Manivannan Sadhasivam <manivannan.sadhasivam@linaro.org>
> ---
> drivers/pci/controller/dwc/pcie-dw-rockchip.c | 84 +++++++++++++++++++--------
> 1 file changed, 60 insertions(+), 24 deletions(-)
>
> diff --git a/drivers/pci/controller/dwc/pcie-dw-rockchip.c b/drivers/pci/controller/dwc/pcie-dw-rockchip.c
> index 1380e3a5284b..e133511692af 100644
> --- a/drivers/pci/controller/dwc/pcie-dw-rockchip.c
> +++ b/drivers/pci/controller/dwc/pcie-dw-rockchip.c
> @@ -49,15 +49,20 @@
> #define PCIE_LTSSM_STATUS_MASK GENMASK(5, 0)
>
> struct rockchip_pcie {
> - struct dw_pcie pci;
> - void __iomem *apb_base;
> - struct phy *phy;
> - struct clk_bulk_data *clks;
> - unsigned int clk_cnt;
> - struct reset_control *rst;
> - struct gpio_desc *rst_gpio;
> - struct regulator *vpcie3v3;
> - struct irq_domain *irq_domain;
> + struct dw_pcie pci;
> + void __iomem *apb_base;
> + struct phy *phy;
> + struct clk_bulk_data *clks;
> + unsigned int clk_cnt;
> + struct reset_control *rst;
> + struct gpio_desc *rst_gpio;
> + struct regulator *vpcie3v3;
> + struct irq_domain *irq_domain;
> + const struct rockchip_pcie_of_data *data;
I prefer to avoid aligning the struct members just for this reason. Once you add
a member with a bigger name, then you need to align others also. Please just use
space.
> +};
> +
> +struct rockchip_pcie_of_data {
> + enum dw_pcie_device_mode mode;
> };
>
> static int rockchip_pcie_readl_apb(struct rockchip_pcie *rockchip, u32 reg)
> @@ -195,7 +200,6 @@ static int rockchip_pcie_host_init(struct dw_pcie_rp *pp)
> struct dw_pcie *pci = to_dw_pcie_from_pp(pp);
> struct rockchip_pcie *rockchip = to_rockchip_pcie(pci);
> struct device *dev = rockchip->pci.dev;
> - u32 val = HIWORD_UPDATE_BIT(PCIE_LTSSM_ENABLE_ENHANCE);
> int irq, ret;
>
> irq = of_irq_get_byname(dev->of_node, "legacy");
> @@ -209,12 +213,6 @@ static int rockchip_pcie_host_init(struct dw_pcie_rp *pp)
> irq_set_chained_handler_and_data(irq, rockchip_pcie_intx_handler,
> rockchip);
>
> - /* LTSSM enable control mode */
> - rockchip_pcie_writel_apb(rockchip, val, PCIE_CLIENT_HOT_RESET_CTRL);
> -
> - rockchip_pcie_writel_apb(rockchip, PCIE_CLIENT_RC_MODE,
> - PCIE_CLIENT_GENERAL_CONTROL);
> -
> return 0;
> }
>
> @@ -294,13 +292,35 @@ static const struct dw_pcie_ops dw_pcie_ops = {
> .start_link = rockchip_pcie_start_link,
> };
>
> +static int rockchip_pcie_configure_rc(struct rockchip_pcie *rockchip)
> +{
> + struct dw_pcie_rp *pp;
> + u32 val;
> +
> + /* LTSSM enable control mode */
> + val = HIWORD_UPDATE_BIT(PCIE_LTSSM_ENABLE_ENHANCE);
> + rockchip_pcie_writel_apb(rockchip, val, PCIE_CLIENT_HOT_RESET_CTRL);
> +
> + rockchip_pcie_writel_apb(rockchip, PCIE_CLIENT_RC_MODE,
> + PCIE_CLIENT_GENERAL_CONTROL);
> +
> + pp = &rockchip->pci.pp;
> + pp->ops = &rockchip_pcie_host_ops;
> +
> + return dw_pcie_host_init(pp);
> +}
> +
> static int rockchip_pcie_probe(struct platform_device *pdev)
> {
> struct device *dev = &pdev->dev;
> struct rockchip_pcie *rockchip;
> - struct dw_pcie_rp *pp;
> + const struct rockchip_pcie_of_data *data;
> int ret;
>
> + data = of_device_get_match_data(dev);
> + if (!data)
> + return -EINVAL;
-ENODATA?
> +
> rockchip = devm_kzalloc(dev, sizeof(*rockchip), GFP_KERNEL);
> if (!rockchip)
> return -ENOMEM;
> @@ -309,9 +329,7 @@ static int rockchip_pcie_probe(struct platform_device *pdev)
>
> rockchip->pci.dev = dev;
> rockchip->pci.ops = &dw_pcie_ops;
> -
> - pp = &rockchip->pci.pp;
> - pp->ops = &rockchip_pcie_host_ops;
> + rockchip->data = data;
>
> ret = rockchip_pcie_resource_get(pdev, rockchip);
> if (ret)
> @@ -347,10 +365,21 @@ static int rockchip_pcie_probe(struct platform_device *pdev)
> if (ret)
> goto deinit_phy;
>
> - ret = dw_pcie_host_init(pp);
> - if (!ret)
> - return 0;
Thanks a lot for getting rid of this ugly piece of code!
- Mani
--
மணிவண்ணன் சதாசிவம்
WARNING: multiple messages have this Message-ID (diff)
From: Manivannan Sadhasivam <mani@kernel.org>
To: Niklas Cassel <cassel@kernel.org>
Cc: "Jingoo Han" <jingoohan1@gmail.com>,
"Manivannan Sadhasivam" <manivannan.sadhasivam@linaro.org>,
"Bjorn Helgaas" <bhelgaas@google.com>,
"Lorenzo Pieralisi" <lpieralisi@kernel.org>,
"Krzysztof Wilczyński" <kw@linux.com>,
"Rob Herring" <robh@kernel.org>,
"Krzysztof Kozlowski" <krzk+dt@kernel.org>,
"Conor Dooley" <conor+dt@kernel.org>,
"Heiko Stuebner" <heiko@sntech.de>,
"Kishon Vijay Abraham I" <kishon@kernel.org>,
"Arnd Bergmann" <arnd@arndb.de>,
"Damien Le Moal" <dlemoal@kernel.org>,
"Jon Lin" <jon.lin@rock-chips.com>,
"Shawn Lin" <shawn.lin@rock-chips.com>,
"Simon Xue" <xxm@rock-chips.com>,
linux-pci@vger.kernel.org, devicetree@vger.kernel.org,
linux-rockchip@lists.infradead.org
Subject: Re: [PATCH v4 09/13] PCI: dw-rockchip: Refactor the driver to prepare for EP mode
Date: Wed, 5 Jun 2024 13:36:40 +0530 [thread overview]
Message-ID: <20240605080640.GJ5085@thinkpad> (raw)
In-Reply-To: <20240529-rockchip-pcie-ep-v1-v4-9-3dc00fe21a78@kernel.org>
On Wed, May 29, 2024 at 10:29:03AM +0200, Niklas Cassel wrote:
> This refactors the driver to prepare for EP mode.
> Add of-match data to the existing compatible, and explicitly define it as
> DW_PCIE_RC_TYPE. This way, we will be able to add EP mode in a follow-up
> commit in a much less intrusive way, which makes the follup-up commit much
> easier to review.
>
> No functional change intended.
>
> Signed-off-by: Niklas Cassel <cassel@kernel.org>
Few nitpicks below. With those addressed,
Reviewed-by: Manivannan Sadhasivam <manivannan.sadhasivam@linaro.org>
> ---
> drivers/pci/controller/dwc/pcie-dw-rockchip.c | 84 +++++++++++++++++++--------
> 1 file changed, 60 insertions(+), 24 deletions(-)
>
> diff --git a/drivers/pci/controller/dwc/pcie-dw-rockchip.c b/drivers/pci/controller/dwc/pcie-dw-rockchip.c
> index 1380e3a5284b..e133511692af 100644
> --- a/drivers/pci/controller/dwc/pcie-dw-rockchip.c
> +++ b/drivers/pci/controller/dwc/pcie-dw-rockchip.c
> @@ -49,15 +49,20 @@
> #define PCIE_LTSSM_STATUS_MASK GENMASK(5, 0)
>
> struct rockchip_pcie {
> - struct dw_pcie pci;
> - void __iomem *apb_base;
> - struct phy *phy;
> - struct clk_bulk_data *clks;
> - unsigned int clk_cnt;
> - struct reset_control *rst;
> - struct gpio_desc *rst_gpio;
> - struct regulator *vpcie3v3;
> - struct irq_domain *irq_domain;
> + struct dw_pcie pci;
> + void __iomem *apb_base;
> + struct phy *phy;
> + struct clk_bulk_data *clks;
> + unsigned int clk_cnt;
> + struct reset_control *rst;
> + struct gpio_desc *rst_gpio;
> + struct regulator *vpcie3v3;
> + struct irq_domain *irq_domain;
> + const struct rockchip_pcie_of_data *data;
I prefer to avoid aligning the struct members just for this reason. Once you add
a member with a bigger name, then you need to align others also. Please just use
space.
> +};
> +
> +struct rockchip_pcie_of_data {
> + enum dw_pcie_device_mode mode;
> };
>
> static int rockchip_pcie_readl_apb(struct rockchip_pcie *rockchip, u32 reg)
> @@ -195,7 +200,6 @@ static int rockchip_pcie_host_init(struct dw_pcie_rp *pp)
> struct dw_pcie *pci = to_dw_pcie_from_pp(pp);
> struct rockchip_pcie *rockchip = to_rockchip_pcie(pci);
> struct device *dev = rockchip->pci.dev;
> - u32 val = HIWORD_UPDATE_BIT(PCIE_LTSSM_ENABLE_ENHANCE);
> int irq, ret;
>
> irq = of_irq_get_byname(dev->of_node, "legacy");
> @@ -209,12 +213,6 @@ static int rockchip_pcie_host_init(struct dw_pcie_rp *pp)
> irq_set_chained_handler_and_data(irq, rockchip_pcie_intx_handler,
> rockchip);
>
> - /* LTSSM enable control mode */
> - rockchip_pcie_writel_apb(rockchip, val, PCIE_CLIENT_HOT_RESET_CTRL);
> -
> - rockchip_pcie_writel_apb(rockchip, PCIE_CLIENT_RC_MODE,
> - PCIE_CLIENT_GENERAL_CONTROL);
> -
> return 0;
> }
>
> @@ -294,13 +292,35 @@ static const struct dw_pcie_ops dw_pcie_ops = {
> .start_link = rockchip_pcie_start_link,
> };
>
> +static int rockchip_pcie_configure_rc(struct rockchip_pcie *rockchip)
> +{
> + struct dw_pcie_rp *pp;
> + u32 val;
> +
> + /* LTSSM enable control mode */
> + val = HIWORD_UPDATE_BIT(PCIE_LTSSM_ENABLE_ENHANCE);
> + rockchip_pcie_writel_apb(rockchip, val, PCIE_CLIENT_HOT_RESET_CTRL);
> +
> + rockchip_pcie_writel_apb(rockchip, PCIE_CLIENT_RC_MODE,
> + PCIE_CLIENT_GENERAL_CONTROL);
> +
> + pp = &rockchip->pci.pp;
> + pp->ops = &rockchip_pcie_host_ops;
> +
> + return dw_pcie_host_init(pp);
> +}
> +
> static int rockchip_pcie_probe(struct platform_device *pdev)
> {
> struct device *dev = &pdev->dev;
> struct rockchip_pcie *rockchip;
> - struct dw_pcie_rp *pp;
> + const struct rockchip_pcie_of_data *data;
> int ret;
>
> + data = of_device_get_match_data(dev);
> + if (!data)
> + return -EINVAL;
-ENODATA?
> +
> rockchip = devm_kzalloc(dev, sizeof(*rockchip), GFP_KERNEL);
> if (!rockchip)
> return -ENOMEM;
> @@ -309,9 +329,7 @@ static int rockchip_pcie_probe(struct platform_device *pdev)
>
> rockchip->pci.dev = dev;
> rockchip->pci.ops = &dw_pcie_ops;
> -
> - pp = &rockchip->pci.pp;
> - pp->ops = &rockchip_pcie_host_ops;
> + rockchip->data = data;
>
> ret = rockchip_pcie_resource_get(pdev, rockchip);
> if (ret)
> @@ -347,10 +365,21 @@ static int rockchip_pcie_probe(struct platform_device *pdev)
> if (ret)
> goto deinit_phy;
>
> - ret = dw_pcie_host_init(pp);
> - if (!ret)
> - return 0;
Thanks a lot for getting rid of this ugly piece of code!
- Mani
--
மணிவண்ணன் சதாசிவம்
_______________________________________________
Linux-rockchip mailing list
Linux-rockchip@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-rockchip
next prev parent reply other threads:[~2024-06-05 8:06 UTC|newest]
Thread overview: 68+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-05-29 8:28 [PATCH v4 00/13] PCI: dw-rockchip: Add endpoint mode support Niklas Cassel
2024-05-29 8:28 ` Niklas Cassel
2024-05-29 8:28 ` [PATCH v4 01/13] dt-bindings: PCI: snps,dw-pcie-ep: Add vendor specific reg-name Niklas Cassel
2024-05-29 8:28 ` Niklas Cassel
2024-06-05 7:22 ` Manivannan Sadhasivam
2024-06-05 7:22 ` Manivannan Sadhasivam
2024-05-29 8:28 ` [PATCH v4 02/13] dt-bindings: PCI: snps,dw-pcie-ep: Add vendor specific interrupt-names Niklas Cassel
2024-05-29 8:28 ` Niklas Cassel
2024-06-05 7:24 ` Manivannan Sadhasivam
2024-06-05 7:24 ` Manivannan Sadhasivam
2024-05-29 8:28 ` [PATCH v4 03/13] dt-bindings: PCI: snps,dw-pcie-ep: Add tx_int{a,b,c,d} legacy irqs Niklas Cassel
2024-05-29 8:28 ` Niklas Cassel
2024-06-05 7:34 ` Manivannan Sadhasivam
2024-06-05 7:34 ` Manivannan Sadhasivam
2024-06-05 16:20 ` Niklas Cassel
2024-06-05 16:20 ` Niklas Cassel
2024-06-06 6:25 ` Manivannan Sadhasivam
2024-06-06 6:25 ` Manivannan Sadhasivam
2024-06-07 9:49 ` Niklas Cassel
2024-06-07 9:49 ` Niklas Cassel
2024-05-29 8:28 ` [PATCH v4 04/13] dt-bindings: PCI: rockchip-dw-pcie: Prepare for Endpoint mode support Niklas Cassel
2024-05-29 8:28 ` Niklas Cassel
2024-06-05 7:35 ` Manivannan Sadhasivam
2024-06-05 7:35 ` Manivannan Sadhasivam
2024-05-29 8:28 ` [PATCH v4 05/13] dt-bindings: PCI: rockchip-dw-pcie: Fix description of legacy irq Niklas Cassel
2024-05-29 8:28 ` Niklas Cassel
2024-06-05 7:36 ` Manivannan Sadhasivam
2024-06-05 7:36 ` Manivannan Sadhasivam
2024-05-29 8:29 ` [PATCH v4 06/13] dt-bindings: rockchip: Add DesignWare based PCIe Endpoint controller Niklas Cassel
2024-05-29 8:29 ` Niklas Cassel
2024-06-05 7:42 ` Manivannan Sadhasivam
2024-06-05 7:42 ` Manivannan Sadhasivam
2024-05-29 8:29 ` [PATCH v4 07/13] PCI: dw-rockchip: Fix weird indentation Niklas Cassel
2024-05-29 8:29 ` Niklas Cassel
2024-05-29 8:29 ` [PATCH v4 08/13] PCI: dw-rockchip: Add rockchip_pcie_get_ltssm() helper Niklas Cassel
2024-05-29 8:29 ` Niklas Cassel
2024-06-05 7:43 ` Manivannan Sadhasivam
2024-06-05 7:43 ` Manivannan Sadhasivam
2024-05-29 8:29 ` [PATCH v4 09/13] PCI: dw-rockchip: Refactor the driver to prepare for EP mode Niklas Cassel
2024-05-29 8:29 ` Niklas Cassel
2024-06-05 8:06 ` Manivannan Sadhasivam [this message]
2024-06-05 8:06 ` Manivannan Sadhasivam
2024-06-05 17:57 ` Niklas Cassel
2024-06-05 17:57 ` Niklas Cassel
2024-06-06 6:27 ` Manivannan Sadhasivam
2024-06-06 6:27 ` Manivannan Sadhasivam
2024-05-29 8:29 ` [PATCH v4 10/13] PCI: dw-rockchip: Add endpoint mode support Niklas Cassel
2024-05-29 8:29 ` Niklas Cassel
2024-06-05 8:17 ` Manivannan Sadhasivam
2024-06-05 8:17 ` Manivannan Sadhasivam
2024-06-05 18:58 ` Niklas Cassel
2024-06-05 18:58 ` Niklas Cassel
2024-06-06 6:31 ` Manivannan Sadhasivam
2024-06-06 6:31 ` Manivannan Sadhasivam
2024-06-07 11:01 ` Niklas Cassel
2024-06-07 11:01 ` Niklas Cassel
2024-05-29 8:29 ` [PATCH v4 11/13] misc: pci_endpoint_test: Add support for rockchip rk3588 Niklas Cassel
2024-05-29 8:29 ` Niklas Cassel
2024-05-29 8:29 ` [PATCH v4 12/13] arm64: dts: rockchip: Add PCIe endpoint mode support Niklas Cassel
2024-05-29 8:29 ` Niklas Cassel
2024-06-05 8:20 ` Manivannan Sadhasivam
2024-06-05 8:20 ` Manivannan Sadhasivam
2024-05-29 8:29 ` [PATCH v4 13/13] arm64: dts: rockchip: Add rock5b overlays for PCIe endpoint mode Niklas Cassel
2024-05-29 8:29 ` Niklas Cassel
2024-06-04 1:45 ` [PATCH v4 00/13] PCI: dw-rockchip: Add endpoint mode support Kever Yang
2024-06-04 1:45 ` Kever Yang
2024-06-04 1:51 ` Damien Le Moal
2024-06-04 1:51 ` Damien Le Moal
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=20240605080640.GJ5085@thinkpad \
--to=mani@kernel.org \
--cc=arnd@arndb.de \
--cc=bhelgaas@google.com \
--cc=cassel@kernel.org \
--cc=conor+dt@kernel.org \
--cc=devicetree@vger.kernel.org \
--cc=dlemoal@kernel.org \
--cc=heiko@sntech.de \
--cc=jingoohan1@gmail.com \
--cc=jon.lin@rock-chips.com \
--cc=kishon@kernel.org \
--cc=krzk+dt@kernel.org \
--cc=kw@linux.com \
--cc=linux-pci@vger.kernel.org \
--cc=linux-rockchip@lists.infradead.org \
--cc=lpieralisi@kernel.org \
--cc=manivannan.sadhasivam@linaro.org \
--cc=robh@kernel.org \
--cc=shawn.lin@rock-chips.com \
--cc=xxm@rock-chips.com \
/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.