5

您所在的位置:网站首页 mt2513芯片 5

5

2024-06-02 07:18:59| 来源: 网络整理| 查看: 265

一、 MTK7621 网络通讯原理简述

本篇博文分析的是mtk7621的芯片所内嵌的交换芯片mt7530的驱动程序,MTK7621采用内部的 MDIO 接口管理MT7530 的 switch 芯片;MT7530包含多个7个 PHY 接口,其中第7个口连接到MTK7621芯片的eth0网口。MTK7621通过MDIO 进行寄存器读写配置使用,逻辑框图如下。

------------------ | CPU /mtk7621 | | ----------- | | | MAC/ephy | |___|__||_____|__| || RGMII/ || RXP/TXP MII || || ------------------------------------------------||--------- | Switch MT7530 || | | || | | || | | |-----| |-----| |-----| |-----| |-----| | ____|_____|___|_____|___|_____|___|_____|____|_____|______| PHY1 PHY2 PHY3 PHY4 PHY/MAC 二、通过设备树看 MT7530 交换芯片 1.linux 内核源码相对路径: OpenWrt/mtk7621-19.07/build_dir/target-mipsel_24kc_musl/linux-ramips_mt7621/linux-4.14.200 2.设备树文件相对路径: /OpenWrt/mtk7621-19.07$ ls target/linux/ramips/dts/ |grep 7621 AP-MT7621A-V60.dts MT7621.dts mt7621.dtsi U7621-06-256M-16M.dts U7621-06-256M-64M.dts U7621-06-512M-64M.dts U7621-06.dtsi 3.mt7621.dtsi 文件内容 文件名称: target/linux/ramips/dts/mt7621.dtsi ethernet: ethernet@1e100000 { compatible = "mediatek,mt7621-eth"; # 对应的驱动程序 soc_mt7621.c 文件中 reg = ; #address-cells = ; #size-cells = ; resets = ; reset-names = "fe", "eth"; interrupt-parent = ; interrupts = ; mediatek,switch = ; #交换芯片 mt7530 mdio-bus { #address-cells = ; #size-cells = ; phy1f: ethernet-phy@1f { # 内部 MDIO 总线描述 reg = ; phy-mode = "rgmii"; }; }; hnat: hnat@0 { compatible = "mediatek,mt7623-hnat"; reg = ; mtketh-ppd = "eth0"; mtketh-lan = "eth0"; mtketh-wan = "eth0"; resets = ; reset-names = "mtketh"; }; }; gsw: gsw@1e110000 { compatible = "mediatek,mt7621-gsw"; # 对应驱动程序 gsw_mt7621.c 文件中。 reg = ; interrupt-parent = ; interrupts = ; }; 4.驱动文件位置 检索驱动文件: $ ls drivers/net/ethernet/mediatek/ built-in.o gsw_mt7620.c mdio.c mdio_rt2880.h mtk_debugfs.o mtk_offload.h soc_rt3050.c esw_rt3050.c gsw_mt7620.h mdio.h modules.builtin mtk_eth_soc.c mtk_offload.o soc_rt3883.c esw_rt3050.h gsw_mt7621.c mdio_mt7620.c mt7530.c mtk_eth_soc.h soc_mt7620.c ethtool.c gsw_mt7621.o mdio_mt7620.o mt7530.h mtk_eth_soc.o soc_mt7621.c ethtool.h Kconfig mdio.o mt7530.o mtk-eth-soc.o soc_mt7621.o ethtool.o Makefile mdio_rt2880.c mtk_debugfs.c mtk_offload.c soc_rt2880.c 三、网口与交换芯片如何关联起来? 网口驱动加载。

MT7621 的片上网口驱动 soc_mt7621.c 文件中,eth 驱动方法结构体定义如下:

static struct fe_soc_data mt7621_data = { .init_data = mt7621_init_data, /* 芯片初始化 */ .reset_fe = mt7621_fe_reset, .set_mac = mt7621_set_mac, .fwd_config = mt7621_fwd_config, /* Vlan 转发配置 */ .tx_dma = mt7621_tx_dma, .switch_init = mtk_gsw_init, /* 关联 MT7530 交换芯片,初始化配置 */ .switch_config = mt7621_gsw_config, /* 配置 MT7530 芯片、并 probe MT7530 驱动 */ .reg_table = mt7621_reg_table, .pdma_glo_cfg = FE_PDMA_SIZE_16DWORDS, .rx_int = RT5350_RX_DONE_INT, .tx_int = RT5350_TX_DONE_INT, .status_int = (MT7621_FE_GDM1_AF | MT7621_FE_GDM2_AF), .checksum_bit = MT7621_L4_VALID, .has_carrier = mt7620_has_carrier, /* mdio_mt7621.c 状态检测 */ .mdio_read = mt7620_mdio_read, /* mdio 总线读取操作 */ .mdio_write = mt7620_mdio_write, /* mdio 总线写操作 */ .mdio_adjust_link = mt7620_mdio_link_adjust, /* mdio_mt7621.c 连接检测 */ }; /* mtk7621-eth 驱动程序入口处 */ const struct of_device_id of_fe_match[] = { { .compatible = "mediatek,mt7621-eth", .data = &mt7621_data }, {}, }; MODULE_DEVICE_TABLE(of, of_fe_match);

mtk7621 片上的eth驱动就包含这 switch 芯片的驱动内容, mt7530 的驱动挂载是由 mt7621_gsw_config 函数触发。 在这里插入图片描述 由源码调用关系,mt7530操作函数主要是 vlan 和 port 的操作,如:mt7530_get_vlan_ports 函数,最终调用 mdiobus_read/mdio_write 函数实现操作内部芯片mt7530 的目的。

switch 交换芯片驱动加载

mtk7621 片上交换芯片设备名称mt7621-gsw ,驱动程序 gsw_mt7621.c 文件中。

gsw: gsw@1e110000 { compatible = "mediatek,mt7621-gsw"; # 对应驱动程序 gsw_mt7621.c 文件中。 reg = ; interrupt-parent = ; interrupts = ; };

在这里插入图片描述 mtk7621_gsw 驱动实现的是 gsw 设备实例 与 网口设备的绑定,卸载 mt7621-gsw 驱动,实际上是移除 gsw 与 网口间关系。

mt7621-eth 初始化分析 mt7621 驱动支持的芯片操作函数集合 static struct fe_soc_data mt7621_data = { .init_data = mt7621_init_data, .reset_fe = mt7621_fe_reset, .set_mac = mt7621_set_mac, .fwd_config = mt7621_fwd_config, .tx_dma = mt7621_tx_dma, .switch_init = mtk_gsw_init, /* switch 芯片初始化 */ .switch_config = mt7621_gsw_config, .reg_table = mt7621_reg_table, .pdma_glo_cfg = FE_PDMA_SIZE_16DWORDS, .rx_int = RT5350_RX_DONE_INT, .tx_int = RT5350_TX_DONE_INT, .status_int = (MT7621_FE_GDM1_AF | MT7621_FE_GDM2_AF), .checksum_bit = MT7621_L4_VALID, .has_carrier = mt7620_has_carrier, .mdio_read = mt7620_mdio_read, .mdio_write = mt7620_mdio_write, .mdio_adjust_link = mt7620_mdio_link_adjust, }; mtk_gsw_init 初始化 int mtk_gsw_init(struct fe_priv *priv) { struct device_node *np = priv->switch_np; struct platform_device *pdev = of_find_device_by_node(np); struct mt7620_gsw *gsw; if (!pdev) return -ENODEV; if (!of_device_is_compatible(np, mediatek_gsw_match->compatible)) return -EINVAL; gsw = platform_get_drvdata(pdev); /* 申请中断 */ priv->soc->swpriv = gsw; if (gsw->irq) { request_irq(gsw->irq, gsw_interrupt_mt7621, 0, "gsw", priv); disable_irq(gsw->irq); } /* mt7621-hw 硬件初始化 */ mt7621_hw_init(gsw, np); if (gsw->irq) enable_irq(gsw->irq); return 0; } 初始内容如下 static void mt7621_hw_init(struct mt7620_gsw *gsw, struct device_node *np) { u32 i; u32 val; /* wardware reset the switch */ fe_reset(RST_CTRL_MCM); mdelay(10); /* reduce RGMII2 PAD driving strength */ rt_sysc_m32(3 /* 25Mhz Xtal - do nothing */ } else if (val >= 3) { /* 40Mhz */ /* disable MT7530 core clock */ _mt7620_mii_write(gsw, 0, 13, 0x1f); _mt7620_mii_write(gsw, 0, 14, 0x410); _mt7620_mii_write(gsw, 0, 13, 0x401f); _mt7620_mii_write(gsw, 0, 14, 0x0); /* 省略部分代码 */ } else { /* 20Mhz Xtal - TODO */ } /* RGMII */ _mt7620_mii_write(gsw, 0, 14, 0x1); /* set MT7530 central align */ /* 省略部分代码 */ /* delay setting for 10/1000M */ /* 省略部分代码 */ /* lower Tx Driving*/ /* 省略部分代码 */ /* turn on all PHYs */ for (i = 0; i


【本文地址】

公司简介

联系我们

今日新闻


点击排行

实验室常用的仪器、试剂和
说到实验室常用到的东西,主要就分为仪器、试剂和耗
不用再找了,全球10大实验
01、赛默飞世尔科技(热电)Thermo Fisher Scientif
三代水柜的量产巅峰T-72坦
作者:寞寒最近,西边闹腾挺大,本来小寞以为忙完这
通风柜跟实验室通风系统有
说到通风柜跟实验室通风,不少人都纠结二者到底是不
集消毒杀菌、烘干收纳为一
厨房是家里细菌较多的地方,潮湿的环境、没有完全密
实验室设备之全钢实验台如
全钢实验台是实验室家具中较为重要的家具之一,很多

推荐新闻


图片新闻

实验室药品柜的特性有哪些
实验室药品柜是实验室家具的重要组成部分之一,主要
小学科学实验中有哪些教学
计算机 计算器 一般 打孔器 打气筒 仪器车 显微镜
实验室各种仪器原理动图讲
1.紫外分光光谱UV分析原理:吸收紫外光能量,引起分
高中化学常见仪器及实验装
1、可加热仪器:2、计量仪器:(1)仪器A的名称:量
微生物操作主要设备和器具
今天盘点一下微生物操作主要设备和器具,别嫌我啰嗦
浅谈通风柜使用基本常识
 众所周知,通风柜功能中最主要的就是排气功能。在

专题文章

    CopyRight 2018-2019 实验室设备网 版权所有 win10的实时保护怎么永久关闭