u-boot移植LCD驱动修改、网络驱动修改

u-boot移植LCD驱动修改

1、修改LCD参数displays

struct display_info_t const displays[] = {{

        .bus = MX6UL_LCDIF1_BASE_ADDR,

        .addr = 0,

        .pixfmt = 24,//像素格式,RGB888

        .detect = NULL,

        .enable = do_enable_parallel_lcd,

        .mode = {

                .name = "ATK4384",

                .xres           = 800,

                .yres           = 480,

                .pixclock       = 32258,//像素时钟

                .left_margin    = 88,//HBPD

                .right_margin   = 40,//HFPD

                .upper_margin   = 32,//VBPD

                .lower_margin   = 13,//VFPD

                .hsync_len      = 48,//HSPW

                .vsync_len      = 3,//VSPW

                .sync           = 0,

                .vmode          = FB_VMODE_NONINTERLACED

} } };

将其中的参数改成自己使用的开发板使用的参数

2、修改LCD的panel,其中panel是LCD的ID.

u-boot移植网络驱动修改

1、网络 PHY 地址修改

ENET1 PHY0

ENET2 PHY1

#if (CONFIG_FEC_ENET_DEV == 0)/*使用网络1*/

        #define IMX_FEC_BASE ENET_BASE_ADDR

        #define CONFIG_FEC_MXC_PHYADDR          0x0

        #define CONFIG_FEC_XCV_TYPE             RMII

        #elif (CONFIG_FEC_ENET_DEV == 1)/*使用网络2*/

        #define IMX_FEC_BASE ENET2_BASE_ADDR

        #define CONFIG_FEC_MXC_PHYADDR 0x1

        #define CONFIG_FEC_XCV_TYPE RMII

#endif

2、删除 uboot 中 74LV595 的驱动代码

NXP 官方I.MX6ULL EVK 开发板使用 74LV595 来扩展 IO74LV595 的驱动代码需要删除。

3、添加开发板网络复位引脚驱动

修改fecx_pads(x=1,2),修改以后参数如下:
static iomux_v3_cfg_t const fec1_pads[] = {

MX6_PAD_GPIO1_IO06__ENET1_MDIO | MUX_PAD_CTRL(MDIO_PAD_CTRL),

MX6_PAD_GPIO1_IO07__ENET1_MDC | MUX_PAD_CTRL(ENET_PAD_CTRL),

......

MX6_PAD_ENET1_RX_ER__ENET1_RX_ER | MUX_PAD_CTRL(ENET_PAD_CTRL),

MX6_PAD_ENET1_RX_EN__ENET1_RX_EN | MUX_PAD_CTRL(ENET_PAD_CTRL),  

MX6_PAD_SNVS_TAMPER7__GPIO5_IO07 | MUX_PAD_CTRL(NO_PAD_CTRL),

};

 static iomux_v3_cfg_t const fec2_pads[] = {

  MX6_PAD_GPIO1_IO06__ENET2_MDIO | MUX_PAD_CTRL(MDIO_PAD_CTRL),

  MX6_PAD_GPIO1_IO07__ENET2_MDC | MUX_PAD_CTRL(ENET_PAD_CTRL),

......

  MX6_PAD_ENET2_RX_EN__ENET2_RX_EN | MUX_PAD_CTRL(ENET_PAD_CTRL),

  MX6_PAD_ENET2_RX_ER__ENET2_RX_ER | MUX_PAD_CTRL(ENET_PAD_CTRL),

  MX6_PAD_SNVS_TAMPER8__GPIO5_IO08 | MUX_PAD_CTRL(NO_PAD_CTRL),

 };

4、进行PHY的硬件复位

修改函数setup_iomux_fec

static void setup_iomux_fec(int fec_id)

 {

 if (fec_id == 0)

 {

  imx_iomux_v3_setup_multiple_pads(fec1_pads, ARRAY_SIZE(fec1_pads));  

  gpio_direction_output(ENET1_RESET, 1);

  gpio_set_value(ENET1_RESET, 0);

  mdelay(20);

  gpio_set_value(ENET1_RESET, 1);

 }

 else

 {

  imx_iomux_v3_setup_multiple_pads(fec2_pads,

  ARRAY_SIZE(fec2_pads));

  gpio_direction_output(ENET2_RESET, 1);

  gpio_set_value(ENET2_RESET, 0);

  mdelay(20);

  gpio_set_value(ENET2_RESET, 1);

 }

 }

5、进行PHY的软件复位

修改 drivers/net/phy/phy.c 文件中的函数 genphy_update_link

int genphy_update_link(struct phy_device *phydev)

 {

  unsigned int mii_reg;  

  #ifdef CONFIG_PHY_SMSC

  static int lan8720_flag = 0;

  int bmcr_reg = 0;

  if (lan8720_flag == 0) {

  bmcr_reg = phy_read(phydev, MDIO_DEVAD_NONE, MII_BMCR);

  phy_write(phydev, MDIO_DEVAD_NONE, MII_BMCR, BMCR_RESET);

  while(phy_read(phydev, MDIO_DEVAD_NONE, MII_BMCR) & 0X8000) {

  udelay(100);

 }

  phy_write(phydev, MDIO_DEVAD_NONE, MII_BMCR, bmcr_reg);

  lan8720_flag = 1;

 }

 #endif

  /*

  * Wait if the link is up, and autonegotiation is in progress

  * (ie - we're capable and it's not done)

  */

 mii_reg = phy_read(phydev, MDIO_DEVAD_NONE, MII_BMSR);

......

 return 0;

 }

6、在 uboot 中使用网络之前要先设置几个环境变量,命令如下:

setenv ipaddr 192.168.1.55 //开发板 IP 地址

setenv ethaddr 00:04:9f:04:d2:35 //开发板网卡 MAC 地址

setenv gatewayip 192.168.1.1 //开发板默认网关

setenv netmask 255.255.255.0 //开发板子网掩码

setenv serverip 192.168.1.250 //服务器地址,也就是 Ubuntu 地址

saveenv //保存环境变量

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值