ничего себе можно попробовать пепебрать все PCI устройства и выделить среди них SuperIO по коду класса. Затем посмотреть Vendor/Device ID можно попробовать тупо полезть в регистры самого io и поискать идентификатор там
Kirillxskynet Открытого стандарта я не встречал. Судя по документации все похоже, но различия есть, так что качаем спецификации на все самые популярные Super I/O устройства. Через один из порты 2Eh и 2Fh(или 4Eh и 4Fh) осуществляется доступ к таблицам настройки устройств. Структура этих таблиц напоминает PnP. Собственно 2Eh - порт адресса 2Fh порт данных. По адрессу 20h-21h у Winbond и IT87 лежит идентификатор. Насчет протокола общения, перед тем как что-то прочитать нужно инициировать доступ к этим таблицам. Код (Text): ; Иницилизация режима доступа MOV DX,2Eh MOV AL,87h OUT DX,AL OUT DX,AL ; Тут уже можно читать писать в глобальные регистры. MOV DX,2Eh MOV AL,20h OUT DX,AL MOV DX,2Fh MOV AL,20h IN AL, DX MOV CL,AL MOV DX,2Fh MOV AL,21h IN AL, DX MOV CH,AL ; Теперь по идее в CX лежит ID устройства. ; код не проверял набирал прямо сдесь ; для доступа к локальным нужно установить номер тоблицы. ; выход ;тут различные протоколы. Nouzui К PCI это не имеет отношение.
У меня IT8712F Там должно лежать Адресс значение 20h 87h 21h 12h У IT8705F 20h 87h 21h 05h У W83627THF 20h 82h 21h 8h
они не только на 2E/2F или 4E/4F, есть и на других диапазонах. На части чипов можно менять базу портов strap'ами. Отчасти поэтому в lm-sensors порты описываются не фиксироваными адресами, а диапазонами, которые собственно и сканятся при поиске SIO-чипа. Лично мне в исходниках lm-sensors лень было копаться, поэтому я инфу брал из CPU-Z. Там по крайней мере нет такого столпотворения с мониторинг-чипами на SMBus, как в lm-sensor'ах. CPU-Z кстати со сканом диапазонов не заморачивается, исключительно фиксированный набор баз портов. Базу и метод работы с чипом детектит методом проб и ошибок.
может быть.. мне казалось, что у sio обычно есть конфиг на pci кстати, порты и разрешающая последовательность у каждой микросхемы своя
_BC_ LM сенсор я копал. Но он мне не нравиться. Да и способ детекта у них не практичный. А во вторых они ищут в 290h или в адрессах SMBus. Причем эти адреса настраевыемые и делается эта настройка через те порты о которых я писал выше. Я не иду на поводу у lm-sensors. А предлогаю иной способ, другии порты другии ID.
lm-sensors вроде тоже этот способ использует для Super I/O чипов, помимо сканов по диапазонам. А в CPU-Z это основной и единственный способ детекта чипа и взятия базы мониторинг-чипа. Помимо 87h 87h CPU-Z еще 55h и 87h 01h 55h 55h пробует.
Верно говорит _BC_ - для "правильного" детекта мультиков нужно использовать базу используемых портов, на которых оные могут сидеть. База нарабатывается собственными усилиями. Для кого-то эти "усилия" будут выражаться в расколупывании уже работающих с этим программ , для кого-то (что правильней, но много сложней) перекапыванию всевозможных биосов.
Есть еще один "правильный" способ - поиск по инету всех доступных даташитов вот, кстати, немного: Код (Text): 1. SID|SRID (FF - undefine) 2. SRID index 3. Index Register 4. Index2 Register 5. LDN list 6. Config entry set 'IT8702F' 8702h 21h 2Eh 4Eh 0Bh,00h,01h,02h,03h,04h,05h,06h,07h,08h,09h,0Ah 87h,01h,55h,55h 'IT8712F' 8712h 21h 2Eh 4Eh 0Bh,00h,01h,02h,03h,04h,05h,06h,07h,08h,09h,0Ah 87h,01h,55h,55h 'IT8706R' 8706h 21h 2Eh 4Eh 0Bh,00h,01h,02h,03h,04h,05h,06h,07h,08h,09h,0Ah 87h,06h,55h,55h 'IT8710F' 8710h 21h 2Eh 4Eh 0Bh,00h,01h,02h,03h,04h,05h,06h,07h,08h,09h,0Ah 87h,87h 'W83977EF' 52F7h 21h 3F0h 370h 01h,00h 87h,87h 'W83627HF' 5217h 21h 2Eh 4Eh 0Ah,00h,01h,02h,03h,05h,06h,07h,08h,09h,0Ah 87h,87h 'W83627HF' 5213h 21h 2Eh 4Eh 0Ah,00h,01h,02h,03h,05h,06h,07h,08h,09h,0Ah 87h,87h 'PC8739x' 0EA17h 27h 2Eh 4Eh 01h,00h 'FDC37M70x',0 4200h 21h 3F0h 370h 01h,00h 55h Config entry set, кажется, нужно запихивать в индексный регистр. Регистр даных, соответственно, отображается на следующий по номеру порт