All of lore.kernel.org
 help / color / mirror / Atom feed
From: Bjorn Helgaas <helgaas@kernel.org>
To: Alex Elder <elder@riscstar.com>
Cc: lpieralisi@kernel.org, kwilczynski@kernel.org, mani@kernel.org,
	robh@kernel.org, bhelgaas@google.com, krzk+dt@kernel.org,
	conor+dt@kernel.org, vkoul@kernel.org, kishon@kernel.org,
	dlan@gentoo.org, paul.walmsley@sifive.com, palmer@dabbelt.com,
	aou@eecs.berkeley.edu, alex@ghiti.fr, p.zabel@pengutronix.de,
	tglx@linutronix.de, johan+linaro@kernel.org,
	thippeswamy.havalige@amd.com, namcao@linutronix.de,
	mayank.rana@oss.qualcomm.com, shradha.t@samsung.com,
	inochiama@gmail.com, quic_schintav@quicinc.com,
	fan.ni@samsung.com, devicetree@vger.kernel.org,
	linux-phy@lists.infradead.org, linux-pci@vger.kernel.org,
	spacemit@lists.linux.dev, linux-riscv@lists.infradead.org,
	linux-kernel@vger.kernel.org
Subject: Re: [PATCH 5/6] PCI: spacemit: introduce SpacemiT PCIe host driver
Date: Wed, 13 Aug 2025 16:22:19 -0500	[thread overview]
Message-ID: <20250813212219.GA294849@bhelgaas> (raw)
In-Reply-To: <20250813184701.2444372-6-elder@riscstar.com>

On Wed, Aug 13, 2025 at 01:46:59PM -0500, Alex Elder wrote:
> Introduce a driver for the PCIe root complex found in the SpacemiT
> K1 SoC.  The hardware is derived from the Synopsys DesignWare PCIe IP.
> The driver supports three PCIe ports that operate at PCIe v2 transfer
> rates (5 GT/sec).  The first port uses a combo PHY, which may be
> configured for use for USB 3 instead.

I assume "PCIe v2" means what most people call "PCIe gen2", but the
spec encourages avoidance "genX" because it's ambiguous.

> +config PCIE_K1
> +	bool "SpacemiT K1 host mode PCIe controller"

Style of nearby entries is:

  "SpacemiT K1 PCIe controller (host mode)"

Please alphabetize by the company name ("SpacemiT") in the menu entry.

> +#define K1_PCIE_VENDOR_ID	0x201f
> +#define K1_PCIE_DEVICE_ID	0x0001

I assume this (0x201f) has been reserved by the PCI-SIG?  I don't see
it at:

  https://pcisig.com/membership/member-companies?combine=0x201f

Possibly rename this to PCI_VENDOR_ID_K1 (or maybe
PCI_VENDOR_ID_SPACEMIT?) to match the usual format in
include/linux/pci_ids.h, since it seems likely to end up there
eventually.

> +#define PCIE_RC_PERST			BIT(12)	/* 0: PERST# high; 1: low */

Maybe avoid confusion by describing as "1: assert PERST#" or similar?

> +	/* Wait the PCIe-mandated 100 msec before deasserting PERST# */
> +	mdelay(100);

I think this is PCIE_T_PVPERL_MS.  Comment is superfluous then.

> +static int k1_pcie_probe(struct platform_device *pdev)
> +{
> +	struct device *dev = &pdev->dev;
> +	struct dw_pcie_rp *pp;
> +	struct dw_pcie *pci;
> +	struct k1_pcie *k1;
> +	int ret;
> +
> +	k1 = devm_kzalloc(dev, sizeof(*k1), GFP_KERNEL);
> +	if (!k1)
> +		return -ENOMEM;
> +	dev_set_drvdata(dev, k1);

Most neighboring drivers use platform_set_drvdata().  Personally, I
would set drvdata after initializing k1 because I don't like to
advertise pointers to uninitialized things.

> +static void k1_pcie_remove(struct platform_device *pdev)
> +{
> +	struct k1_pcie *k1 = dev_get_drvdata(&pdev->dev);

Neighbors use platform_get_drvdata().

> +	struct dw_pcie_rp *pp = &k1->pci.pp;
> +
> +	dw_pcie_host_deinit(pp);
> +}

-- 
linux-phy mailing list
linux-phy@lists.infradead.org
https://lists.infradead.org/mailman/listinfo/linux-phy

WARNING: multiple messages have this Message-ID (diff)
From: Bjorn Helgaas <helgaas@kernel.org>
To: Alex Elder <elder@riscstar.com>
Cc: lpieralisi@kernel.org, kwilczynski@kernel.org, mani@kernel.org,
	robh@kernel.org, bhelgaas@google.com, krzk+dt@kernel.org,
	conor+dt@kernel.org, vkoul@kernel.org, kishon@kernel.org,
	dlan@gentoo.org, paul.walmsley@sifive.com, palmer@dabbelt.com,
	aou@eecs.berkeley.edu, alex@ghiti.fr, p.zabel@pengutronix.de,
	tglx@linutronix.de, johan+linaro@kernel.org,
	thippeswamy.havalige@amd.com, namcao@linutronix.de,
	mayank.rana@oss.qualcomm.com, shradha.t@samsung.com,
	inochiama@gmail.com, quic_schintav@quicinc.com,
	fan.ni@samsung.com, devicetree@vger.kernel.org,
	linux-phy@lists.infradead.org, linux-pci@vger.kernel.org,
	spacemit@lists.linux.dev, linux-riscv@lists.infradead.org,
	linux-kernel@vger.kernel.org
Subject: Re: [PATCH 5/6] PCI: spacemit: introduce SpacemiT PCIe host driver
Date: Wed, 13 Aug 2025 16:22:19 -0500	[thread overview]
Message-ID: <20250813212219.GA294849@bhelgaas> (raw)
In-Reply-To: <20250813184701.2444372-6-elder@riscstar.com>

On Wed, Aug 13, 2025 at 01:46:59PM -0500, Alex Elder wrote:
> Introduce a driver for the PCIe root complex found in the SpacemiT
> K1 SoC.  The hardware is derived from the Synopsys DesignWare PCIe IP.
> The driver supports three PCIe ports that operate at PCIe v2 transfer
> rates (5 GT/sec).  The first port uses a combo PHY, which may be
> configured for use for USB 3 instead.

I assume "PCIe v2" means what most people call "PCIe gen2", but the
spec encourages avoidance "genX" because it's ambiguous.

> +config PCIE_K1
> +	bool "SpacemiT K1 host mode PCIe controller"

Style of nearby entries is:

  "SpacemiT K1 PCIe controller (host mode)"

Please alphabetize by the company name ("SpacemiT") in the menu entry.

> +#define K1_PCIE_VENDOR_ID	0x201f
> +#define K1_PCIE_DEVICE_ID	0x0001

I assume this (0x201f) has been reserved by the PCI-SIG?  I don't see
it at:

  https://pcisig.com/membership/member-companies?combine=0x201f

Possibly rename this to PCI_VENDOR_ID_K1 (or maybe
PCI_VENDOR_ID_SPACEMIT?) to match the usual format in
include/linux/pci_ids.h, since it seems likely to end up there
eventually.

> +#define PCIE_RC_PERST			BIT(12)	/* 0: PERST# high; 1: low */

Maybe avoid confusion by describing as "1: assert PERST#" or similar?

> +	/* Wait the PCIe-mandated 100 msec before deasserting PERST# */
> +	mdelay(100);

I think this is PCIE_T_PVPERL_MS.  Comment is superfluous then.

> +static int k1_pcie_probe(struct platform_device *pdev)
> +{
> +	struct device *dev = &pdev->dev;
> +	struct dw_pcie_rp *pp;
> +	struct dw_pcie *pci;
> +	struct k1_pcie *k1;
> +	int ret;
> +
> +	k1 = devm_kzalloc(dev, sizeof(*k1), GFP_KERNEL);
> +	if (!k1)
> +		return -ENOMEM;
> +	dev_set_drvdata(dev, k1);

Most neighboring drivers use platform_set_drvdata().  Personally, I
would set drvdata after initializing k1 because I don't like to
advertise pointers to uninitialized things.

> +static void k1_pcie_remove(struct platform_device *pdev)
> +{
> +	struct k1_pcie *k1 = dev_get_drvdata(&pdev->dev);

Neighbors use platform_get_drvdata().

> +	struct dw_pcie_rp *pp = &k1->pci.pp;
> +
> +	dw_pcie_host_deinit(pp);
> +}

WARNING: multiple messages have this Message-ID (diff)
From: Bjorn Helgaas <helgaas@kernel.org>
To: Alex Elder <elder@riscstar.com>
Cc: lpieralisi@kernel.org, kwilczynski@kernel.org, mani@kernel.org,
	robh@kernel.org, bhelgaas@google.com, krzk+dt@kernel.org,
	conor+dt@kernel.org, vkoul@kernel.org, kishon@kernel.org,
	dlan@gentoo.org, paul.walmsley@sifive.com, palmer@dabbelt.com,
	aou@eecs.berkeley.edu, alex@ghiti.fr, p.zabel@pengutronix.de,
	tglx@linutronix.de, johan+linaro@kernel.org,
	thippeswamy.havalige@amd.com, namcao@linutronix.de,
	mayank.rana@oss.qualcomm.com, shradha.t@samsung.com,
	inochiama@gmail.com, quic_schintav@quicinc.com,
	fan.ni@samsung.com, devicetree@vger.kernel.org,
	linux-phy@lists.infradead.org, linux-pci@vger.kernel.org,
	spacemit@lists.linux.dev, linux-riscv@lists.infradead.org,
	linux-kernel@vger.kernel.org
Subject: Re: [PATCH 5/6] PCI: spacemit: introduce SpacemiT PCIe host driver
Date: Wed, 13 Aug 2025 16:22:19 -0500	[thread overview]
Message-ID: <20250813212219.GA294849@bhelgaas> (raw)
In-Reply-To: <20250813184701.2444372-6-elder@riscstar.com>

On Wed, Aug 13, 2025 at 01:46:59PM -0500, Alex Elder wrote:
> Introduce a driver for the PCIe root complex found in the SpacemiT
> K1 SoC.  The hardware is derived from the Synopsys DesignWare PCIe IP.
> The driver supports three PCIe ports that operate at PCIe v2 transfer
> rates (5 GT/sec).  The first port uses a combo PHY, which may be
> configured for use for USB 3 instead.

I assume "PCIe v2" means what most people call "PCIe gen2", but the
spec encourages avoidance "genX" because it's ambiguous.

> +config PCIE_K1
> +	bool "SpacemiT K1 host mode PCIe controller"

Style of nearby entries is:

  "SpacemiT K1 PCIe controller (host mode)"

Please alphabetize by the company name ("SpacemiT") in the menu entry.

> +#define K1_PCIE_VENDOR_ID	0x201f
> +#define K1_PCIE_DEVICE_ID	0x0001

I assume this (0x201f) has been reserved by the PCI-SIG?  I don't see
it at:

  https://pcisig.com/membership/member-companies?combine=0x201f

Possibly rename this to PCI_VENDOR_ID_K1 (or maybe
PCI_VENDOR_ID_SPACEMIT?) to match the usual format in
include/linux/pci_ids.h, since it seems likely to end up there
eventually.

> +#define PCIE_RC_PERST			BIT(12)	/* 0: PERST# high; 1: low */

Maybe avoid confusion by describing as "1: assert PERST#" or similar?

> +	/* Wait the PCIe-mandated 100 msec before deasserting PERST# */
> +	mdelay(100);

I think this is PCIE_T_PVPERL_MS.  Comment is superfluous then.

> +static int k1_pcie_probe(struct platform_device *pdev)
> +{
> +	struct device *dev = &pdev->dev;
> +	struct dw_pcie_rp *pp;
> +	struct dw_pcie *pci;
> +	struct k1_pcie *k1;
> +	int ret;
> +
> +	k1 = devm_kzalloc(dev, sizeof(*k1), GFP_KERNEL);
> +	if (!k1)
> +		return -ENOMEM;
> +	dev_set_drvdata(dev, k1);

Most neighboring drivers use platform_set_drvdata().  Personally, I
would set drvdata after initializing k1 because I don't like to
advertise pointers to uninitialized things.

> +static void k1_pcie_remove(struct platform_device *pdev)
> +{
> +	struct k1_pcie *k1 = dev_get_drvdata(&pdev->dev);

Neighbors use platform_get_drvdata().

> +	struct dw_pcie_rp *pp = &k1->pci.pp;
> +
> +	dw_pcie_host_deinit(pp);
> +}

_______________________________________________
linux-riscv mailing list
linux-riscv@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-riscv

  reply	other threads:[~2025-08-13 21:24 UTC|newest]

Thread overview: 93+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2025-08-13 18:46 [PATCH 0/6] Introduce SpacemiT K1 PCIe phy and host controller Alex Elder
2025-08-13 18:46 ` Alex Elder
2025-08-13 18:46 ` Alex Elder
2025-08-13 18:46 ` [PATCH 1/6] dt-bindings: phy: spacemit: add SpacemiT PCIe/combo PHY Alex Elder
2025-08-13 18:46   ` Alex Elder
2025-08-13 18:46   ` Alex Elder
2025-08-14  2:52   ` Yao Zi
2025-08-14  2:52     ` Yao Zi
2025-08-14  2:52     ` Yao Zi
2025-08-14 12:30     ` Alex Elder
2025-08-14 12:30       ` Alex Elder
2025-08-14 12:30       ` Alex Elder
2025-08-14  6:11   ` Krzysztof Kozlowski
2025-08-14  6:11     ` Krzysztof Kozlowski
2025-08-14  6:11     ` Krzysztof Kozlowski
2025-08-14 11:59     ` Alex Elder
2025-08-14 11:59       ` Alex Elder
2025-08-14 11:59       ` Alex Elder
2025-08-14 20:51   ` Rob Herring
2025-08-14 20:51     ` Rob Herring
2025-08-14 20:51     ` Rob Herring
2025-08-14 21:48     ` Alex Elder
2025-08-14 21:48       ` Alex Elder
2025-08-14 21:48       ` Alex Elder
2025-08-13 18:46 ` [PATCH 2/6] dt-bindings: phy: spacemit: introduce PCIe PHY Alex Elder
2025-08-13 18:46   ` Alex Elder
2025-08-13 18:46   ` Alex Elder
2025-08-14  6:17   ` Krzysztof Kozlowski
2025-08-14  6:17     ` Krzysztof Kozlowski
2025-08-14  6:17     ` Krzysztof Kozlowski
2025-08-13 18:46 ` [PATCH 3/6] dt-bindings: phy: spacemit: introduce PCIe root complex Alex Elder
2025-08-13 18:46   ` Alex Elder
2025-08-13 18:46   ` Alex Elder
2025-08-13 20:49   ` Rob Herring (Arm)
2025-08-13 20:49     ` Rob Herring (Arm)
2025-08-13 20:49     ` Rob Herring (Arm)
2025-08-13 21:21     ` Alex Elder
2025-08-13 21:21       ` Alex Elder
2025-08-13 21:21       ` Alex Elder
2025-09-15  8:14   ` Manivannan Sadhasivam
2025-09-15  8:14     ` Manivannan Sadhasivam
2025-09-15  8:14     ` Manivannan Sadhasivam
2025-09-19 20:14     ` Alex Elder
2025-09-19 20:14       ` Alex Elder
2025-09-19 20:14       ` Alex Elder
2025-09-20  5:55       ` Manivannan Sadhasivam
2025-09-20  5:55         ` Manivannan Sadhasivam
2025-09-20  5:55         ` Manivannan Sadhasivam
2025-10-01  2:40         ` Alex Elder
2025-10-01  2:40           ` Alex Elder
2025-10-01  2:40           ` Alex Elder
2025-08-13 18:46 ` [PATCH 4/6] phy: spacemit: introduce PCIe/combo PHY Alex Elder
2025-08-13 18:46   ` Alex Elder
2025-08-13 18:46   ` Alex Elder
2025-08-13 23:42   ` Inochi Amaoto
2025-08-13 23:42     ` Inochi Amaoto
2025-08-13 23:42     ` Inochi Amaoto
2025-08-14 12:15     ` Alex Elder
2025-08-14 12:15       ` Alex Elder
2025-08-14 12:15       ` Alex Elder
2025-08-14 22:49       ` Inochi Amaoto
2025-08-14 22:49         ` Inochi Amaoto
2025-08-14 22:49         ` Inochi Amaoto
2025-08-14 23:57       ` Yixun Lan
2025-08-14 23:57         ` Yixun Lan
2025-08-14 23:57         ` Yixun Lan
2025-08-13 18:46 ` [PATCH 5/6] PCI: spacemit: introduce SpacemiT PCIe host driver Alex Elder
2025-08-13 18:46   ` Alex Elder
2025-08-13 18:46   ` Alex Elder
2025-08-13 21:22   ` Bjorn Helgaas [this message]
2025-08-13 21:22     ` Bjorn Helgaas
2025-08-13 21:22     ` Bjorn Helgaas
2025-08-13 21:27     ` Alex Elder
2025-08-13 21:27       ` Alex Elder
2025-08-13 21:27       ` Alex Elder
2025-09-19 18:06       ` Alex Elder
2025-09-19 18:06         ` Alex Elder
2025-09-19 18:06         ` Alex Elder
2025-09-15  8:09   ` Manivannan Sadhasivam
2025-09-15  8:09     ` Manivannan Sadhasivam
2025-09-15  8:09     ` Manivannan Sadhasivam
2025-09-19 22:10     ` Alex Elder
2025-09-19 22:10       ` Alex Elder
2025-09-19 22:10       ` Alex Elder
2025-09-20  5:33       ` Manivannan Sadhasivam
2025-09-20  5:33         ` Manivannan Sadhasivam
2025-09-20  5:33         ` Manivannan Sadhasivam
2025-10-01  2:40       ` Alex Elder
2025-10-01  2:40         ` Alex Elder
2025-10-01  2:40         ` Alex Elder
2025-08-13 18:47 ` [PATCH 6/6] riscv: dts: spacemit: PCIe and PHY-related updates Alex Elder
2025-08-13 18:47   ` Alex Elder
2025-08-13 18:47   ` Alex Elder

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=20250813212219.GA294849@bhelgaas \
    --to=helgaas@kernel.org \
    --cc=alex@ghiti.fr \
    --cc=aou@eecs.berkeley.edu \
    --cc=bhelgaas@google.com \
    --cc=conor+dt@kernel.org \
    --cc=devicetree@vger.kernel.org \
    --cc=dlan@gentoo.org \
    --cc=elder@riscstar.com \
    --cc=fan.ni@samsung.com \
    --cc=inochiama@gmail.com \
    --cc=johan+linaro@kernel.org \
    --cc=kishon@kernel.org \
    --cc=krzk+dt@kernel.org \
    --cc=kwilczynski@kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-pci@vger.kernel.org \
    --cc=linux-phy@lists.infradead.org \
    --cc=linux-riscv@lists.infradead.org \
    --cc=lpieralisi@kernel.org \
    --cc=mani@kernel.org \
    --cc=mayank.rana@oss.qualcomm.com \
    --cc=namcao@linutronix.de \
    --cc=p.zabel@pengutronix.de \
    --cc=palmer@dabbelt.com \
    --cc=paul.walmsley@sifive.com \
    --cc=quic_schintav@quicinc.com \
    --cc=robh@kernel.org \
    --cc=shradha.t@samsung.com \
    --cc=spacemit@lists.linux.dev \
    --cc=tglx@linutronix.de \
    --cc=thippeswamy.havalige@amd.com \
    --cc=vkoul@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.