[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[pbsd-mg2] Re: Cassiopeia E-500 (Re: GIU-ISA bridge)
| uch> としてみるとか。MC-R300やFreestyleの場合は、foundが3,4なので、step 0x1000でもこれで
| uch> ふるいにかけれます。(本当にControler 1 Socket Aだけだったらだめですけど)
|
| アドバイスありがとうございます。
|
| 0x1000刻みと 0x100刻みを試してみたのですが、残念ながら foundが1を越える
| ケースはありませんでした。。
下のような感じで、0x82,0x83のみサーチあるいは、found>1 で2刻みに全部
調べてみるとどうでしょう? これでみつからなければ、なんのPCICが載って
るのか中を調べた方がいいかも...
---
UCHIYAMA Yasushi
uch@nop.or.jp
#ifdef DEBUG_FIND_PCIC
#warning DEBUG_FIND_PCIC
static void
__find_pcic(void)
{
int i, j, step, found;
u_int32_t addr;
u_int8_t reg;
int __read_revid (u_int32_t port)
{
addr = MIPS_PHYS_TO_KSEG1(i + port);
// printf("%#x\r", i);
for (found = 0, j = 0; j < 0x100; j += 0x40) {
*((volatile u_int8_t*)addr) = j;
reg = *((volatile u_int8_t*)(addr + 1));
#ifdef DEBUG_FIND_PCIC_I82365SL_ONLY
if (reg == 0x82 || reg == 0x83) {
#else
if ((reg & 0xc0) == 0x80) {
#endif
found++;
}
}
#if 0
if (found>1)
#else
if (found)
#endif
printf("\nfound %d socket at %#x (base from %#x)\n", found, addr,
i + port - VR_ISA_PORT_BASE);
};
step = 0x2;
printf("\nFinding PCIC. Trying ISA port %#x-%#x step %#x\n",
VR_ISA_PORT_BASE, VR_ISA_PORT_BASE + VR_ISA_PORT_SIZE, step);
for (i = VR_ISA_PORT_BASE; i < VR_ISA_PORT_BASE+VR_ISA_PORT_SIZE; i+= step) {
__read_revid (0);
}
}
#endif