
отключил впаяный мост подняв на нем ножку идсел и линию ад22 прицепил на внешний мост, подняв на нем эту ногу тоже. еще прицепил необходимые линии serirq и ppdmareq ppdmagnt. мост заработал, биос прописал его конфигурацию. в результате ситуация повторилась, гусь не работает, остальные платы работают. при инициализации кодека сигнал SBHE становится высоким, но никакие биты говорящие о том, что произошла инициализация в адресном пространстве не появляются
буду признателен за идеи как его запустить.
п.с. гусь не пнп, остальные две платы пнп
п.п.с.
здесь успешный запуск одной из других плат
http://www.youtube.com/watch?v=nlYXbxQneG8&list=UULAp_q5UwwtJTYMRLuEtrvw
п.п.п.с.
здесь инит гуся, если кому интересно, но он бесполезен если устройство не отвечает на команды
#include <dos.h>
#include <conio.h>
#include "forte.h"
#include "ultraerr.h"
#include "gf1os.h"
#include "extern16.h"
#include "defs16.h"
#include "codecos.h"
#include "codec.h"
#include "proto16.h"
extern ULTRA16_DATA _codec_data;
extern IMAGE16 _image_codec;
extern ULTRA_DATA _gf1_data;
static void waste_time(unsigned int val)
{
int i,j;
for (i=0;i<val;i++)
for (j=0;j<1000;j++)
;
}
int
Ultra16Probe(gus_base,config)
int gus_base;
ULTRA16_CFG *config;
{
unsigned char version=0;
unsigned int setup;
unsigned char bits;
unsigned int port;
int enable_16;
int temp;
port = config->base_port;
_codec_data.type = config->type;
_codec_data.base_port = port;
_codec_data.addr = port+CODEC_ADDR;
_codec_data.data = port+CODEC_DATA;
_codec_data.status = port+CODEC_STATUS;
_codec_data.pio = port+CODEC_PIO;
switch(config->type)
{
case 0:
break; /* daughter card */
case 1: /* UltraMAX */
{
setup = 0x00; /* default codec to disabled */
enable_16 = FALSE;
if (port >= 0x300 && port <= 0x3f0)
{
enable_16 = TRUE;
bits = (port - 0x30C) >> 4; /* isolate bits */
setup |= bits;
}
if (enable_16)
setup |= 0x40;
if (config->rec_dma >= 4)
setup |= 0x10; /* record is 16 bit channel */
if (config->play_dma >= 4)
setup |= 0x20; /* play is 16 bit channel */
_codec_data.setup = setup; /* save to toggle later */
outp(gus_base+0x106,setup); /* program the interface */
waste_time(100); /* probably not needed ... */
break; /* UltraMax */
}
}
/* clear any pending IRQs */
(void)inp(_codec_data.status);
outp(_codec_data.status,0);
for (temp=0;temp<1000;temp++)
{
if (inp(_codec_data.base_port) & CODEC_INIT)
waste_time(1); /* probably not needed ... */
else
{
version = Ultra16Revision();
if ((version >= 1) && (version < 15))
{
/* Don't combine if an UltraMax */
if ((config->play_dma == config->rec_dma) && (config->type != 1))
_image_codec.ic |= SINGLE_DMA;
ENTER_CRITICAL;
outp(_codec_data.addr,CODEC_MCE|IFACE_CTRL);
outp(_codec_data.data,_image_codec.ic);
outp(_codec_data.addr,IFACE_CTRL);
LEAVE_CRITICAL;
return(ULTRA_OK);
}
}
}
if ((version >= 1) && (version < 15))
{
/* Don't combine if an UltraMax */
if ((config->play_dma == config->rec_dma) && (config->type != 1))
_image_codec.ic |= SINGLE_DMA;
ENTER_CRITICAL;
outp(_codec_data.addr,CODEC_MCE|IFACE_CTRL);
outp(_codec_data.data,_image_codec.ic);
outp(_codec_data.addr,IFACE_CTRL);
LEAVE_CRITICAL;
return(ULTRA_OK);
}
else
return(NO_ULTRA);
}
Пока только мысль относительно отличий содержимого EEPROM на плате и на карте
Сравните PCI регистры когда работает встроенный мост и когда внешний.
Другие non-PNP ISA card, например ISA-POST card работают?
init для какой OS Вы писали?
И мне кажется может быть IDSEL не брать с платы, использовать карту штатно.
А потом сравнить инициализацию регистров и при нахождении отличий модифицировать
драйвер моста или написать драйвер делающий необходимую инициализацию
Кстати как решается проблема ISA DMA штатно, если нет PC/PCI разъема?
Производитель припайку проводов вряд-ли предусматривал:)
Поскольку это выход со стороны звуковой карты для удлинения
шинного цикла(низким уровнем), следует тщательно
проверить осциллографом что там делается.
Может быть просто проблема с уровнями сигналов
(типа звуковоя карта пытается выставить "1", но из-за
повышеного входного тока ITE, это не удается).
Из широко распространенных non-PNP карт могу предложить
проверить с ISA модемом. Они в большинстве своем имеют
перемычки для отключения PNP и ручного выставления IRQ
и I/O port address.
Да и про DMA пока забудем, надо проверить простое read/write
I/O портов.
А с другими ISA картами, но с этим же мостом какой уровень?
Просто в порядке первого что пришло в голову : может быть звуковая карта
требует удлинения шинного цикла низким уровнем сигнала IOCHRDY, но ITE
почему-то этого не делает.
в режиме ISA-master(стр9).То есть когда ISA карта является
инициатором, а ITE исполнителем. Похоже у Вас так и есть.
Проверьте вход MASTER# N11, пересмотрите datasheet
(Я бегло смотрел и возможно что-то упустил).
удалось вернуть высокий урвень iochrdy на 5в (просаживал напряжение светодиод), но это не помогло