> 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/