X-Git-Url: https://err.no/cgi-bin/gitweb.cgi?a=blobdiff_plain;ds=sidebyside;f=drivers%2Fide%2Flegacy%2Fbuddha.c;h=e97766aef37417b4bb56b2d9f97b369d6b943b15;hb=ade2daf9c6e57845fe83a24e0a9fa1c03c6e91b1;hp=4a0be251a05fd84ddaa606c2b1161c2c99d93a59;hpb=748c5151deb56e4b7b5a9b07a884243764933831;p=linux-2.6 diff --git a/drivers/ide/legacy/buddha.c b/drivers/ide/legacy/buddha.c index 4a0be251a0..e97766aef3 100644 --- a/drivers/ide/legacy/buddha.c +++ b/drivers/ide/legacy/buddha.c @@ -143,11 +143,11 @@ static int xsurf_ack_intr(ide_hwif_t *hwif) * Probe for a Buddha or Catweasel IDE interface */ -void __init buddha_init(void) +static int __init buddha_init(void) { hw_regs_t hw; ide_hwif_t *hwif; - int i, index; + int i; struct zorro_dev *z = NULL; u_long buddha_board = 0; @@ -156,6 +156,8 @@ void __init buddha_init(void) while ((z = zorro_find_device(ZORRO_WILDCARD, z))) { unsigned long board; + u8 idx[4] = { 0xff, 0xff, 0xff, 0xff }; + if (z->id == ZORRO_PROD_INDIVIDUAL_COMPUTERS_BUDDHA) { buddha_num_hwifs = BUDDHA_NUM_HWIFS; type=BOARD_BUDDHA; @@ -213,8 +215,13 @@ fail_base2: IRQ_AMIGA_PORTS); } - index = ide_register_hw(&hw, NULL, 1, &hwif); - if (index != -1) { + hwif = ide_find_port(hw.io_ports[IDE_DATA_OFFSET]); + if (hwif) { + u8 index = hwif->index; + + ide_init_port_data(hwif, index); + ide_init_port_hw(hwif, &hw); + hwif->mmio = 1; printk("ide%d: ", index); switch(type) { @@ -228,8 +235,16 @@ fail_base2: printk("X-Surf"); break; } - printk(" IDE interface\n"); - } + printk(" IDE interface\n"); + + idx[i] = index; + } } + + ide_device_add(idx); } + + return 0; } + +module_init(buddha_init);