From: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
To: Inochi Amaoto <inochiama@gmail.com>
Cc: "Jingoo Han" <jingoohan1@gmail.com>,
"Manivannan Sadhasivam" <mani@kernel.org>,
"Lorenzo Pieralisi" <lpieralisi@kernel.org>,
"Krzysztof Wilczyński" <kwilczynski@kernel.org>,
"Rob Herring" <robh@kernel.org>,
"Bjorn Helgaas" <bhelgaas@google.com>,
"Krzysztof Kozlowski" <krzk+dt@kernel.org>,
"Conor Dooley" <conor+dt@kernel.org>,
"Yixun Lan" <dlan@kernel.org>, "Paul Walmsley" <pjw@kernel.org>,
"Palmer Dabbelt" <palmer@dabbelt.com>,
"Albert Ou" <aou@eecs.berkeley.edu>,
"Alexandre Ghiti" <alex@ghiti.fr>, "Frank Li" <Frank.Li@nxp.com>,
"Arnd Bergmann" <arnd@arndb.de>,
"Niklas Cassel" <cassel@kernel.org>,
"Christian Bruel" <christian.bruel@foss.st.com>,
"Senchuan Zhang" <zhangsenchuan@eswincomputing.com>,
"Vincent Guittot" <vincent.guittot@linaro.org>,
"Randolph Lin" <randolph@andestech.com>,
"Xincheng Zhang" <zhangxincheng@ultrarisc.com>,
"Alex Elder" <elder@riscstar.com>,
"Siddharth Vadapalli" <s-vadapalli@ti.com>,
"Marek Vasut" <marek.vasut+renesas@mailbox.org>,
"Vidya Sagar" <vidyas@nvidia.com>,
"Pengpeng Hou" <pengpeng@iscas.ac.cn>,
"Anirudh Srinivasan" <asrinivasan@oss.tenstorrent.com>,
"Uwe Kleine-König (The Capable Hub)"
<u.kleine-koenig@baylibre.com>,
"Gustavo Pimentel" <gustavo.pimentel@synopsys.com>,
linux-pci@vger.kernel.org, devicetree@vger.kernel.org,
linux-kernel@vger.kernel.org, linux-riscv@lists.infradead.org,
spacemit@lists.linux.dev, "Yixun Lan" <dlan@gentoo.org>,
"Longbin Li" <looong.bin@gmail.com>
Subject: Re: [PATCH v7 6/6] PCI: spacemit-k1: Add Spacemit K3 PCIe host controller support
Date: Wed, 30 Sep 2026 10:54:00 +0300 [thread overview]
Message-ID: <arzAGOKLOustEW7F@ashevche-desk.local> (raw)
In-Reply-To: <20260929083755.458238-7-inochiama@gmail.com>
On Tue, Sep 29, 2026 at 04:37:52PM +0800, Inochi Amaoto wrote:
> The PCIe controller on Spacemit K3 is almost a standard Synopsys
> DesignWare PCIe IP with extra link and reset control. Unlike
> the PCIe controller on K1, this controller supports external MSI
> interrupt controller and can use multiple PHYs at the same time.
>
> Add driver to support PCIe controller on Spacemit K3 PCIe.
...
> +static int k3_pcie_init(struct dw_pcie_rp *pp)
> +{
> + struct dw_pcie *pci = to_dw_pcie_from_pp(pp);
> + struct k1_pcie *k1 = to_k1_pcie(pci);
> + u32 reset_ctrl = k1->pmu_off + PCIE_CLK_RESET_CONTROL;
> + u32 val;
> + int ret;
> +
> + regmap_clear_bits(k1->pmu, reset_ctrl, LTSSM_EN);
> +
> + k1_pcie_toggle_soft_reset(k1);
> +
> + /* K3: Set IGNORE_PERSTN and drive PERSTN_OE high (assert reset) */
> + regmap_update_bits(k1->pmu, k1->pmu_off + PCIE_CONTROL_LOGIC,
> + PCIE_IGNORE_PERSTN | PCIE_PERSTN_OE | PCIE_PERSTN_OUT,
> + PCIE_IGNORE_PERSTN | PCIE_PERSTN_OE);
Would it make sense to define permutations
PCIE_IGNORE_PERSTN | PCIE_PERSTN_OE
for here...
> + ret = k1_pcie_enable_resources(k1);
> + if (ret)
> + goto failed_resources;
> +
> + regmap_set_bits(k1->pmu, reset_ctrl, PCIE_AUX_PWR_DET);
> + regmap_clear_bits(k1->pmu, reset_ctrl, APP_HOLD_PHY_RST);
> +
> + ret = phy_bulk_init(k1->phy_count, k1->phys);
> + if (ret)
> + goto failed_phy_init;
> +
> + ret = phy_bulk_power_on(k1->phy_count, k1->phys);
> + if (ret)
> + goto failed_phy_power_on;
> +
> + msleep(PCIE_T_PVPERL_MS);
> +
> + regmap_set_bits(k1->pmu, k1->pmu_off + PCIE_CONTROL_LOGIC,
> + PCIE_PERSTN_OUT | PCIE_PERSTN_OE);
...and
PCIE_PERSTN_OUT | PCIE_PERSTN_OE
for here and elsewhere?
> + val = dw_pcie_readl_dbi(pci, GEN3_EQ_CONTROL_OFF);
> + val = u32_replace_bits(val, BIT(7),
> + GEN3_EQ_CONTROL_OFF_PSET_REQ_VEC);
It's perfectly a single line. Check your editor settings (I believe I have
commented on a such in one of the previous rounds).
> + dw_pcie_writel_dbi(pci, GEN3_EQ_CONTROL_OFF, val);
> +
> + k1_pcie_set_device_id(k1);
> +
> + /* Finally, as a workaround, disable ASPM L1 */
> + k1_pcie_disable_aspm_l1(k1);
> +
> + return 0;
> +
> +failed_phy_power_on:
> + phy_bulk_exit(k1->phy_count, k1->phys);
> +failed_phy_init:
> + k1_pcie_disable_resources(k1);
> +failed_resources:
> + regmap_update_bits(k1->pmu, k1->pmu_off + PCIE_CONTROL_LOGIC,
> + PCIE_PERSTN_OUT | PCIE_PERSTN_OE,
> + PCIE_PERSTN_OE);
> +
> + return ret;
> +}
...
You checked everything but regmap IO. Why? Do you except it won't ever fail?
Perhaps to add a note about this (if not yet) to the cover letter?
--
With Best Regards,
Andy Shevchenko
WARNING: multiple messages have this Message-ID (diff)
From: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
To: Inochi Amaoto <inochiama@gmail.com>
Cc: "Jingoo Han" <jingoohan1@gmail.com>,
"Manivannan Sadhasivam" <mani@kernel.org>,
"Lorenzo Pieralisi" <lpieralisi@kernel.org>,
"Krzysztof Wilczyński" <kwilczynski@kernel.org>,
"Rob Herring" <robh@kernel.org>,
"Bjorn Helgaas" <bhelgaas@google.com>,
"Krzysztof Kozlowski" <krzk+dt@kernel.org>,
"Conor Dooley" <conor+dt@kernel.org>,
"Yixun Lan" <dlan@kernel.org>, "Paul Walmsley" <pjw@kernel.org>,
"Palmer Dabbelt" <palmer@dabbelt.com>,
"Albert Ou" <aou@eecs.berkeley.edu>,
"Alexandre Ghiti" <alex@ghiti.fr>, "Frank Li" <Frank.Li@nxp.com>,
"Arnd Bergmann" <arnd@arndb.de>,
"Niklas Cassel" <cassel@kernel.org>,
"Christian Bruel" <christian.bruel@foss.st.com>,
"Senchuan Zhang" <zhangsenchuan@eswincomputing.com>,
"Vincent Guittot" <vincent.guittot@linaro.org>,
"Randolph Lin" <randolph@andestech.com>,
"Xincheng Zhang" <zhangxincheng@ultrarisc.com>,
"Alex Elder" <elder@riscstar.com>,
"Siddharth Vadapalli" <s-vadapalli@ti.com>,
"Marek Vasut" <marek.vasut+renesas@mailbox.org>,
"Vidya Sagar" <vidyas@nvidia.com>,
"Pengpeng Hou" <pengpeng@iscas.ac.cn>,
"Anirudh Srinivasan" <asrinivasan@oss.tenstorrent.com>,
"Uwe Kleine-König (The Capable Hub)"
<u.kleine-koenig@baylibre.com>,
"Gustavo Pimentel" <gustavo.pimentel@synopsys.com>,
linux-pci@vger.kernel.org, devicetree@vger.kernel.org,
linux-kernel@vger.kernel.org, linux-riscv@lists.infradead.org,
spacemit@lists.linux.dev, "Yixun Lan" <dlan@gentoo.org>,
"Longbin Li" <looong.bin@gmail.com>
Subject: Re: [PATCH v7 6/6] PCI: spacemit-k1: Add Spacemit K3 PCIe host controller support
Date: Wed, 30 Sep 2026 10:54:00 +0300 [thread overview]
Message-ID: <arzAGOKLOustEW7F@ashevche-desk.local> (raw)
In-Reply-To: <20260929083755.458238-7-inochiama@gmail.com>
On Tue, Sep 29, 2026 at 04:37:52PM +0800, Inochi Amaoto wrote:
> The PCIe controller on Spacemit K3 is almost a standard Synopsys
> DesignWare PCIe IP with extra link and reset control. Unlike
> the PCIe controller on K1, this controller supports external MSI
> interrupt controller and can use multiple PHYs at the same time.
>
> Add driver to support PCIe controller on Spacemit K3 PCIe.
...
> +static int k3_pcie_init(struct dw_pcie_rp *pp)
> +{
> + struct dw_pcie *pci = to_dw_pcie_from_pp(pp);
> + struct k1_pcie *k1 = to_k1_pcie(pci);
> + u32 reset_ctrl = k1->pmu_off + PCIE_CLK_RESET_CONTROL;
> + u32 val;
> + int ret;
> +
> + regmap_clear_bits(k1->pmu, reset_ctrl, LTSSM_EN);
> +
> + k1_pcie_toggle_soft_reset(k1);
> +
> + /* K3: Set IGNORE_PERSTN and drive PERSTN_OE high (assert reset) */
> + regmap_update_bits(k1->pmu, k1->pmu_off + PCIE_CONTROL_LOGIC,
> + PCIE_IGNORE_PERSTN | PCIE_PERSTN_OE | PCIE_PERSTN_OUT,
> + PCIE_IGNORE_PERSTN | PCIE_PERSTN_OE);
Would it make sense to define permutations
PCIE_IGNORE_PERSTN | PCIE_PERSTN_OE
for here...
> + ret = k1_pcie_enable_resources(k1);
> + if (ret)
> + goto failed_resources;
> +
> + regmap_set_bits(k1->pmu, reset_ctrl, PCIE_AUX_PWR_DET);
> + regmap_clear_bits(k1->pmu, reset_ctrl, APP_HOLD_PHY_RST);
> +
> + ret = phy_bulk_init(k1->phy_count, k1->phys);
> + if (ret)
> + goto failed_phy_init;
> +
> + ret = phy_bulk_power_on(k1->phy_count, k1->phys);
> + if (ret)
> + goto failed_phy_power_on;
> +
> + msleep(PCIE_T_PVPERL_MS);
> +
> + regmap_set_bits(k1->pmu, k1->pmu_off + PCIE_CONTROL_LOGIC,
> + PCIE_PERSTN_OUT | PCIE_PERSTN_OE);
...and
PCIE_PERSTN_OUT | PCIE_PERSTN_OE
for here and elsewhere?
> + val = dw_pcie_readl_dbi(pci, GEN3_EQ_CONTROL_OFF);
> + val = u32_replace_bits(val, BIT(7),
> + GEN3_EQ_CONTROL_OFF_PSET_REQ_VEC);
It's perfectly a single line. Check your editor settings (I believe I have
commented on a such in one of the previous rounds).
> + dw_pcie_writel_dbi(pci, GEN3_EQ_CONTROL_OFF, val);
> +
> + k1_pcie_set_device_id(k1);
> +
> + /* Finally, as a workaround, disable ASPM L1 */
> + k1_pcie_disable_aspm_l1(k1);
> +
> + return 0;
> +
> +failed_phy_power_on:
> + phy_bulk_exit(k1->phy_count, k1->phys);
> +failed_phy_init:
> + k1_pcie_disable_resources(k1);
> +failed_resources:
> + regmap_update_bits(k1->pmu, k1->pmu_off + PCIE_CONTROL_LOGIC,
> + PCIE_PERSTN_OUT | PCIE_PERSTN_OE,
> + PCIE_PERSTN_OE);
> +
> + return ret;
> +}
...
You checked everything but regmap IO. Why? Do you except it won't ever fail?
Perhaps to add a note about this (if not yet) to the cover letter?
--
With Best Regards,
Andy Shevchenko
_______________________________________________
linux-riscv mailing list
linux-riscv@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-riscv
next prev parent reply other threads:[~2026-09-30 7:54 UTC|newest]
Thread overview: 34+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-09-29 8:37 [PATCH v7 0/6] riscv: spacemit: Add PCIe RC controller support for K3 Inochi Amaoto
2026-09-29 8:37 ` Inochi Amaoto
2026-09-29 8:37 ` [PATCH v7 1/6] PCI: spacemit-k1: Add device data support Inochi Amaoto
2026-09-29 8:37 ` Inochi Amaoto
2026-09-29 8:41 ` sashiko-bot
2026-09-30 7:55 ` Andy Shevchenko
2026-09-30 7:55 ` Andy Shevchenko
2026-09-29 8:37 ` [PATCH v7 2/6] PCI: spacemit-k1: Add multiple PHY handles support Inochi Amaoto
2026-09-29 8:37 ` Inochi Amaoto
2026-09-29 8:47 ` sashiko-bot
2026-09-30 7:57 ` Andy Shevchenko
2026-09-30 7:57 ` Andy Shevchenko
2026-09-29 8:37 ` [PATCH v7 3/6] PCI: spacemit-k1: Add device id update helper Inochi Amaoto
2026-09-29 8:37 ` Inochi Amaoto
2026-09-29 8:42 ` sashiko-bot
2026-09-30 7:58 ` Andy Shevchenko
2026-09-30 7:58 ` Andy Shevchenko
2026-09-29 8:37 ` [PATCH v7 4/6] dt-bindings: PCI: snps,dw-pcie: Add msi-parent for MSI handle check Inochi Amaoto
2026-09-29 8:37 ` Inochi Amaoto
2026-09-29 8:42 ` sashiko-bot
2026-09-29 8:37 ` [PATCH v7 5/6] dt-bindings: PCI: spacemit: Introduce Spacemit K3 PCIe host controller Inochi Amaoto
2026-09-29 8:37 ` Inochi Amaoto
2026-09-29 8:47 ` sashiko-bot
2026-10-06 15:50 ` Rob Herring (Arm)
2026-10-06 15:50 ` Rob Herring (Arm)
2026-09-29 8:37 ` [PATCH v7 6/6] PCI: spacemit-k1: Add Spacemit K3 PCIe host controller support Inochi Amaoto
2026-09-29 8:37 ` Inochi Amaoto
2026-09-29 8:53 ` sashiko-bot
2026-09-30 7:54 ` Andy Shevchenko [this message]
2026-09-30 7:54 ` Andy Shevchenko
2026-09-30 9:44 ` Inochi Amaoto
2026-09-30 9:44 ` Inochi Amaoto
2026-09-29 17:00 ` [PATCH v7 0/6] riscv: spacemit: Add PCIe RC controller support for K3 Aurelien Jarno
2026-09-29 17:00 ` Aurelien Jarno
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=arzAGOKLOustEW7F@ashevche-desk.local \
--to=andriy.shevchenko@linux.intel.com \
--cc=Frank.Li@nxp.com \
--cc=alex@ghiti.fr \
--cc=aou@eecs.berkeley.edu \
--cc=arnd@arndb.de \
--cc=asrinivasan@oss.tenstorrent.com \
--cc=bhelgaas@google.com \
--cc=cassel@kernel.org \
--cc=christian.bruel@foss.st.com \
--cc=conor+dt@kernel.org \
--cc=devicetree@vger.kernel.org \
--cc=dlan@gentoo.org \
--cc=dlan@kernel.org \
--cc=elder@riscstar.com \
--cc=gustavo.pimentel@synopsys.com \
--cc=inochiama@gmail.com \
--cc=jingoohan1@gmail.com \
--cc=krzk+dt@kernel.org \
--cc=kwilczynski@kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-pci@vger.kernel.org \
--cc=linux-riscv@lists.infradead.org \
--cc=looong.bin@gmail.com \
--cc=lpieralisi@kernel.org \
--cc=mani@kernel.org \
--cc=marek.vasut+renesas@mailbox.org \
--cc=palmer@dabbelt.com \
--cc=pengpeng@iscas.ac.cn \
--cc=pjw@kernel.org \
--cc=randolph@andestech.com \
--cc=robh@kernel.org \
--cc=s-vadapalli@ti.com \
--cc=spacemit@lists.linux.dev \
--cc=u.kleine-koenig@baylibre.com \
--cc=vidyas@nvidia.com \
--cc=vincent.guittot@linaro.org \
--cc=zhangsenchuan@eswincomputing.com \
--cc=zhangxincheng@ultrarisc.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.