如何从Linux内核读取I2C EEPROM - ARM TI AM3352

时间:2014-05-13 18:43:37

标签: linux arm i2c u-boot eeprom

在我的主板上,我有一个存储配置信息的I2C EEPROM。 UBoot使用下面显示的read_eeprom函数读取它。我还想从Linux内核中访问这些信息,以便我的/ proc / cpuinfo输出正确显示。但是我在Linux内核中找不到i2c_probe和i2c_read的等效功能。如何从内核中执行以下功能?我正在使用Linux 3.2。

static int read_eeprom(void)
{
        /* Check if baseboard eeprom is available */
        if (i2c_probe(CONFIG_SYS_I2C_EEPROM_ADDR)) {
                puts("Could not probe the EEPROM; something fundamentally "
                        "wrong on the I2C bus.\n");
                return -ENODEV;
        }

        /* read the eeprom using i2c */
        if (i2c_read(CONFIG_SYS_I2C_EEPROM_ADDR, 0, 2, (uchar *)&header,
                                                        sizeof(header))) {
                puts("Could not read the EEPROM; something fundamentally"
                        " wrong on the I2C bus.\n");
                return -EIO;
        }

        if (header.magic != 0xEE3355AA) {
                /*
                 * read the eeprom using i2c again,
                 * but use only a 1 byte address
                 */
                if (i2c_read(CONFIG_SYS_I2C_EEPROM_ADDR, 0, 1,
                                        (uchar *)&header, sizeof(header))) {
                        puts("Could not read the EEPROM; something "
                                "fundamentally wrong on the I2C bus.\n");
                        return -EIO;
                }

                if (header.magic != 0xEE3355AA) {
                        printf("Incorrect magic number (0x%x) in EEPROM\n",
                                        header.magic);
                        return -EINVAL;
                }
        }

        return 0;
}

2 个答案:

答案 0 :(得分:1)

为了解决您的问题,需要考虑一些问题:

  • 您自己构建内核吗?你的董事会是定制的吗?

  • 你真的需要进入内核吗?

  • 你真的需要把你的信息放在procfs中吗?特别是在cpuinfo或自定义procfs文件中可能是足够的(procfs interfaceguide to procfs)?

  • 使用i2c-tools或检查sysfs(/ sys / class / i2c *)获取有关EEPROM的信息

  • 您的EEPROM I2C设备如何注册(many ways)?

  • 确定您介绍代码的位置,并确保在设备注册后运行。你会在staging中创建自己的内核模块吗?你会修补你的EEPROM驱动程序吗?

  • 了解如何访问和更新procfs' cpuinfo

根据您的实际需求和配置,解决问题的方法可能会发生变化。

答案 1 :(得分:1)

您是否尝试使用eeprog实用程序,我在过去使用它来阅读eeprom的内容。它可以在线获取,您可以将其移植到您的应用程序中。

http://www.codesink.org/eeprog.html