基于335X平台的UBOOT中交换芯片驱动移植

基于335X平台的UBOOT中交换芯片驱动移植

一、软硬件平台资料

1、开发板:创龙AM3359核心板,网口采用RMII形式。

2、UBOOT版本:U-Boot-2016.05,采用FDT和DM。

3、交换芯片MARVELL的88E6321.

4、参考文章:本博客基于335X的UBOOT网口驱动分析。

二、移植主要步骤

1、准备工作:

(1)、必须熟悉U-Boot-2016.05中的网口驱动构架,熟悉其中各个网口设备结构体的意义,网口初始化流程。重点详细分析常规基于phydev的驱动初始化的过程。大多数switch的访问和PHY类似,但是寄存器功能较PHY更为复杂,也是两类设备,我们这里只是基于UBOOT中原有MII-PHY的方式,基于现有PHY架构的驱动模型,添加SW的相关驱动.

(2)、熟悉switch的相关内容,参见相关datasheet,主要熟悉寄存器的寻址方式。

 2、主要需要实现的步骤:

(1)、在 /driver/net/phy/目录下,添加mv88e6321.c和mv88e6321.h文件,构造一个类PHY的SW设备,及所需所有驱动接口。

(2)/driver/net/phy/目录下,修改Makefile,增加obj-$(CONFIG_MV88E6321_SWITCH) += mv88e6321.o

(3)、在 /driver/net/phy/目录下的phy.c文件中的create_phy_by_mask函数中添加相关内容。实现查询到相关SW驱动及设备的功能。

三、具体代码分析

3.1.新建文件

根据/driver/net/phy/目录下的mv88e61xx以及mv88e6352的相关内容,建立我们需要的mv88e6321.c和mv88e6321.h文件。

3.2 mv88e6321.h文件内容

3.2.1.寄存器定义

    主要为相关PORT寄存器,PHY寄存器,以及PORT寄存器中的状态寄存器中的MODE定义。主要定义如下:

#define MV88E6321_CPU_PORT      0x12

#define MV88E6321_PHY_TIMEOUT      100000

/* port dev-addr (= port + 0x10) */

#define MV88E6321_PRT_OFST      0x10

/* port registers */

#define MV88E6321_Port_Status_REG      0x0

#define MV88E6321_Physical_Control_REG    0x1

#define MV88E6321_Jamming_Control_REG     0x2

#define MV88E6321_Product_Identifier_REG      0x3

#define MV88E6321_Port_Control_REG     0x4

#define MV88E6321_Port_Control_1_REG      0x5

#define MV88E6321_Port_Based_VLAN_REG     0x6

#define MV88E6321_Port_VLAN_ID_REG     0x7

#define MV88E6321_LED_Control_REG      0x16

#define MV88E6321_internal_phy3_addr      0x03

#define MV88E6321_internal_phy4_addr  0x04

#define MV88E6321_internal_serdes0_addr   0x0c

#define MV88E6321_internal_serdes1_addr  0x0d

#define MV88E6321_internal_phyid1_REG     0x02

#define MV88E6321_internal_phyid2_REG     0x03

/* global 1 registers dev-addr */

#define MV88E6321_GLBREG_DEVADR 0x1B

/*

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值