Host drivers using ide_register_hw() and 'initializing == 1':
* ide-pnp
  - depends on ISA
* ide_arm
  - ARM arch specific
  - initialized before all other host drivers
* ide-cris
  - CRIS arch specific => IDE_ARCH_OBSOLETE_INIT is not defined
  - broken
* ide-h8300
  - H8300 arch specific => IDE_ARCH_OBSOLETE_INIT is not defined, no PCI
* buddha/q40/gayle/macide/falconide
  - M68K arch specific => IDE_ARCH_OBSOLETE_INIT is not defined, no PCI
Since the only host drivers which probe interfaces before the above ones are:
* ali14xx/dtc2278/ht6560b/qd65xx/umc8672
  - depend on ISA
  - require IDE_ARCH_OBSOLETE_INIT=y to work
* PCI ones
  - depend on PCI
don't try to unregister interfaces if 'initializing == 1' in ide_register_hw()
(it is possible that built-in host drivers will claim all IDE interfaces but
later ide-pnp host driver will try to unregister them - this change fixes it).
Also skip hwif->hold check if 'initializing == 1' since it is set only by:
* pmac
  - PPC && PMAC specific => no ISA
* au1xxx-ide
  - MIPS && SOC_AU1200 specific => no ISA
and use ide_find_port() helper to find free ide_hwifs[] slot.
Acked-by: Sergei Shtylyov <sshtylyov@ru.mvista.com>
Signed-off-by: Bartlomiej Zolnierkiewicz <bzolnier@gmail.com>
        int index, retry = 1;
        ide_hwif_t *hwif;
 
+       if (initializing) {
+               hwif = ide_find_port(hw->io_ports[IDE_DATA_OFFSET]);
+               if (hwif) {
+                       index = hwif->index;
+                       goto found;
+               }
+               return -1;
+       }
+
        do {
                for (index = 0; index < MAX_HWIFS; ++index) {
                        hwif = &ide_hwifs[index];
                        hwif = &ide_hwifs[index];
                        if (hwif->hold)
                                continue;
-                       if ((!hwif->present && !hwif->mate && !initializing) ||
-                           (!hwif->io_ports[IDE_DATA_OFFSET] && initializing))
+                       if (!hwif->present && hwif->mate == NULL)
                                goto found;
                }
                for (index = 0; index < MAX_HWIFS; index++)