diff mbox series

[12/13] net: fsl_enetc: add i.MX95 EMDIO support

Message ID 20250116040449.306098-12-marex@denx.de
State Accepted
Commit 7dfcd0ee384eae41ec07e18d695a04d91f416548
Delegated to: Fabio Estevam
Headers show
Series [01/13] net: fsl_enetc: Introduce enetc_is_ls1028a() | expand

Commit Message

Marek Vasut Jan. 16, 2025, 4:03 a.m. UTC
From: Alice Guo <alice.guo@nxp.com>

The verdor ID and device ID of i.MX95 EMDIO are different from LS1028A
EMDIO, so add new vendor ID and device ID to pci_device_id table to
support i.MX95 EMDIO.

Signed-off-by: Alice Guo <alice.guo@nxp.com>
Signed-off-by: Marek Vasut <marex@denx.de> # Clean up
Signed-off-by: Ye Li <ye.li@nxp.com>
---
Cc: Alice Guo <alice.guo@nxp.com>
Cc: Ilias Apalodimas <ilias.apalodimas@linaro.org>
Cc: Jerome Forissier <jerome.forissier@linaro.org>
Cc: Joe Hershberger <joe.hershberger@ni.com>
Cc: Markus Gothe <markus.gothe@genexis.eu>
Cc: Peng Fan <peng.fan@nxp.com>
Cc: Ramon Fried <rfried.dev@gmail.com>
Cc: Robert Marko <robert.marko@sartura.hr>
Cc: Romain Naour <romain.naour@smile.fr>
Cc: Simon Glass <sjg@chromium.org>
Cc: Tim Harvey <tharvey@gateworks.com>
Cc: Tom Rini <trini@konsulko.com>
Cc: Ye Li <ye.li@nxp.com>
Cc: u-boot@lists.denx.de
---
 drivers/net/fsl_enetc.h      |  1 +
 drivers/net/fsl_enetc_mdio.c | 10 ++++++++--
 2 files changed, 9 insertions(+), 2 deletions(-)
diff mbox series

Patch

diff --git a/drivers/net/fsl_enetc.h b/drivers/net/fsl_enetc.h
index b815474c246..82c2476e1fa 100644
--- a/drivers/net/fsl_enetc.h
+++ b/drivers/net/fsl_enetc.h
@@ -13,6 +13,7 @@ 
 /* PCI function IDs */
 #define PCI_DEVICE_ID_ENETC_ETH		0xE100
 #define PCI_DEVICE_ID_ENETC_MDIO	0xEE01
+#define PCI_DEVICE_ID_ENETC4_EMDIO	0xEE00
 
 /* ENETC Ethernet controller registers */
 /* Station interface register offsets */
diff --git a/drivers/net/fsl_enetc_mdio.c b/drivers/net/fsl_enetc_mdio.c
index 6a628e78883..c1d491f2c5a 100644
--- a/drivers/net/fsl_enetc_mdio.c
+++ b/drivers/net/fsl_enetc_mdio.c
@@ -1,7 +1,7 @@ 
 // SPDX-License-Identifier: GPL-2.0+
 /*
  * ENETC ethernet controller driver
- * Copyright 2019 NXP
+ * Copyright 2019-2025 NXP
  */
 
 #include <dm.h>
@@ -132,7 +132,9 @@  static int enetc_mdio_bind(struct udevice *dev)
 
 static int enetc_mdio_probe(struct udevice *dev)
 {
+	struct pci_child_plat *pplat = dev_get_parent_plat(dev);
 	struct enetc_mdio_priv *priv = dev_get_priv(dev);
+	u16 cmd = PCI_COMMAND_MEMORY;
 
 	priv->regs_base = dm_pci_map_bar(dev, PCI_BASE_ADDRESS_0, 0, 0, PCI_REGION_TYPE, 0);
 	if (!priv->regs_base) {
@@ -142,7 +144,10 @@  static int enetc_mdio_probe(struct udevice *dev)
 
 	priv->regs_base += ENETC_MDIO_BASE;
 
-	dm_pci_clrset_config16(dev, PCI_COMMAND, 0, PCI_COMMAND_MEMORY);
+	if (pplat->vendor == PCI_VENDOR_ID_PHILIPS)	/* i.MX95 */
+		cmd |= PCI_COMMAND_MASTER;
+
+	dm_pci_clrset_config16(dev, PCI_COMMAND, 0, cmd);
 
 	return 0;
 }
@@ -158,6 +163,7 @@  U_BOOT_DRIVER(enetc_mdio) = {
 
 static struct pci_device_id enetc_mdio_ids[] = {
 	{ PCI_DEVICE(PCI_VENDOR_ID_FREESCALE, PCI_DEVICE_ID_ENETC_MDIO) },
+	{ PCI_DEVICE(PCI_VENDOR_ID_PHILIPS, PCI_DEVICE_ID_ENETC4_EMDIO) },
 	{ }
 };