From 645e752c5a84baeb21015cdc85fc05b7d16312c8 Mon Sep 17 00:00:00 2001
From: hc <hc@nodka.com>
Date: Sat, 11 May 2024 01:13:52 +0000
Subject: [PATCH] disable i2c1
---
kernel/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c | 71 +++++++++++++++++++++++++++++++++++
1 files changed, 70 insertions(+), 1 deletions(-)
diff --git a/kernel/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c b/kernel/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c
index f10330b..852e2d3 100644
--- a/kernel/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c
+++ b/kernel/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c
@@ -1101,6 +1101,7 @@
}
}
+#if 0
static void rtl8211F_led_control(struct phy_device *phydev)
{
printk("ben debug:rtl8211F_led_control...1 \n");
@@ -1117,6 +1118,44 @@
// phy_write(phydev, 16, 0x6C0A);
printk("ben debug:rtl8211F_led_control...2 \n");
}
+#endif
+#define RTL_8211F_PHY_ID 0x001cc916
+#define RTL_8211F_PHY_ID_MASK 0x001fffff
+#define RTL_8211F_PAGE_SELECT 0x1f
+#define RTL_8211F_LCR_ADDR 0x10
+
+#define GREEN_LED 0 // �̵���LED0
+#define YELLOW0_LED 1 // �Ƶ���LED1
+#define YELLOW1_LED 2 // �Ƶ���LED2
+
+static int rtl8211F_led_control(struct phy_device *phydev)
+{
+ unsigned int temp;
+
+ printk("<<<<<<ben test led ctrl start... %s\n",__FUNCTION__);
+ if(!phydev) return 0;
+ if(phydev->phy_id!=0x001cc916) return 0; /* only for 8211E*/
+
+ // ��������LED��
+ phy_write(phydev, 31, 0xd04);
+ temp = 0x02 << (5 * GREEN_LED); // �̵Ʊ�ʾ����״̬
+ temp |= 0x08 << (5 * YELLOW0_LED); // �ƵƱ�ʾ����״̬
+
+ temp |= 0x1b << (5 * YELLOW1_LED); // �ƵƱ�ʾ���ݰ��շ�״̬
+ phy_write(phydev, 0x10, temp);
+
+ temp = 1 << (YELLOW1_LED + 1); // �̵Ʋ�ָʾEEE����״̬, �������ߺ��Ҫ����
+ // ���Ƶ�ҪָʾEEE����״̬, û�����ݰ�ʱ��ҪϨ��
+ phy_write(phydev, 0x11, 0x00);
+ phy_write(phydev, 31, 0);
+
+ // �������ߺ�, �̵Ƴ���; �ε����ߺ�, �̵�Ϩ��
+ // ��·֧��EEE����: �����ݴ���, �Ƶ���˸, ����Ϩ��
+ // ��·��֧��EEE����: �����ݴ���, �Ƶ���˸, ������
+
+ printk("<<<<<<<ben test led ctrl end %s\n",__FUNCTION__);
+ return 0;
+}
/**
* stmmac_init_phy - PHY initialization
@@ -1132,29 +1171,43 @@
struct device_node *node;
int ret;
+
+ printk("ben stmmac_init_phy .. \n");
+ mdelay(2000);
+ printk("ben stmmac_init_phy delay .. \n");
if (priv->plat->integrated_phy_power)
ret = priv->plat->integrated_phy_power(priv->plat->bsp_priv, true);
node = priv->plat->phylink_node;
if (node)
+ {
+ //printk("ben ttt.. \n");
ret = phylink_of_phy_connect(priv->phylink, node, 0);
+ //printk("ben ttt:%d \n", ret);
+ }
/* Some DT bindings do not set-up the PHY handle. Let's try to
* manually parse it
*/
+ //printk("ben:stmmac_init_phy..1 \n");
if (!node || ret) {
+ //if (1) {
int addr = priv->plat->phy_addr;
struct phy_device *phydev;
+ //printk("ben:stmmac_init_phy..2 \n");
phydev = mdiobus_get_phy(priv->mii, addr);
if (!phydev) {
netdev_err(priv->dev, "no phy at addr %d\n", addr);
return -ENODEV;
}
- rtl8211F_led_control(phydev);
+ //rtl8211F_led_control(phydev);
+
+ //printk("ben:stmmac_init_phy..3 \n");
ret = phylink_connect_phy(priv->phylink, phydev);
+ //rtl8211F_led_control(phydev);
}
if (!priv->plat->pmt) {
@@ -2884,6 +2937,7 @@
u32 chan;
int ret;
+ //printk("ben:stmmac_open.. \n");
ret = pm_runtime_get_sync(priv->device);
if (ret < 0) {
pm_runtime_put_noidle(priv->device);
@@ -2957,6 +3011,12 @@
goto init_error;
}
}
+
+
+ #if 1
+ printk("ben -------bootup add 2s delay time.\n");
+ mdelay(2500);
+ #endif
ret = stmmac_hw_setup(dev, true);
if (ret < 0) {
@@ -5246,6 +5306,9 @@
*/
pm_runtime_put(device);
+ //add
+ phy_register_fixup_for_uid(RTL_8211F_PHY_ID, RTL_8211F_PHY_ID_MASK, rtl8211F_led_control);
+
return ret;
error_netdev_register:
@@ -5457,6 +5520,12 @@
stmmac_free_tx_skbufs(priv);
stmmac_clear_descriptors(priv);
+#if 1
+ printk("ben -------resume add 2s delay time.\n");
+ mdelay(2000);
+
+#endif
+
stmmac_hw_setup(ndev, false);
stmmac_init_coalesce(priv);
stmmac_set_rx_mode(ndev);
--
Gitblit v1.6.2