View | Details | Raw Unified | Return to bug 24177
Collapse All | Expand All

(-)if_fxp.c 2000/07/25 18:53:08 (-2 / +30 lines)
Lines 515-520 Link Here
515
       return ENXIO;
515
       return ENXIO;
516
}
516
}
517
517
518
#define FXP_PREFER_IOSPACE
519
518
static int
520
static int
519
fxp_attach(device_t dev)
521
fxp_attach(device_t dev)
520
{
522
{
Lines 533-544 Link Here
533
        * Enable bus mastering.
535
        * Enable bus mastering.
534
        */
536
        */
535
       val = pci_read_config(dev, PCIR_COMMAND, 2);
537
       val = pci_read_config(dev, PCIR_COMMAND, 2);
538
#ifdef FXP_PREFER_IOSPACE       /*XXX*/
539
       val |= (PCIM_CMD_PORTEN|PCIM_CMD_BUSMASTEREN);
540
#else
536
       val |= (PCIM_CMD_MEMEN|PCIM_CMD_BUSMASTEREN);
541
       val |= (PCIM_CMD_MEMEN|PCIM_CMD_BUSMASTEREN);
542
#endif
537
       pci_write_config(dev, PCIR_COMMAND, val, 2);
543
       pci_write_config(dev, PCIR_COMMAND, val, 2);
538
544
539
       /*
545
       /*
540
        * Map control/status registers.
546
        * Map control/status registers.
541
        */
547
        */
548
#ifdef FXP_PREFER_IOSPACE       /*XXX*/
549
       device_printf(dev, "using i/o space access\n");
550
       rid = FXP_PCI_IOBA;
551
       sc->io = bus_alloc_resource(dev, SYS_RES_IOPORT, &rid,
552
                                    0, ~0, 1, RF_ACTIVE);
553
       if (!sc->io) {
554
               device_printf(dev, "could not map memory\n");
555
               error = ENXIO;
556
               goto fail;
557
        }
558
559
       sc->sc_st = rman_get_bustag(sc->io);
560
       sc->sc_sh = rman_get_bushandle(sc->io);
561
562
#else
542
       rid = FXP_PCI_MMBA;
563
       rid = FXP_PCI_MMBA;
543
       sc->mem = bus_alloc_resource(dev, SYS_RES_MEMORY, &rid,
564
       sc->mem = bus_alloc_resource(dev, SYS_RES_MEMORY, &rid,
544
                                    0, ~0, 1, RF_ACTIVE);
565
                                    0, ~0, 1, RF_ACTIVE);
Lines 550-556 Link Here
550
571
551
       sc->sc_st = rman_get_bustag(sc->mem);
572
       sc->sc_st = rman_get_bustag(sc->mem);
552
       sc->sc_sh = rman_get_bushandle(sc->mem);
573
       sc->sc_sh = rman_get_bushandle(sc->mem);
553
574
#endif
554
       /*
575
       /*
555
        * Allocate our interrupt.
576
        * Allocate our interrupt.
556
        */
577
        */
Lines 575-581 Link Here
575
               /* Failed! */
596
               /* Failed! */
576
               bus_teardown_intr(dev, sc->irq, sc->ih);
597
               bus_teardown_intr(dev, sc->irq, sc->ih);
577
               bus_release_resource(dev, SYS_RES_IRQ, 0, sc->irq);
598
               bus_release_resource(dev, SYS_RES_IRQ, 0, sc->irq);
599
#ifdef FXP_PREFER_IOSPACE /* XXX */
578
               bus_release_resource(dev, SYS_RES_MEMORY, FXP_PCI_MMBA, sc->mem);
600
               bus_release_resource(dev, SYS_RES_MEMORY, FXP_PCI_MMBA, sc->mem);
601
#else
602
               bus_release_resource(dev, SYS_RES_IOPORT, FXP_PCI_IOBA, sc->io);
603
#endif
579
               error = ENXIO;
604
               error = ENXIO;
580
               goto fail;
605
               goto fail;
581
       }
606
       }
Lines 639-646 Link Here
639
        */
664
        */
640
       bus_teardown_intr(dev, sc->irq, sc->ih);
665
       bus_teardown_intr(dev, sc->irq, sc->ih);
641
       bus_release_resource(dev, SYS_RES_IRQ, 0, sc->irq);
666
       bus_release_resource(dev, SYS_RES_IRQ, 0, sc->irq);
667
#ifdef FXP_PREFER_IOSPACE /* XXX */
668
       bus_release_resource(dev, SYS_RES_IOPORT, FXP_PCI_IOBA, sc->io);
669
#else
642
       bus_release_resource(dev, SYS_RES_MEMORY, FXP_PCI_MMBA, sc->mem);
670
       bus_release_resource(dev, SYS_RES_MEMORY, FXP_PCI_MMBA, sc->mem);
643
671
#endif
644
       /*
672
       /*
645
        * Free all the receive buffers.
673
        * Free all the receive buffers.
646
        */
674
        */
(-)if_fxpvar.h 2000/07/25 18:28:23 (+1 lines)
Lines 46-51 Link Here
46
#else
46
#else
47
       struct arpcom arpcom;           /* per-interface network data */
47
       struct arpcom arpcom;           /* per-interface network data */
48
       struct resource *mem;           /* resource descriptor for registers */
48
       struct resource *mem;           /* resource descriptor for registers */
49
       struct resource *io;            /* resource descriptor for registers */
49
       struct resource *irq;           /* resource descriptor for interrupt */
50
       struct resource *irq;           /* resource descriptor for interrupt */
50
       void *ih;                       /* interrupt handler cookie */
51
       void *ih;                       /* interrupt handler cookie */
51
#endif /* __NetBSD__ */
52
#endif /* __NetBSD__ */

Return to bug 24177