rv1126-rv1109-以太网功能-eth-(修改gmac)

新版回来,由于demo板是8211的芯片,考虑成本更换成了8201芯片,

于是主要考虑的是硬件引脚的差异,因为软件demo的8201已经跑通;

然后主要是修改dts即可

diff --git a/kernel/arch/arm/boot/dts/rv1109-38-v10-spi-nand.dts b/kernel/arch/arm/boot/dts/rv1109-38-v10-spi-nand.dts
index 87a4994c0..858b79c0e 100755
--- a/kernel/arch/arm/boot/dts/rv1109-38-v10-spi-nand.dts
+++ b/kernel/arch/arm/boot/dts/rv1109-38-v10-spi-nand.dts
@@ -162,21 +162,28 @@
        phy-mode = "rmii";
        clock_in_out = "output";

-       snps,reset-gpio = <&gpio3 RK_PC5 GPIO_ACTIVE_LOW>;
+       snps,reset-gpio = <&gpio2 RK_PB2 GPIO_ACTIVE_LOW>;
        snps,reset-active-low;
        snps,reset-delays-us = <0 50000 50000>;

-       assigned-clocks = <&cru CLK_GMAC_SRC>, <&cru CLK_GMAC_TX_RX>;
-       assigned-clock-parents = <&cru CLK_GMAC_SRC_M0>, <&cru RMII_MODE_CLK>;
+       assigned-clocks = <&cru CLK_GMAC_SRC_M1>, <&cru CLK_GMAC_SRC>, <&cru CLK_GMAC_TX_RX>;
+       assigned-clock-parents = <&cru CLK_GMAC_RGMII_M1>, <&cru CLK_GMAC_SRC_M1>, <&cru RMII_MODE_CLK>;
        assigned-clock-rates = <50000000>;

        pinctrl-names = "default";
-       pinctrl-0 = <&rmiim0_miim &rgmiim0_rxer &rmiim0_bus2 &rgmiim0_mclkinout_level0>;
+       pinctrl-0 = <&rmiim1_miim &rgmiim1_rxer &rmiim1_bus2 &rgmiim1_mclkinout_level0>;

        phy-handle = <&phy>;
        status = "okay";
 };

&mdio {
-       phy: phy@0 {
+       phy: phy@1 {
               compatible = "ethernet-phy-ieee802.3-c22";
-               reg = <0x0>;
+               reg = <0x1>;
       };
};

就是重m0口更换到m1口,然后一直不行,询问才知道是没有验证过的硬件;

于是硬件在原厂支持做了以下修改

总结就是:

1.给CRS_DV加了个下拉

2.把主控给出的芯片频率从XTAL_IN改成XTAL_OUT

===========================================================================

原理图

 ============================================================================

打上补丁:20201120_SZ18201_phy_support.patch

diff --git a/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c b/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c
old mode 100644
new mode 100755
index 58a490e..0097355
--- a/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c
+++ b/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c
@@ -85,9 +85,11 @@ MODULE_PARM_DESC(pause, "Flow Control Pause Time");
 static int tc = TC_DEFAULT;
 module_param(tc, int, S_IRUGO | S_IWUSR);
 MODULE_PARM_DESC(tc, "DMA threshold control value");


 static int buf_sz = DEFAULT_BUFSIZE;
+
+#define SZ18201_PHY_ID  0x00000128
+
 module_param(buf_sz, int, S_IRUGO | S_IWUSR);
 MODULE_PARM_DESC(buf_sz, "DMA buffer size");
 
@@ -2858,6 +2860,28 @@ static void stmmac_scan_delayline_dwork(struct work_struct *work)
 };
 #endif
 
+
+static int SZ18201_PHY_fixup(struct phy_device *phydev)
+{
+	u16 value;
+	printk("%s in\n", __fun
  • 9
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
RV1109上使用GPIO模拟I2C通信,需要在设备树(device tree)中进行设置。以下是一般的设备树设置步骤: 1. 找到RV1109芯片的设备树节点,一般为 "/soc/i2c@ff810000"; 2. 在该节点下添加一个子节点,以描述GPIO模拟I2C通信的相关信息,如下所示: ``` i2c-gpio { compatible = "i2c-gpio"; gpios = <&gpio0 0 GPIO_ACTIVE_HIGH>, <&gpio0 1 GPIO_ACTIVE_HIGH>; sda-gpios = <&gpio0 0 GPIO_ACTIVE_HIGH>; scl-gpios = <&gpio0 1 GPIO_ACTIVE_HIGH>; i2c-gpio,delay-us = <10>; i2c-gpio,sda-open-drain; }; ``` 其中,"gpios"属性描述了使用的GPIO引脚,"sda-gpios"和"scl-gpios"属性分别描述了SDA和SCL引脚,"i2c-gpio,delay-us"属性描述了时序控制的延迟时间,"i2c-gpio,sda-open-drain"属性描述了SDA引脚是否使用开漏输出模式; 3. 将需要使用GPIO模拟I2C通信的设备的设备树节点中的"compatible"属性设置为"i2c-gpio",并添加"reg"属性描述设备地址。 例如,假设需要使用GPIO模拟I2C通信控制一个I2C设备,其设备地址为0x50,则可以在设备树中进行如下设置: ``` i2c@ff810000 { compatible = "snps,dw-i2c"; reg = <0x0 0xff810000 0x0 0x100>; ... }; i2c-gpio@0 { compatible = "i2c-gpio"; gpios = <&gpio0 0 GPIO_ACTIVE_HIGH>, <&gpio0 1 GPIO_ACTIVE_HIGH>; sda-gpios = <&gpio0 0 GPIO_ACTIVE_HIGH>; scl-gpios = <&gpio0 1 GPIO_ACTIVE_HIGH>; i2c-gpio,delay-us = <10>; i2c-gpio,sda-open-drain; }; my-i2c-device@50 { compatible = "i2c-gpio"; reg = <0x50>; }; ``` 需要注意的是,不同的设备树可能存在差异,以上仅为一般步骤,具体设置需要根据实际应用场景进行调整。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

旋风旋风

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值