Чтение данных из EEPROM в модуле ядра Linux - PullRequest
0 голосов
/ 19 марта 2019

Мне нужно прочитать MAC-адрес из EEPROM и установить его для сетевого интерфейса во время инициализации интерфейса.
И я последовал за комментарием из Чтение записи EEPROM из модуля linux для чтения EEPROM через sysfs , Но результат не удался.

Когда я открывал файл EEPROM через filp_open (), он всегда возвращает указатель ошибки с -EACCESS.

struct file *kernel_open(const char *filename, int flags, umode_t mode) {
    struct file *filp = NULL;
    mm_segment_t oldfs = get_fs();
    set_fs(get_ds());
    filp = filp_open(filename, flags, mode);
    set_fs(oldfs);
    return filp;
}

const char *filename = "/sys/bus/i2c/devices/6-0054/eeprom";
struct file filp = kernel_open(filename, O_RDONLY, 0);
if (IS_ERR(filp)) {
    printk(KERN_ERR "Failed to open file (code: %d)\n", PTR_ERR(filp));
    return; <-- always return here and filp value with -13, aka -EACCESS, aka Permission denied
}

Есть идеи?

[Обновлено]
- Процессор: AST2500 (ARMv6)
- Версия ядра: 4.19
- ЭСППЗУ: at24c64

...