Messages in this thread | | | Date | Fri, 23 May 2003 00:52:27 +0200 (MET DST) | From | Bartlomiej Zolnierkiewicz <> | Subject | Re: IDE 2.5.69 possible bogosity... |
| |
On Thu, 22 May 2003, Ian Molton wrote:
> Hi. > > Im wondering if this is correct. is the test for initializing in the > second for loop correct?
Unfortunately, yes.
> Im building an IDE driver into my kernel that calls ide_register_hw() > twice to register its primary and secondary ports, but only the > secondary port is recognised. the first fails, since the test in the > first for loop fails and so does the second, so it then 'unregisters'
Too little information, your MAX_HWIFS and default io ports?
> it, despite never having been registered. somehow, this puts my drive > INTO the hwif array, so the secondary interface registers OK, passing > the other tests.
Where is your driver?
> a hack that allowed the primary interface to register was to register it > twice, but that sucks. > > int ide_register_hw (hw_regs_t *hw, ide_hwif_t **hwifp) > { > int index, retry = 1; > ide_hwif_t *hwif; > > do { > for (index = 0; index < MAX_HWIFS; ++index) { > hwif = &ide_hwifs[index]; > if (hwif->hw.io_ports[IDE_DATA_OFFSET] == > hw->io_ports[IDE_DATA_OFFSET]) > goto found; > } > for (index = 0; index < MAX_HWIFS; ++index) { > hwif = &ide_hwifs[index]; > > *** is the test for initialising (not the !initialising one) here ok? > *** > > if ((!hwif->present && !hwif->mate && !initializing) > || > (!hwif->hw.io_ports[IDE_DATA_OFFSET] && > initializing)) > goto found; > } > for (index = 0; index < MAX_HWIFS; index++) > ide_unregister(index); > } while (retry--);
- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
| |