Несколько месяцев назад мне пришлось написать небольшой инструмент для программирования eeprom карты rtl8139. По сути, это инструмент rtl8139-diag, урезанный для чтения/записи eeprom.
Этот инструмент должен быть расширен, чтобы теперь можно было запрограммировать eeprom карт rtl8101. Это не проблема, так как интерфейс eeprom аналогичен интерфейсу rtl8139. Собственно, разница только в содержимом eeprom-файла.
Что я хочу реализовать, так это автоматическое определение, которое проверяет, является ли карта с заданным адресом порта rtl8139 или rtl8101, и выбирает подходящий дамп eeprom. Я не могу определить разницу между этими чипами, читая eeprom, так как карты, которые нужно запрограммировать, являются «девственными», а содержимое eeprom в основном 0xffff
.
Я заметил, что Linux всегда загружает подходящий драйвер для этих карт, независимо от содержимого eeprom. Поэтому я думаю, что мне просто нужно прочитать чип-идентификатор карты.
Как я могу это сделать?