Wie zu Lesen vom I2C-EEPROM von Linux-kernel - ARM-TI AM3352

Auf meinem board habe ich ein I2C EEPROM speichert Konfigurationsdaten. UBoot liest mit den read_eeprom Funktion unten dargestellt. Ich würde auch gerne Zugriff auf diese Informationen aus dem inneren der Linux-kernel so, dass mein /proc/cpuinfo Ausgabe zeigt richtig. Aber ich kann nicht finden, die gleichwertige Funktionen i2c_probe und i2c_read in den Linux-kernel. Wie mache ich das unter Funktionen innerhalb des Kernels? Ich bin mit 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;
}
  • Können Sie das Linux-kernel-version Sie verwenden?
  • Können Sie auch erklären, was Sie tun möchten. Tun Sie wirklich brauchen, zu Lesen, das EEPROM aus dem kernel? Sie möchten, ändern Sie die /proc/cpuinfo Ausgabe?
  • Linux-kernel 3.2. Ich will /proc/cpuinfo auf display board-Typ und Serien-Nr., beide sind gespeichert im EEPROM.
  • Sie können dies tun, in ein u-boot-Skript setzt die ATAGS oder DT, das an den Linux-kernel. Andernfalls müssen Sie die setup-Adressen, etc von einem i2c-controller und dann auf einrichten der Peripheriegeräte zum Lesen dieser Werte. Sprich, Sie benötigen eine i2c-controller-Treiber und einen EEPROM_ADDR Treiber und dann müssen Sie füllen Sie die cpuinfo Variablen; schon fertig mit ATAGS.
  • Das ist ein guter Kommentar @artlessnoise ich werde untersuchen, die ATAGS Ansatz.
InformationsquelleAutor fred basset | 2014-05-13
Schreibe einen Kommentar