Удалось кое что раскопать с трансляцией адресов I/O ISA шины Arbor Em104-a5362 (написано v1.0).
Цель: Хочется прицепить платку АЦП с базовым адресом 300h и 16 прилигающими регистрами, а еще чтобы она заработала.
Из мануала к этой версии Arbor узнаем, что необходимо в BIOS настроить трансляцию I/O адресов. Вроде все просто, указываем базовый адрес, количество регистров и должно быть счастье... Пишем небольшой кодик для работы с АЦП.. запускаем.. не работает.. Перетаскиваем платку АЦП на предыдущюю версию Arbor Em104-n513 - работает.. А программировать мост PCI-ISA IT8888G ой как ломает.. да и где-то тут на форуме прочитал, что если PC-104 сломается, то нигде их не ремонтируют ; ) (Шеф в гневе.. бонусы превращаются в анусы.. засада одним словом).
Вот здесь тяним документ
http://www.ite.com.tw/product_info/file/pc/IT8888G_V0.9.pdf и в таблице 6-1 IT8888G Configuration registr map видим знакомые букавки, содержимое которых можно посмотреть утилитой show_pci -vv.
Ищем устройство Vendor ID=1283h, Device ID=8888h, смотрим содержимое
Device Dependent Registers:
0x40: 00 00 00 00 00 00 00 00 ff 00 02 00 02 00 02 00
0x50: 20 f0 ff 01 3f 3f 00 8c 70 0a 00 a4 00 30 00 c4
Нас интересуют содержимое регистров с 5Ch до 5Fh, т.к. свой АЦП указали в IO Space 1.
Вот их содержимое (крайние четыре байта):00 30 00 c4.
Пытаемся понять эти цифири из пункта 6.3.13 Positively Decoded IO_Space_1 Register мануала IT8888G. Итого наш адрес располагается в 5Ch и 5Dh, т.е. show_pci нам говорит, что вместо 300h адреса, указанного через BIOS, влетает 3000h.
Начинают терзать смутные сомнения, что при вводе базового адреса в BIOS происходит сдвиг на 4 бита в лево.
Проверяем. В BIOS в IO_Space_1 указываем базовы адрес 30h.
Загружаемся и проверяем содержимое карты регистров show_pci -vv.
Device Dependent Registers:
0x40: 00 00 00 00 00 00 00 00 ff 00 02 00 02 00 02 00
0x50: 20 f0 ff 01 3f 3f 00 8c 70 0a 00 a4 00 03 00 c4
Теперь вроде все на своих местах. 300h
Пущаем нашу злобную АЦПешную тестовую софтину на Em104-a5362. Все работает.