[PATCH 0/2] net: ti: am65-cpsw-nuss: Drop custom property "mac_efuse"

Hi,
We need to track the Device tree in Linux. The approved property for MAC address EFUSE is "ti,syscon-efuse".
Use that and drop custom property "mac_efuse".
cheers, -roger
Roger Quadros (2): net: ti: am65-cpsw-nuss: Use approved property to get efuse address arm: dts: k3-am625-sk-u-boot.dtsi: drop mac_efuse
arch/arm/dts/k3-am625-sk-u-boot.dtsi | 3 -- configs/am62x_evm_a53_defconfig | 1 + drivers/net/ti/am65-cpsw-nuss.c | 52 +++++++++++++++++++--------- 3 files changed, 37 insertions(+), 19 deletions(-)

The approved DT property for MAC efuse (ROM) address is "ti,syscon-efuse".
Use that and drop custom property "mac_efuse".
Signed-off-by: Roger Quadros rogerq@kernel.org --- configs/am62x_evm_a53_defconfig | 1 + drivers/net/ti/am65-cpsw-nuss.c | 52 +++++++++++++++++++++++---------- 2 files changed, 37 insertions(+), 16 deletions(-)
diff --git a/configs/am62x_evm_a53_defconfig b/configs/am62x_evm_a53_defconfig index 7c3bc184cf..6757fe662d 100644 --- a/configs/am62x_evm_a53_defconfig +++ b/configs/am62x_evm_a53_defconfig @@ -102,3 +102,4 @@ CONFIG_SYSRESET=y CONFIG_SPL_SYSRESET=y CONFIG_SYSRESET_TI_SCI=y CONFIG_FS_FAT_MAX_CLUSTSIZE=16384 +CONFIG_SYSCON=y diff --git a/drivers/net/ti/am65-cpsw-nuss.c b/drivers/net/ti/am65-cpsw-nuss.c index 523a4c9f91..ee46676ec8 100644 --- a/drivers/net/ti/am65-cpsw-nuss.c +++ b/drivers/net/ti/am65-cpsw-nuss.c @@ -21,7 +21,9 @@ #include <net.h> #include <phy.h> #include <power-domain.h> +#include <regmap.h> #include <soc.h> +#include <syscon.h> #include <linux/bitops.h> #include <linux/soc/ti/ti-udma.h>
@@ -101,7 +103,6 @@ struct am65_cpsw_common { fdt_addr_t mdio_base; fdt_addr_t ale_base; fdt_addr_t gmii_sel; - fdt_addr_t mac_efuse;
struct clk fclk; struct power_domain pwrdmn; @@ -516,24 +517,45 @@ static void am65_cpsw_stop(struct udevice *dev) common->started = false; }
+static int am65_cpsw_am654_get_efuse_macid(struct udevice *dev, + int slave, u8 *mac_addr) +{ + u32 mac_lo, mac_hi, offset; + struct regmap *syscon; + int ret; + + syscon = syscon_regmap_lookup_by_phandle(dev, "ti,syscon-efuse"); + if (IS_ERR(syscon)) { + if (PTR_ERR(syscon) == -ENODEV) + return 0; + return PTR_ERR(syscon); + } + + ret = dev_read_u32_index(dev, "ti,syscon-efuse", 1, &offset); + if (ret) + return ret; + + regmap_read(syscon, offset, &mac_lo); + regmap_read(syscon, offset + 4, &mac_hi); + + mac_addr[0] = (mac_hi >> 8) & 0xff; + mac_addr[1] = mac_hi & 0xff; + mac_addr[2] = (mac_lo >> 24) & 0xff; + mac_addr[3] = (mac_lo >> 16) & 0xff; + mac_addr[4] = (mac_lo >> 8) & 0xff; + mac_addr[5] = mac_lo & 0xff; + + return 0; +} + static int am65_cpsw_read_rom_hwaddr(struct udevice *dev) { struct am65_cpsw_priv *priv = dev_get_priv(dev); - struct am65_cpsw_common *common = priv->cpsw_common; struct eth_pdata *pdata = dev_get_plat(dev); - u32 mac_hi, mac_lo; - - if (common->mac_efuse == FDT_ADDR_T_NONE) - return -1;
- mac_lo = readl(common->mac_efuse); - mac_hi = readl(common->mac_efuse + 4); - pdata->enetaddr[0] = (mac_hi >> 8) & 0xff; - pdata->enetaddr[1] = mac_hi & 0xff; - pdata->enetaddr[2] = (mac_lo >> 24) & 0xff; - pdata->enetaddr[3] = (mac_lo >> 16) & 0xff; - pdata->enetaddr[4] = (mac_lo >> 8) & 0xff; - pdata->enetaddr[5] = mac_lo & 0xff; + am65_cpsw_am654_get_efuse_macid(dev, + priv->port_id, + pdata->enetaddr);
return 0; } @@ -710,8 +732,6 @@ static int am65_cpsw_probe_nuss(struct udevice *dev) cpsw_common->ss_base = dev_read_addr(dev); if (cpsw_common->ss_base == FDT_ADDR_T_NONE) return -EINVAL; - cpsw_common->mac_efuse = devfdt_get_addr_name(dev, "mac_efuse"); - /* no err check - optional */
ret = power_domain_get_by_index(dev, &cpsw_common->pwrdmn, 0); if (ret) {

This was a custom property and we don't need it anymore. We are now using the standard property "ti,syscon-efuse".
Signed-off-by: Roger Quadros rogerq@kernel.org ---
RFC because Nishanth can squash this into his DT sync series.
The /delete-property/ ranges also needs to be deleted along with the duplicate cpsw-phy-sel@04044. But first will need to teach the driver to deal with the syscon node properly. phys = <&phy_gmii_sel n>;
Will send a follow up patch for that soon.
arch/arm/dts/k3-am625-sk-u-boot.dtsi | 3 --- 1 file changed, 3 deletions(-)
diff --git a/arch/arm/dts/k3-am625-sk-u-boot.dtsi b/arch/arm/dts/k3-am625-sk-u-boot.dtsi index 249155733a..54fdabdb8e 100644 --- a/arch/arm/dts/k3-am625-sk-u-boot.dtsi +++ b/arch/arm/dts/k3-am625-sk-u-boot.dtsi @@ -128,9 +128,6 @@ };
&cpsw3g { - reg = <0x0 0x8000000 0x0 0x200000>, - <0x0 0x43000200 0x0 0x8>; - reg-names = "cpsw_nuss", "mac_efuse"; /delete-property/ ranges; bootph-pre-ram;

Hi,
On Fri, Jul 21, 2023 at 12:59:33AM +0300, Roger Quadros wrote:
Hi,
We need to track the Device tree in Linux. The approved property for MAC address EFUSE is "ti,syscon-efuse".
Use that and drop custom property "mac_efuse".
On a SK-AM62:
Reviewed-by: Maxime Ripard mripard@kernel.org Tested-by: Maxime Ripard mripard@kernel.org
Thanks! Maxime
participants (2)
-
Maxime Ripard
-
Roger Quadros