1/* 2 * Copyright 2018, Haiku, Inc. All rights reserved. 3 * Distributed under the terms of the MIT license. 4 */ 5 6 7#include <sys/bus.h> 8#include <sys/kernel.h> 9 10#include <dev/pci/pcivar.h> 11 12#include <machine/bus.h> 13 14#include <net/if.h> 15#include <net/if_media.h> 16 17#include <net80211/ieee80211_var.h> 18#include <net80211/ieee80211_amrr.h> 19 20#include <dev/rtwn/if_rtwnvar.h> 21#include <dev/rtwn/pci/rtwn_pci_var.h> 22 23 24extern driver_t* DRIVER_MODULE_NAME(rtwn_pci, pci); 25extern driver_t* DRIVER_MODULE_NAME(rtwn_usb, uhub); 26 27HAIKU_FBSD_WLAN_DRIVERS_GLUE(realtekwifi) 28HAIKU_DRIVER_REQUIREMENTS(FBSD_WLAN); 29HAIKU_FIRMWARE_VERSION(0); 30HAIKU_FIRMWARE_NAME_MAP({ 31 {"rtwn-rtl8188eefw", "rtwn-rtl8188eefw.ucode"}, 32 {"rtwn-rtl8188eufw", "rtwn-rtl8188eufw.ucode"}, 33 {"rtwn-rtl8192cfwE", "rtwn-rtl8192cfwE.ucode"}, 34 {"rtwn-rtl8192cfwE_B", "rtwn-rtl8192cfwE_B.ucode"}, 35 {"rtwn-rtl8192cfwU", "rtwn-rtl8192cfwU.ucode"}, 36 {"rtwn-rtl8192cfwT", "rtwn-rtl8192cfwT.ucode"}, 37 {"rtwn-rtl8192eufw", "rtwn-rtl8192eufw.ucode"}, 38 {"rtwn-rtl8812aufw", "rtwn-rtl8812aufw.ucode"}, 39 {"rtwn-rtl8821aufw", "rtwn-rtl8821aufw.ucode"}, 40}); 41 42NO_HAIKU_FBSD_MII_DRIVER(); 43NO_HAIKU_REENABLE_INTERRUPTS(); 44 45 46status_t 47__haiku_handle_fbsd_drivers_list(status_t (*handler)(driver_t *[], driver_t *[])) 48{ 49 driver_t *pci_drivers[] = { 50 DRIVER_MODULE_NAME(rtwn_pci, pci), 51 NULL 52 }; 53 driver_t *usb_drivers[] = { 54 DRIVER_MODULE_NAME(rtwn_usb, uhub), 55 NULL 56 }; 57 return (*handler)(pci_drivers, usb_drivers); 58} 59 60 61int 62HAIKU_CHECK_DISABLE_INTERRUPTS(device_t dev) 63{ 64 struct rtwn_pci_softc* pc = (struct rtwn_pci_softc*)device_get_softc(dev); 65 int32_t status, tx_rings; 66 67 status = rtwn_pci_get_intr_status(pc, &tx_rings); 68 if (status == 0 && tx_rings == 0) 69 return 0; 70 71 atomic_set(&pc->pc_intr_status, status); 72 atomic_set(&pc->pc_intr_tx_rings, tx_rings); 73 74 return 1; 75} 76