From: YanTeng Si <si.yanteng@linux.dev>
To: Serge Semin <fancer.lancer@gmail.com>,
Yanteng Si <siyanteng@loongson.cn>
Cc: andrew@lunn.ch, hkallweit1@gmail.com, peppe.cavallaro@st.com,
alexandre.torgue@foss.st.com, joabreu@synopsys.com,
diasyzhang@tencent.com, Jose.Abreu@synopsys.com,
chenhuacai@kernel.org, linux@armlinux.org.uk,
guyinggang@loongson.cn, netdev@vger.kernel.org,
chris.chenfeiyang@gmail.com, Huacai Chen <chenhuacai@loongson.cn>
Subject: Re: [PATCH net-next v16 11/14] net: stmmac: dwmac-loongson: Add DT-less GMAC PCI-device support
Date: Wed, 7 Aug 2024 15:19:30 +0800 [thread overview]
Message-ID: <0de379e4-7a7b-45cb-9f6c-8f404fc79a06@linux.dev> (raw)
In-Reply-To: <6tr4gaybcurhdgoyhbm5xbq46l6gbci2ytbzogu37aln4kivmq@kwm6m6b4bvzs>
在 2024/8/7 3:10, Serge Semin 写道:
> On Tue, Aug 06, 2024 at 06:59:44PM +0800, Yanteng Si wrote:
>> The Loongson GMAC driver currently supports the network controllers
>> installed on the LS2K1000 SoC and LS7A1000 chipset, for which the GMAC
>> devices are required to be defined in the platform device tree source.
>> But Loongson machines may have UEFI (implies ACPI) or PMON/UBOOT
>> (implies FDT) as the system bootloaders. In order to have both system
>> configurations support let's extend the driver functionality with the
>> case of having the Loongson GMAC probed on the PCI bus with no device
>> tree node defined for it. That requires to make the device DT-node
>> optional, to rely on the IRQ line detected by the PCI core and to
>> have the MDIO bus ID calculated using the PCIe Domain+BDF numbers.
>>
>> In order to have the device probe() and remove() methods less
>> complicated let's move the DT- and ACPI-specific code to the
>> respective sub-functions.
>>
>> Signed-off-by: Feiyang Chen <chenfeiyang@loongson.cn>
>> Signed-off-by: Yinggang Gu <guyinggang@loongson.cn>
>> Acked-by: Huacai Chen <chenhuacai@loongson.cn>
>> Signed-off-by: Yanteng Si <siyanteng@loongson.cn>
>> ---
>> .../ethernet/stmicro/stmmac/dwmac-loongson.c | 163 +++++++++++-------
>> 1 file changed, 100 insertions(+), 63 deletions(-)
>>
>> diff --git a/drivers/net/ethernet/stmicro/stmmac/dwmac-loongson.c b/drivers/net/ethernet/stmicro/stmmac/dwmac-loongson.c
>> index 10b49bea8e3c..6ba4674bc076 100644
>> --- a/drivers/net/ethernet/stmicro/stmmac/dwmac-loongson.c
>> +++ b/drivers/net/ethernet/stmicro/stmmac/dwmac-loongson.c
>> @@ -12,11 +12,15 @@
>> #define PCI_DEVICE_ID_LOONGSON_GMAC 0x7a03
>>
>> struct stmmac_pci_info {
>> - int (*setup)(struct plat_stmmacenet_data *plat);
>> + int (*setup)(struct pci_dev *pdev, struct plat_stmmacenet_data *plat);
>> };
>>
>> -static void loongson_default_data(struct plat_stmmacenet_data *plat)
>> +static void loongson_default_data(struct pci_dev *pdev,
>> + struct plat_stmmacenet_data *plat)
>> {
>> + /* Get bus_id, this can be overwritten later */
>> + plat->bus_id = pci_dev_id(pdev);
>> +
>> plat->clk_csr = 2; /* clk_csr_i = 20-35MHz & MDC = clk_csr_i/16 */
>> plat->has_gmac = 1;
>> plat->force_sf_dma_mode = 1;
>> @@ -49,9 +53,10 @@ static void loongson_default_data(struct plat_stmmacenet_data *plat)
>> plat->dma_cfg->pblx8 = true;
>> }
>>
>> -static int loongson_gmac_data(struct plat_stmmacenet_data *plat)
>> +static int loongson_gmac_data(struct pci_dev *pdev,
>> + struct plat_stmmacenet_data *plat)
>> {
>> - loongson_default_data(plat);
>> + loongson_default_data(pdev, plat);
>>
>> plat->tx_queues_to_use = 1;
>> plat->rx_queues_to_use = 1;
>> @@ -65,20 +70,83 @@ static struct stmmac_pci_info loongson_gmac_pci_info = {
>> .setup = loongson_gmac_data,
>> };
>>
>> +static int loongson_dwmac_dt_config(struct pci_dev *pdev,
>> + struct plat_stmmacenet_data *plat,
>> + struct stmmac_resources *res)
>> +{
>> + struct device_node *np = dev_of_node(&pdev->dev);
>> + int ret;
>> +
>> + plat->mdio_node = of_get_child_by_name(np, "mdio");
>> + if (plat->mdio_node) {
>> + dev_info(&pdev->dev, "Found MDIO subnode\n");
>> + plat->mdio_bus_data->needs_reset = true;
>> + }
>> +
>> + ret = of_alias_get_id(np, "ethernet");
>> + if (ret >= 0)
>> + plat->bus_id = ret;
>> +
>> + res->irq = of_irq_get_byname(np, "macirq");
>> + if (res->irq < 0) {
>> + dev_err(&pdev->dev, "IRQ macirq not found\n");
>> + ret = -ENODEV;
>> + goto err_put_node;
>> + }
>> +
>> + res->wol_irq = of_irq_get_byname(np, "eth_wake_irq");
>> + if (res->wol_irq < 0) {
>> + dev_info(&pdev->dev,
>> + "IRQ eth_wake_irq not found, using macirq\n");
>> + res->wol_irq = res->irq;
>> + }
>> +
>> + res->lpi_irq = of_irq_get_byname(np, "eth_lpi");
>> + if (res->lpi_irq < 0) {
>> + dev_err(&pdev->dev, "IRQ eth_lpi not found\n");
>> + ret = -ENODEV;
>> + goto err_put_node;
>> + }
>> +
>> + ret = device_get_phy_mode(&pdev->dev);
>> + if (ret < 0) {
>> + dev_err(&pdev->dev, "phy_mode not found\n");
>> + ret = -ENODEV;
>> + goto err_put_node;
>> + }
>> +
>> + plat->phy_interface = ret;
> +
> + return 0;
>
> Arggg. Alas I missed this part in v15.(
>
> The rest of changes looks good. Thanks!
OK, Thanks!
Thanks,
Yanteng
>
> -Serge(y)
>
>> +
>> +err_put_node:
>> + of_node_put(plat->mdio_node);
>> +
>> + return ret;
>> +}
>> +
>>
>> ...
next prev parent reply other threads:[~2024-08-07 7:19 UTC|newest]
Thread overview: 21+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-08-06 10:57 [PATCH net-next v16 00/14] stmmac: Add Loongson platform support Yanteng Si
2024-08-06 10:57 ` [PATCH net-next v16 01/14] net: stmmac: Move the atds flag to the stmmac_dma_cfg structure Yanteng Si
2024-08-06 10:57 ` [PATCH net-next v16 02/14] net: stmmac: Add multi-channel support Yanteng Si
2024-08-06 10:57 ` [PATCH net-next v16 03/14] net: stmmac: Export dwmac1000_dma_ops Yanteng Si
2024-08-06 10:58 ` [PATCH net-next v16 04/14] net: stmmac: dwmac-loongson: Drop duplicated hash-based filter size init Yanteng Si
2024-08-06 10:58 ` [PATCH net-next v16 05/14] net: stmmac: dwmac-loongson: Drop pci_enable/disable_msi calls Yanteng Si
2024-08-06 10:58 ` [PATCH net-next v16 06/14] net: stmmac: dwmac-loongson: Use PCI_DEVICE_DATA() macro for device identification Yanteng Si
2024-08-06 10:58 ` [PATCH net-next v16 07/14] net: stmmac: dwmac-loongson: Detach GMAC-specific platform data init Yanteng Si
2024-08-06 10:59 ` [PATCH net-next v16 08/14] net: stmmac: dwmac-loongson: Init ref and PTP clocks rate Yanteng Si
2024-08-06 10:59 ` [PATCH net-next v16 09/14] net: stmmac: dwmac-loongson: Add phy_interface for Loongson GMAC Yanteng Si
2024-08-06 10:59 ` [PATCH net-next v16 10/14] net: stmmac: dwmac-loongson: Introduce PCI device info data Yanteng Si
2024-08-06 10:59 ` [PATCH net-next v16 11/14] net: stmmac: dwmac-loongson: Add DT-less GMAC PCI-device support Yanteng Si
2024-08-06 19:10 ` Serge Semin
2024-08-07 7:19 ` YanTeng Si [this message]
2024-08-06 11:00 ` [PATCH net-next v16 12/14] net: stmmac: dwmac-loongson: Add Loongson Multi-channels GMAC support Yanteng Si
2024-08-06 15:17 ` Simon Horman
2024-08-07 7:18 ` YanTeng Si
2024-08-06 19:17 ` Serge Semin
2024-08-07 7:15 ` YanTeng Si
2024-08-06 11:00 ` [PATCH net-next v16 13/14] net: stmmac: dwmac-loongson: Add Loongson GNET support Yanteng Si
2024-08-06 11:00 ` [PATCH net-next v16 14/14] net: stmmac: dwmac-loongson: Add loongson module author Yanteng Si
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=0de379e4-7a7b-45cb-9f6c-8f404fc79a06@linux.dev \
--to=si.yanteng@linux.dev \
--cc=Jose.Abreu@synopsys.com \
--cc=alexandre.torgue@foss.st.com \
--cc=andrew@lunn.ch \
--cc=chenhuacai@kernel.org \
--cc=chenhuacai@loongson.cn \
--cc=chris.chenfeiyang@gmail.com \
--cc=diasyzhang@tencent.com \
--cc=fancer.lancer@gmail.com \
--cc=guyinggang@loongson.cn \
--cc=hkallweit1@gmail.com \
--cc=joabreu@synopsys.com \
--cc=linux@armlinux.org.uk \
--cc=netdev@vger.kernel.org \
--cc=peppe.cavallaro@st.com \
--cc=siyanteng@loongson.cn \
/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.