zoukankan      html  css  js  c++  java
  • RTL8201 替换适配国产JL11网卡

    shell@EMT100X:/ $ dmesg | grep PHY
    <6>[    2.321807] eth0: PHY ID 937c4023 at 0 IRQ 193 (stmmac-0:00) active
    <6>[    2.321812] eth0: PHY ID 937c4023 at 1 IRQ 193 (stmmac-0:01) active


    commit 975ce7c514fe7f7109b1f4515f6d51f7a2b8c442
    Author: linzheming <linzheming@star-net.cn>
    Date:   Tue Apr 20 17:09:27 2021 +0800

        修改phy id

    diff --git a/kernel/drivers/net/ethernet/rockchip/gmac/stmmac.h b/kernel/drivers/net/ethernet/rockchip/gmac/stmmac.h
    index 8a29ae1..2636f5c 100755
    --- a/kernel/drivers/net/ethernet/rockchip/gmac/stmmac.h
    +++ b/kernel/drivers/net/ethernet/rockchip/gmac/stmmac.h
    @@ -35,6 +35,8 @@
     
      //add by xlm
      #define RTL_8201F_PHY_ID  0x001cc816
    +//add by lzm
    +#define JL1101_PHY_ID  0x937c4023
      /* &xlm* */
     
      struct stmmac_priv {
    diff --git a/kernel/drivers/net/ethernet/rockchip/gmac/stmmac_mdio.c b/kernel/drivers/net/ethernet/rockchip/gmac/stmmac_mdio.c
    index f259834..086bcde 100755
    --- a/kernel/drivers/net/ethernet/rockchip/gmac/stmmac_mdio.c
    +++ b/kernel/drivers/net/ethernet/rockchip/gmac/stmmac_mdio.c


    static int phy_rtl8201f_fixup(struct phy_device *phydev)
    {
         int value;

        printk("register PHY board fixup. ");
         /* use page 7 */
         value = phy_read(phydev, 31);
         value &= 0xff00;
         value |= 0x0007;
         value = phy_write(phydev, 31, value);

        /* set customized led enable */
         value = phy_read(phydev, 19);
         //value &= ~(0x11<<4);//11
         value |= 0x1<<3;
         phy_write(phydev, 19, value);

        /* set led0 link,led1 act */
         value &= 0x0000;
         value |= 0x83;
         phy_write(phydev, 17, value);

             /* use page 7 */
         value = phy_read(phydev, 31);
         value &= 0x0000;
         value = phy_write(phydev, 31, value);

        return 0;
    }

    static int phy_JL1111_fixup(struct phy_device *phydev)
    {
         int rdata;

        printk("phy_JL1111_fixup. ");
         // Step 1: Enable LED Custom Function
         phy_write(phydev, 31, 7);// page_sel -> 7
         rdata = phy_read(phydev, 19); // read register 19 config
         rdata = rdata | (1 << 3); // enable led custom function
         phy_write(phydev, 19, rdata);// write config to register 19

        // Step2: Config LED Custom Register
         phy_write(phydev, 31, 129);// page_sel -> 129
         rdata = phy_read(phydev, 24); // read led custom register
         /* set led0 link,led1 act */
         rdata = rdata & ~(1 << 13); // LED1 disable 10 Link
         rdata = rdata & ~(1 << 12); // LED1 disable 100 Link
         rdata = rdata | (1 << 11); // LED1 enable 10 Activity
         rdata = rdata | (1 << 10); // LED1 enable 100 Activity
         rdata = rdata | (1 << 5); // LED0 enable 10 Link
         rdata = rdata | (1 << 4); // LED0 enable 100 Link
         rdata = rdata & ~(1 << 3); // LED0 disable 10 Activity
         rdata = rdata & ~(1 << 2); // LED0 disable 100 Activity

        phy_write(phydev, 24, rdata); // write led custom register

        return 0;
    }


    @@ -148,6 +148,7 @@ static int phy_rtl8201f_fixup(struct phy_device *phydev)
      {
          int value;
     
    +       printk("register PHY board fixup. ");
          /* use page 7 */
          value = phy_read(phydev, 31);
          value &= 0xff00;
    @@ -273,9 +274,16 @@ int stmmac_mdio_register(struct net_device *ndev)
          err = phy_register_fixup_for_uid(RTL_8201F_PHY_ID, 0xffffffff,
                  phy_rtl8201f_fixup);
                     /* we can live without it, so just issue a warning */
    +                printk("RTL_8201F_PHY_ID ");
              if (err)
                      printk("Cannot register PHY board fixup. ");
             /* &xlm* */
    +    err = phy_JL1111_fixup(JL1101_PHY_ID, 0xffffffff,
    +            phy_rtl8201f_fixup);
    +                printk("JL1101_PHY_ID ");
    +               /* we can live without it, so just issue a warning */
    +        if (err)
    +                printk("Cannot register PHY board fixup. ");

  • 相关阅读:
    将博客搬至CSDN
    NOIP2018酱油记
    CF 1039D You Are Given a Tree && CF1059E Split the Tree 的贪心解法
    最大异或子序列问题
    UVa 10615
    UVa 1057
    用树状数组代替平衡树
    [CTSC2008]图腾totem
    POI2008 题解
    简便思路的题目别人的做法
  • 原文地址:https://www.cnblogs.com/cute/p/14681955.html
Copyright © 2011-2022 走看看