1/* 2 * Copyright 2008, J��r��me Duval. All Rights Reserved. 3 * Distributed under the terms of the MIT License. 4 */ 5 6#include <sys/bus.h> 7#include <sys/malloc.h> 8#include <sys/rman.h> 9#include <sys/systm.h> 10 11#include <machine/bus.h> 12 13#include <net/if.h> 14 15#include "if_bfereg.h" 16 17 18HAIKU_FBSD_DRIVER_GLUE(broadcom440x, bfe, pci); 19HAIKU_DRIVER_REQUIREMENTS(0); 20 21extern driver_t *DRIVER_MODULE_NAME(bmtphy, miibus); 22 23driver_t * 24__haiku_select_miibus_driver(device_t dev) 25{ 26 driver_t *drivers[] = { 27 DRIVER_MODULE_NAME(bmtphy, miibus), 28 NULL 29 }; 30 31 return __haiku_probe_miibus(dev, drivers); 32} 33 34 35int 36__haiku_disable_interrupts(device_t dev) 37{ 38 struct bfe_softc *sc = device_get_softc(dev); 39 uint32 istat; 40 HAIKU_INTR_REGISTER_STATE; 41 42 HAIKU_INTR_REGISTER_ENTER(); 43 44 istat = CSR_READ_4(sc, BFE_ISTAT); 45 if (istat == 0 || (sc->bfe_ifp->if_drv_flags & IFF_DRV_RUNNING) == 0) { 46 HAIKU_INTR_REGISTER_LEAVE(); 47 return 0; 48 } 49 50 CSR_WRITE_4(sc, BFE_IMASK, 0); 51 CSR_READ_4(sc, BFE_IMASK); 52 53 HAIKU_INTR_REGISTER_LEAVE(); 54 return 1; 55} 56 57 58void 59__haiku_reenable_interrupts(device_t dev) 60{ 61 struct bfe_softc *sc = device_get_softc(dev); 62 CSR_WRITE_4(sc, BFE_IMASK, BFE_IMASK_DEF); 63 CSR_READ_4(sc, BFE_IMASK); 64} 65 66 67