From d0a428a6556ea5a006e22e28b0b1cd037885fe20 Mon Sep 17 00:00:00 2001 From: hc <hc@nodka.com> Date: Wed, 22 Nov 2023 01:07:12 +0000 Subject: [PATCH] add gmac0 read mac form eeprom,pcie30x1 --- kernel/drivers/net/ethernet/stmicro/stmmac/dwmac-rk.c | 37 +++++++++++++----- kernel/arch/arm64/boot/dts/rockchip/NK-R36S0.dtsi | 20 ++++++++- kernel/drivers/misc/eeprom/at24.c | 27 +++++++++++++ kernel/drivers/net/ethernet/realtek/r8169.c | 4 +- 4 files changed, 72 insertions(+), 16 deletions(-) diff --git a/kernel/arch/arm64/boot/dts/rockchip/NK-R36S0.dtsi b/kernel/arch/arm64/boot/dts/rockchip/NK-R36S0.dtsi index cc114b1..7ad629b 100755 --- a/kernel/arch/arm64/boot/dts/rockchip/NK-R36S0.dtsi +++ b/kernel/arch/arm64/boot/dts/rockchip/NK-R36S0.dtsi @@ -146,6 +146,11 @@ gpio_function = <0>; }; + m2_wifi_pwr { + gpio_num = <&gpio3 RK_PC6 GPIO_ACTIVE_HIGH>;//WIFI_PWREN_GPIO3_C6_1V8 + gpio_function = <0>; + }; + #if 0 do1 { @@ -388,7 +393,9 @@ rx_delay = <0x2f>; phy-handle = <&rgmii_phy0>; - status = "disabled"; + + status = "okay"; + }; &gmac1 { @@ -533,7 +540,7 @@ }; &pcie30phy { - status = "disabled"; + status = "okay"; }; &pcie2x1 { @@ -543,7 +550,14 @@ }; &pcie3x2 { - reset-gpios = <&gpio2 RK_PD6 GPIO_ACTIVE_HIGH>; + reset-gpios = <&gpio3 RK_PA1 GPIO_ACTIVE_HIGH>; + vpcie3v3-supply = <&vcc3v3_pcie>; + status = "disabled"; +}; + +&pcie3x1 { + rockchip,bifurcation; + reset-gpios = <&gpio3 RK_PA1 GPIO_ACTIVE_HIGH>; vpcie3v3-supply = <&vcc3v3_pcie>; status = "okay"; }; diff --git a/kernel/drivers/misc/eeprom/at24.c b/kernel/drivers/misc/eeprom/at24.c index dde0b45..1ef7f1a 100644 --- a/kernel/drivers/misc/eeprom/at24.c +++ b/kernel/drivers/misc/eeprom/at24.c @@ -564,6 +564,33 @@ } EXPORT_SYMBOL(at24_mac1_read); +ssize_t at24_mac2_read(unsigned char* mac) +{ + char buf[20]; + char buf_tmp[12]; + ssize_t ret; + if (at24_private == NULL) + { + printk("zcl: at24_mac_read at24_private==null error"); + return 0; + } + memset(buf, 0x00, 20); + memset(buf_tmp, 0x00, 12); + ret = at24_read_private(at24_private, buf, 0x20, 6); + if (ret > 0) + { + *mac = buf[0]; + *(mac + 1) = buf[1]; + *(mac + 2) = buf[2]; + *(mac + 3) = buf[3]; + *(mac + 4) = buf[4]; + *(mac + 5) = buf[5]; + } + printk("at24_mac2_read ...............\n"); + return ret; +} +EXPORT_SYMBOL(at24_mac2_read); + static int at24_write(void *priv, unsigned int off, void *val, size_t count) { struct at24_data *at24; diff --git a/kernel/drivers/net/ethernet/realtek/r8169.c b/kernel/drivers/net/ethernet/realtek/r8169.c index 6a6c6d0..9db26de 100644 --- a/kernel/drivers/net/ethernet/realtek/r8169.c +++ b/kernel/drivers/net/ethernet/realtek/r8169.c @@ -7439,7 +7439,7 @@ clk_disable_unprepare(data); } -extern ssize_t at24_mac1_read(unsigned char* mac); +extern ssize_t at24_mac2_read(unsigned char* mac); static int rtl_init_one(struct pci_dev *pdev, const struct pci_device_id *ent) { const struct rtl_cfg_info *cfg = rtl_cfg_infos + ent->driver_data; @@ -7602,7 +7602,7 @@ // for (i = 0; i < ETH_ALEN; i++) // dev->dev_addr[i] = RTL_R8(tp, MAC0 + i); memset(mac, 0x00, 6); - at24_mac1_read(mac); + at24_mac2_read(mac); if ((mac[0] == 0x68) && (mac[1] == 0xed)) { diff --git a/kernel/drivers/net/ethernet/stmicro/stmmac/dwmac-rk.c b/kernel/drivers/net/ethernet/stmicro/stmmac/dwmac-rk.c index 9f87f16..832f2b3 100644 --- a/kernel/drivers/net/ethernet/stmicro/stmmac/dwmac-rk.c +++ b/kernel/drivers/net/ethernet/stmicro/stmmac/dwmac-rk.c @@ -2349,12 +2349,14 @@ static unsigned char macaddr[6]; extern ssize_t at24_mac_read(unsigned char* addr); +extern ssize_t at24_mac1_read(unsigned char* addr); void rk_get_eth_addr(void *priv, unsigned char *addr) { struct rk_priv_data *bsp_priv = priv; struct device *dev = &bsp_priv->pdev->dev; unsigned char ethaddr[ETH_ALEN * MAX_ETH] = {0}; int ret,i, id = bsp_priv->bus_id; + printk("troy test id : %d\n",id); #if 0 rk_devinfo_get_eth_mac(addr); if (is_valid_ether_addr(addr)) @@ -2388,19 +2390,32 @@ } #endif #if 1 - if (at24_mac_read(macaddr) > 0) { - printk("ben %s: at24_mac_read Success!! \n", __func__); - memcpy(addr, macaddr, 6); - - printk("Read the Ethernet MAC address from :"); - for (i = 0; i < 5; i++) - printk("%2.2x:", addr[i]); - - printk("%2.2x\n", addr[i]); - } else { + if (id == 1 ){ + if (at24_mac_read(macaddr) > 0) { + printk("ben %s: at24_mac_read Success!! \n", __func__); + memcpy(addr, macaddr, 6); + printk("Read the Ethernet MAC address from :"); + for (i = 0; i < 5; i++) + printk("%2.2x:", addr[i]); + } else { printk("ben %s: at24_mac_read Failed!! \n", __func__); goto out; - } + } + } + else + { + if (at24_mac1_read(macaddr) > 0) { + printk("ben %s: at24_mac_read Success!! \n", __func__); + memcpy(addr, macaddr, 6); + printk("Read the Ethernet MAC address from :"); + for (i = 0; i < 5; i++) + printk("%2.2x:", addr[i]); + } else { + printk("ben %s: at24_mac_read Failed!! \n", __func__); + goto out; + } + } + #endif out: -- Gitblit v1.6.2