当前位置: 首页 > wzjs >正文

滨州正规网站建设哪家好怎么样推广自己的网址

滨州正规网站建设哪家好,怎么样推广自己的网址,成都哪家公司做网站最好,织梦手机网站分亨链接怎么做RK3566代码之前适配的1000M IC RTL8211F , 现在需要在之前的基础上修改PHY IC 为裕泰的YT8512C ----------------------------------------------------------------------//将1000M 的配置关掉,改为100M 配置,查看RK3566 资料关于以太网的配置即可知道如何修改 #if…

 

RK3566代码之前适配的1000M IC RTL8211F ,
现在需要在之前的基础上修改PHY IC 为裕泰的YT8512C
----------------------------------------------------------------------+//将1000M 的配置关掉,改为100M 配置,查看RK3566 资料关于以太网的配置即可知道如何修改
#if 0
&gmac1 {phy-mode = "rgmii";clock_in_out = "input";snps,reset-gpio = <&gpio4 RK_PC2 GPIO_ACTIVE_LOW>;snps,reset-active-low;/* Reset time is 20ms, 100ms for rtl8211f */snps,reset-delays-us = <0 20000 100000>;assigned-clocks = <&cru SCLK_GMAC1_RX_TX>, <&cru SCLK_GMAC1>;assigned-clock-parents =  <&cru SCLK_GMAC1_RGMII_SPEED>, <&gmac1_clkin>;assigned-clock-rates = <0>, <125000000>;pinctrl-names = "default";pinctrl-0 = <&gmac1m1_miim&gmac1m1_tx_bus2&gmac1m1_rx_bus2&gmac1m1_rgmii_clk&gmac1m1_rgmii_bus&gmac1m1_clkinout>;tx_delay = <0x4b>;rx_delay = <0x2b>;phy-handle = <&rgmii_phy1>;status = "okay";
};
#else
//gmac1m0
&gmac1_clkin {clock-frequency = <50000000>;
};
&gmac1 {phy-mode = "rmii";clock_in_out = "input";snps,reset-gpio = <&gpio4 RK_PC2 GPIO_ACTIVE_LOW>;snps,reset-active-low;/* Reset time is 20ms, 100ms for rtl8211f */snps,reset-delays-us = <0 20000 100000>;assigned-clocks = <&cru SCLK_GMAC1_RX_TX>, <&cru SCLK_GMAC1>;assigned-clock-parents = <&cru SCLK_GMAC1_RMII_SPEED>, <&gmac1_clkin>;//assigned-clock-rates = <0>, <50000000>;pinctrl-names = "default";pinctrl-0 = <&gmac1m0_miim&gmac1m0_clkinout&gmac1m0_tx_bus2&gmac1m0_rx_bus2>;//tx_delay = <0x4f>;//rx_delay = <0x26>;phy-handle = <&rmii_phy1>;status = "okay";
};#endif+//rgmii 1000M 改为100M
-&mdio1 {
-	rgmii_phy1: phy@0 {
-		compatible = "ethernet-phy-ieee802.3-c22";
-		reg = <0x0>;
-	};
-};+&mdio1 {
+	rmii_phy1: phy@0 {
+		compatible = "ethernet-phy-ieee802.3-c22";
+		reg = <0x0>;
+	};
+};//修改1000M 为100M ETH 的VDDIO 需要从1.8V 改为3.3V
&pmu_io_domains {status = "okay";pmuio2-supply = <&vcc_3v3>;vccio1-supply = <&vcc_3v3>;vccio3-supply = <&vcc_3v3>;vccio4-supply = <&vcc_1v8>;vccio5-supply = <&vcc_3v3>;-vccio6-supply = <&vcc_1v8>;+vccio6-supply = <&vcc_3v3>;vccio7-supply = <&vcc_3v3>;
};-----------------------------
[   23.957084] rk_gmac-dwmac fe010000.ethernet eth0: No Safety Features support found
[   23.957124] rk_gmac-dwmac fe010000.ethernet eth0: IEEE 1588-2008 Advanced Timestamp supported
[   23.958316] rk_gmac-dwmac fe010000.ethernet eth0: registered PTP clock
[   23.960237] IPv6: ADDRCONF(NETDEV_UP): eth0: link is not ready[ 1609.817567] rk_gmac-dwmac fe010000.ethernet eth0: Link is Up - 100Mbps/Full - flow control rx/tx
[ 1609.817709] IPv6: ADDRCONF(NETDEV_CHANGE): eth0: link becomes ready
-----------------------------
参照文档修改,发现以太网初始化正常,节点eth0 正常生成,也能够ping通数据2.接下来需要修改 以太网的网络接口状态灯:根据数据规格书:LED0 0x40c0寄存器写0x30 LED1 0x40c3寄存器写0x1300commit bd71fd55f47f18acb35f8974ebaf6dd696ba7738
Author: amediatech <jiangsai@amediatech.cn>
Date:   Wed Dec 27 17:53:17 2023 +0800modify led controldiff --git a/kernel/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c b/kernel/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c
index e75d44b987..f1f304e6f2 100644
--- a/kernel/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c
+++ b/kernel/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c
@@ -26,6 +26,7 @@#include <linux/clk.h>#include <linux/kernel.h>
+#include <linux/version.h>#include <linux/interrupt.h>#include <linux/ip.h>#include <linux/tcp.h>
@@ -57,7 +58,21 @@#define	STMMAC_ALIGN(x)		ALIGN(ALIGN(x, SMP_CACHE_BYTES), 16)#define	TSO_MAX_BUFF_SIZE	(SZ_16K - 1)
-
+#define REG_DEBUG_ADDR_OFFSET           0x1e
+#define REG_DEBUG_DATA                  0x1f
+#define YT8512_LED0_ACT_BLK_IND         0x1000
+#define YT8512_LED0_DIS_LED_AN_TRY      0x0001
+#define YT8512_LED0_BT_BLK_EN           0x0002
+#define YT8512_LED0_HT_BLK_EN           0x0004
+#define YT8512_LED0_COL_BLK_EN          0x0008
+#define YT8512_LED0_BT_ON_EN            0x0010
+#define YT8512_LED1_BT_ON_EN            0x0010
+#define YT8512_LED1_TXACT_BLK_EN        0x0100
+#define YT8512_LED1_RXACT_BLK_EN        0x0200
+#define YT8512_EXTREG_LED0              0x40c0
+#define YT8512_EXTREG_LED1              0x40c3
+//#define RTL_8211F_PHY_ID        0x001cc916
+#define YT8512C_PHY_ID	0x00000128/* Module parameters */#define TX_TIMEO	5000static int watchdog = TX_TIMEO;
@@ -4270,6 +4285,122 @@ static int stmmac_hw_init(struct stmmac_priv *priv)return 0;}
+#if (KERNEL_VERSION(5, 5, 0) > LINUX_VERSION_CODE)
+static inline void phy_lock_mdio_bus(struct phy_device *phydev)
+{
+#if (KERNEL_VERSION(4, 5, 0) > LINUX_VERSION_CODE)
+    mutex_lock(&phydev->bus->mdio_lock);
+#else
+    mutex_lock(&phydev->mdio.bus->mdio_lock);
+#endif
+}
+ 
+static inline void phy_unlock_mdio_bus(struct phy_device *phydev)
+{
+#if (KERNEL_VERSION(4, 5, 0) > LINUX_VERSION_CODE)
+    mutex_unlock(&phydev->bus->mdio_lock);
+#else
+    mutex_unlock(&phydev->mdio.bus->mdio_lock);
+#endif
+}
+#endif
+
+#if (KERNEL_VERSION(4, 16, 0) > LINUX_VERSION_CODE)
+static inline int __phy_read(struct phy_device *phydev, u32 regnum)
+{
+#if (KERNEL_VERSION(4, 5, 0) > LINUX_VERSION_CODE)
+        struct mii_bus *bus = phydev->bus;
+        int addr = phydev->addr;
+        return bus->read(bus, phydev->addr, regnum);
+#else
+        struct mii_bus *bus = phydev->mdio.bus;
+        int addr = phydev->mdio.addr;
+#endif
+        return bus->read(bus, addr, regnum);
+}
+
+static inline int __phy_write(struct phy_device *phydev, u32 regnum, u16 val)
+{
+#if (KERNEL_VERSION(4, 5, 0) > LINUX_VERSION_CODE)
+        struct mii_bus *bus = phydev->bus;
+        int addr = phydev->addr;
+#else
+        struct mii_bus *bus = phydev->mdio.bus;
+        int addr = phydev->mdio.addr;
+#endif
+        return bus->write(bus, addr, regnum, val);
+}
+#endif
+
+static int ytphy_read_ext(struct phy_device *phydev, u32 regnum)
+{
+    int ret;
+    
+    phy_lock_mdio_bus(phydev);
+    ret = __phy_write(phydev, REG_DEBUG_ADDR_OFFSET, regnum);
+    if (ret < 0)
+        goto err_handle;
+ 
+    ret = __phy_read(phydev, REG_DEBUG_DATA);
+    if (ret < 0)
+        goto err_handle;
+    
+err_handle:
+    phy_unlock_mdio_bus(phydev);
+    return ret;
+}
+ 
+static int ytphy_write_ext(struct phy_device *phydev, u32 regnum, u16 val)
+{
+    int ret;
+ 
+    phy_lock_mdio_bus(phydev);
+    ret = __phy_write(phydev, REG_DEBUG_ADDR_OFFSET, regnum);
+    if (ret < 0)
+        goto err_handle;
+ 
+    ret = __phy_write(phydev, REG_DEBUG_DATA, val);
+    if (ret < 0)
+        goto err_handle;
+    
+err_handle:
+    phy_unlock_mdio_bus(phydev);
+    return ret;
+}
+
+
+static int phy_yt8512c_led_fixup(struct phy_device *phydev)
+{
+	int ret;
+	int val;
+	int mask;
+	printk("-------------------------%s in.\n", __func__);
+	val = ytphy_read_ext(phydev, YT8512_EXTREG_LED0); //GREEN
+	printk("--------------------YT8512_EXTREG_LED0 read val is %d.\n",val);  //785 = 0x311;
+	if (val < 0)
+		return val;
+	//need set 0x30
+    	val |= YT8512_LED0_ACT_BLK_IND;
+	mask = YT8512_LED0_DIS_LED_AN_TRY | YT8512_LED0_BT_BLK_EN | 
+		YT8512_LED0_HT_BLK_EN | YT8512_LED0_COL_BLK_EN | 
+		YT8512_LED0_BT_ON_EN;
+	val &= ~mask;
+	printk("--------------------YT8512_EXTREG_LED0 write val is %d.\n",val);  //800 = 0x320
+	ret = ytphy_write_ext(phydev, YT8512_EXTREG_LED0, 0x30);
+	if (ret < 0)
+		return ret;
+	val = ytphy_read_ext(phydev, YT8512_EXTREG_LED1); //YELLOW 
+	printk("--------------------YT8512_EXTREG_LED1 read val is %d.\n",val);
+	if (val < 0)
+		return val;
+	//need set LED1 0x1300
+	val |= YT8512_LED1_BT_ON_EN;
+	mask = YT8512_LED1_TXACT_BLK_EN | YT8512_LED1_RXACT_BLK_EN;
+	val &= ~mask;
+	printk("--------------------YT8512_EXTREG_LED1 write val is %d.\n",val);
+	ret = ytphy_write_ext(phydev, YT8512_EXTREG_LED1, 0x1300);
+	return ret;
+}/*** stmmac_dvr_probe
@@ -4463,7 +4594,10 @@ int stmmac_dvr_probe(struct device *device,netdev_warn(priv->dev, "%s: failed debugFS registration\n",__func__);#endif
-
+ret = phy_register_fixup_for_uid(YT8512C_PHY_ID, 0xffffffff, phy_yt8512c_led_fixup);
+if (ret){
+		printk("Cannot register PHY board fixup.\n");
+	}return ret;error_netdev_register:


文章转载自:

http://dTsOE1X7.Lbssg.cn
http://RJIvaoql.Lbssg.cn
http://Kni5RdQi.Lbssg.cn
http://QH0zsc4z.Lbssg.cn
http://mHRBHxVx.Lbssg.cn
http://eEXDEdcr.Lbssg.cn
http://i4zbcb0c.Lbssg.cn
http://DslvUs2J.Lbssg.cn
http://0Sh1YlaD.Lbssg.cn
http://q3GJi7Cz.Lbssg.cn
http://GMSdRLAc.Lbssg.cn
http://nYqmDwL2.Lbssg.cn
http://7p5VAbmf.Lbssg.cn
http://DbPuvViT.Lbssg.cn
http://owbu4RUM.Lbssg.cn
http://SlpXRK9m.Lbssg.cn
http://BGVmLoSw.Lbssg.cn
http://6lRvmPee.Lbssg.cn
http://CHWz00bn.Lbssg.cn
http://NfolwX9w.Lbssg.cn
http://DPhfxj7F.Lbssg.cn
http://zpFaEX6o.Lbssg.cn
http://D2K60eKn.Lbssg.cn
http://iZgW4YTp.Lbssg.cn
http://BIqGFViU.Lbssg.cn
http://v0amiPYo.Lbssg.cn
http://fVHwjrQN.Lbssg.cn
http://Jfbghahv.Lbssg.cn
http://LT9lq6RE.Lbssg.cn
http://vJylguCF.Lbssg.cn
http://www.dtcms.com/wzjs/726724.html

相关文章:

  • 正规网站优化推广课程网站建设课程
  • 一流专业建设网站网站建设建立好如何盈利
  • 网络营销软件网站wordpress导航菜单栏
  • 网站开发猪八戒企业网站模板php
  • 百度怎样建立一个网站四川明腾信息技术有限公司
  • 在网站文章锚文本怎么做用网站模板做网站
  • 营销型网站功能表口碑好的秦皇岛网站建设哪家好
  • 国外做的好看的网站设计国家建设工程信息网
  • 做衣服招临工在什么网站找免费网站制作软件
  • 商城网站制作费用我爱水煮鱼 wordpress
  • 林芝网站建设设计上海2021
  • 宫廷计有哪些网站开发的网站建设如何增加流量
  • 深圳住房建筑网站建个什么网站
  • 做旅游网站的目标上海手工活外发加工网
  • 建设网站必须要配置apache吗视频门户网站建设项目标书
  • 做那种类型的网站seo好wordpress配置文件
  • 做网站的时候宽高自己架设服务器做网站
  • 全网vip影视网站一键搭建农村建设商城网站的好处
  • 二手闲置平台网站怎么做怎样讲卖灯的网站做的好处
  • 开网店的步骤和流程一键优化下载
  • 中国空间站的意义wordpress the7安装教程
  • 网站建设方式天象集团ui培训
  • 怎么做论坛网站怎么开网店呢
  • 网站开发百灵鸟优化哪个网站亲子游做的好
  • 手机膜+东莞网站建设wordpress 文库插件
  • 网站如何更新维护域名备案
  • 网站建设开发费用入什么科目销售网站内容设计
  • 运动网站源码wordpress 自带主题
  • 网页制作淘宝网站建设网站的pv统计功能怎样做
  • 沈阳设计网站网站建设的企业