[PATCH v4 6/6] PCI: spacemit-k1: Add Spacemit K3 PCIe host controller support
Andy Shevchenko
andriy.shevchenko at linux.intel.com
Thu Jul 9 00:21:18 PDT 2026
On Thu, Jul 09, 2026 at 12:00:26PM +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.
...
> + /* K3: Set IGNORE_PERSTN and drive PERSTN_OE high (assert reset) */
> + regmap_set_bits(k1->pmu, k1->pmu_off + PCIE_CONTROL_LOGIC,
> + PCIE_IGNORE_PERSTN | PCIE_PERSTN_OE | PCIE_PERSTN_OUT);
> + usleep_range(1000, 2000);
fsleep(1 * USEC_PER_MSEC)
> + regmap_clear_bits(k1->pmu, k1->pmu_off + PCIE_CONTROL_LOGIC, PCIE_PERSTN_OUT);
> +
> + msleep(PCIE_T_PVPERL_MS);
If PCIE_T_PVPERL_MS is too small, msleep() maybe not a good choice,
perhaps
fsleep(PCIE_T_PVPERL_MS * USEC_PER_MSEC)
...
> + val = u32_replace_bits(val, BIT(7),
> + GEN3_EQ_CONTROL_OFF_PSET_REQ_VEC);
It's perfectly a single line.
...
> static const struct of_device_id k1_pcie_of_match_table[] = {
> { .compatible = "spacemit,k1-pcie", .data = &k1_pcie_device_data},
> + { .compatible = "spacemit,k3-pcie", .data = &k3_pcie_device_data},
Missed space.
> { }
> };
I don't see (and haven't checked) the context, do you have
MODULE_DEVICE_TABLE() for this?
--
With Best Regards,
Andy Shevchenko
More information about the linux-riscv
mailing list