zoukankan      html  css  js  c++  java
  • I.MX6 MAC Address hacking

    /**************************************************************************
     *                       I.MX6 MAC Address hacking
     * 说明:
     *     本文记录I.MX6驱动是如何获取MAC地址的。
     *
     *                                  2016-6-24 深圳 南山平山村 曾剑锋
     **************************************************************************/
    
    
    
    /*
     * initialize __mach_desc_MX6Q_SABRESD data structure.
     */
    MACHINE_START(MX6Q_SABRESD, "Freescale i.MX 6Quad/DualLite/Solo Sabre-SD Board")
        /* Maintainer: Freescale Semiconductor, Inc. */
        .boot_params = MX6_PHYS_OFFSET + 0x100,
        .fixup = fixup_mxc_board,
        .map_io = mx6_map_io,
        .init_irq = mx6_init_irq,
        .init_machine = mx6_sabresd_board_init,        --------------+
        .timer = &mx6_sabresd_timer,                                 |
        .reserve = mx6q_sabresd_reserve,                             |
    MACHINE_END                                                      |
                                                                     |
                                                                     |
    static void __init mx6_sabresd_board_init(void)    <-------------+
    {
        ......
        imx6_init_fec(fec_data);                       --------------------+
        ......                                                             |
    }                                                                      |
                                                                           |
    void __init imx6_init_fec(struct fec_platform_data fec_data)      <----+
    {
        fec_get_mac_addr(fec_data.mac);                      ----------+
        if (!is_valid_ether_addr(fec_data.mac))                        |
            random_ether_addr(fec_data.mac);                           |
                                                                       |
        if (cpu_is_mx6sl())                                            |
            imx6sl_add_fec(&fec_data);                                 |
        else                                                           |
            imx6q_add_fec(&fec_data);                                  |
    }                                                                  |
                                                                       |
    static int fec_get_mac_addr(unsigned char *mac)         <----------+
    {
        unsigned int value;
    
        value = readl(MX6_IO_ADDRESS(OCOTP_BASE_ADDR) + HW_OCOTP_MACn(0));
        mac[5] = value & 0xff;
        mac[4] = (value >> 8) & 0xff;
        mac[3] = (value >> 16) & 0xff;
        mac[2] = (value >> 24) & 0xff;
        value = readl(MX6_IO_ADDRESS(OCOTP_BASE_ADDR) + HW_OCOTP_MACn(1));
        mac[1] = value & 0xff;
        mac[0] = (value >> 8) & 0xff;
    
        return 0;
    }
  • 相关阅读:
    [计算机基础]回调函数
    [Android学习笔记]双缓冲绘图技术
    [数据结构和算法]折半插入排序算法笔记
    为Eclipse添加Java和Android SDK源代码
    Eclipse Tips
    Eclipse常用插件
    [数据结构]基本概念2
    Nginx中让 重写后的路径 自动增加斜线 /
    mysql 断电 启动不了 start: Job failed to start
    uglifyjs 压缩js
  • 原文地址:https://www.cnblogs.com/zengjfgit/p/5615273.html
Copyright © 2011-2022 走看看