realtekwifi: Import from FreeBSD 11.1.

Untested, but requested by Anarchos.
This commit is contained in:
Augustin Cavalier
2018-07-31 19:50:46 -04:00
parent b5c220fb7d
commit 26ae216d0e
7 changed files with 5722 additions and 1 deletions
+1 -1
View File
@@ -206,7 +206,7 @@ SYSTEM_ADD_ONS_DRIVERS_NET = [ FFilterByBuildFeatures
iprowifi2100 iprowifi2200 iprowifi3945 iprowifi4965 iprowifi2100 iprowifi2200 iprowifi3945 iprowifi4965
idualwifi7260 idualwifi7260
marvell88w8363 marvell88w8335 marvell88w8363 marvell88w8335
ralinkwifi ralinkwifi realtekwifi
wavelanwifi wavelanwifi
}@ # x86,x86_64 }@ # x86,x86_64
] ; ] ;
@@ -10,6 +10,7 @@ SubInclude HAIKU_TOP src add-ons kernel drivers network wlan iprowifi4965 ;
SubInclude HAIKU_TOP src add-ons kernel drivers network wlan marvell88w8335 ; SubInclude HAIKU_TOP src add-ons kernel drivers network wlan marvell88w8335 ;
SubInclude HAIKU_TOP src add-ons kernel drivers network wlan marvell88w8363 ; SubInclude HAIKU_TOP src add-ons kernel drivers network wlan marvell88w8363 ;
SubInclude HAIKU_TOP src add-ons kernel drivers network wlan ralinkwifi ; SubInclude HAIKU_TOP src add-ons kernel drivers network wlan ralinkwifi ;
SubInclude HAIKU_TOP src add-ons kernel drivers network wlan realtekwifi ;
SubInclude HAIKU_TOP src add-ons kernel drivers network wlan wavelanwifi ; SubInclude HAIKU_TOP src add-ons kernel drivers network wlan wavelanwifi ;
# FreeBSD 11.2 drivers # FreeBSD 11.2 drivers
@@ -0,0 +1,28 @@
SubDir HAIKU_TOP src add-ons kernel drivers network wlan realtekwifi ;
UseHeaders [ FDirName $(HAIKU_TOP) src libs compat freebsd11_network compat ]
: true ;
UseHeaders [ FDirName $(HAIKU_TOP) src libs compat freebsd11_wlan ] : true ;
UsePrivateHeaders net system ;
UsePrivateKernelHeaders ;
SubDirCcFlags [ FDefines _KERNEL=1 FBSD_DRIVER=1 _XOPEN_SOURCE ]
-Wno-format
-Wno-unused
-Wno-uninitialized ;
UseHeaders [ FDirName $(SUBDIR) ] : true ;
SEARCH_SOURCE += [ FDirName $(SUBDIR) dev rtwn ] ;
KernelAddon realtekwifi :
if_rtwn.c
glue.c
:
libfreebsd11_wlan.a
libfreebsd11_network.a
;
HAIKU_WIFI_FIRMWARE_PACKAGES on realtekwifi = rtwn-rtl8192cfw ;
HAIKU_WIFI_FIRMWARE_ARCHIVES on realtekwifi = rtwn-rtl8192cfw.tgz ;
HAIKU_WIFI_FIRMWARE_DO_EXTRACT on realtekwifi = true ;
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
@@ -0,0 +1,54 @@
/*
* Copyright 2018, Haiku, Inc. All rights reserved.
* Distributed under the terms of the MIT license.
*/
#include <sys/bus.h>
#include <sys/kernel.h>
#include <dev/pci/pcivar.h>
#include <machine/bus.h>
#include <net/if.h>
#include <net/if_media.h>
#include <net80211/ieee80211_var.h>
#include <net80211/ieee80211_amrr.h>
#include <dev/rtwn/if_rtwnreg.h>
HAIKU_FBSD_WLAN_DRIVER_GLUE(realtekwifi, rtwn, pci)
HAIKU_DRIVER_REQUIREMENTS(FBSD_WLAN);
HAIKU_FIRMWARE_VERSION(0);
HAIKU_FIRMWARE_NAME_MAP(2) = {
{"rtwn-rtl8192cfwU", "rtl8192cfwU.ucode"},
{"rtwn-rtl8192cfwU_B", "rtl8192cfwU_B.ucode"},
};
NO_HAIKU_FBSD_MII_DRIVER();
NO_HAIKU_REENABLE_INTERRUPTS();
void rtwn_write_4(struct rtwn_softc *, uint16_t, uint32_t);
uint32_t rtwn_read_4(struct rtwn_softc *, uint16_t);
int
HAIKU_CHECK_DISABLE_INTERRUPTS(device_t dev)
{
struct rtwn_softc* sc = (struct rtwn_softc*)device_get_softc(dev);
uint32_t status;
status = rtwn_read_4(sc, R92C_HISR);
if (status == 0 || status == 0xffffffff) {
return 0;
}
atomic_set((int32*)&sc->sc_intr_status, status);
/* Disable interrupts. */
rtwn_write_4(sc, R92C_HIMR, 0x00000000);
return 1;
}