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