From 05216554a40483afe76ab338f9d0a7d802f76940 Mon Sep 17 00:00:00 2001 From: Augustin Cavalier Date: Thu, 24 Feb 2022 21:15:44 -0500 Subject: [PATCH] realtekwifi: Compile with USB support and expose the necessary structures. Tested with an 8821AU. It works, hurrah! --- .../drivers/network/wlan/realtekwifi/Jamfile | 78 +++++++++++++++++++ .../drivers/network/wlan/realtekwifi/glue.c | 26 ++++++- 2 files changed, 103 insertions(+), 1 deletion(-) diff --git a/src/add-ons/kernel/drivers/network/wlan/realtekwifi/Jamfile b/src/add-ons/kernel/drivers/network/wlan/realtekwifi/Jamfile index d267c2927e..94e32243ca 100644 --- a/src/add-ons/kernel/drivers/network/wlan/realtekwifi/Jamfile +++ b/src/add-ons/kernel/drivers/network/wlan/realtekwifi/Jamfile @@ -15,10 +15,19 @@ UseHeaders [ FDirName $(SUBDIR) ] : true ; SEARCH_SOURCE += [ FDirName $(SUBDIR) dev rtwn ] ; SEARCH_SOURCE += [ FDirName $(SUBDIR) dev rtwn pci ] ; +SEARCH_SOURCE += [ FDirName $(SUBDIR) dev rtwn usb ] ; SEARCH_SOURCE += [ FDirName $(SUBDIR) dev rtwn rtl8188e ] ; SEARCH_SOURCE += [ FDirName $(SUBDIR) dev rtwn rtl8188e pci ] ; +SEARCH_SOURCE += [ FDirName $(SUBDIR) dev rtwn rtl8188e usb ] ; SEARCH_SOURCE += [ FDirName $(SUBDIR) dev rtwn rtl8192c ] ; SEARCH_SOURCE += [ FDirName $(SUBDIR) dev rtwn rtl8192c pci ] ; +SEARCH_SOURCE += [ FDirName $(SUBDIR) dev rtwn rtl8192c usb ] ; +SEARCH_SOURCE += [ FDirName $(SUBDIR) dev rtwn rtl8192e ] ; +SEARCH_SOURCE += [ FDirName $(SUBDIR) dev rtwn rtl8192e usb ] ; +SEARCH_SOURCE += [ FDirName $(SUBDIR) dev rtwn rtl8812a ] ; +SEARCH_SOURCE += [ FDirName $(SUBDIR) dev rtwn rtl8812a usb ] ; +SEARCH_SOURCE += [ FDirName $(SUBDIR) dev rtwn rtl8821a ] ; +SEARCH_SOURCE += [ FDirName $(SUBDIR) dev rtwn rtl8821a usb ] ; KernelAddon realtekwifi : glue.c @@ -39,6 +48,13 @@ KernelAddon realtekwifi : rtwn_pci_rx.c rtwn_pci_tx.c + # usb/ + rtwn_usb_attach.c + rtwn_usb_ep.c + rtwn_usb_reg.c + rtwn_usb_rx.c + rtwn_usb_tx.c + # rtl8188e/ r88e_beacon.c r88e_calib.c @@ -56,6 +72,10 @@ KernelAddon realtekwifi : r88ee_init.c r88ee_rx.c + # rtl8188e/usb/ + r88eu_attach.c + r88eu_init.c + # rtl8192c/ r92c_attach.c r92c_beacon.c @@ -77,7 +97,65 @@ KernelAddon realtekwifi : r92ce_led.c r92ce_rx.c r92ce_tx.c + + # rtl8192c/usb/ + r92cu_attach.c + r92cu_init.c + r92cu_led.c + r92cu_rx.c + r92cu_tx.c + + # rtl8192e/ + r92e_chan.c + r92e_fw.c + r92e_init.c + r92e_led.c + r92e_rf.c + r92e_rom.c + r92e_rx.c + + # rtl8192e/usb/ + r92eu_attach.c + r92eu_init.c + + # rtl8812a/ + r12a_beacon.c + r12a_calib.c + r12a_caps.c + r12a_chan.c + r12a_fw.c + r12a_init.c + r12a_led.c + r12a_rf.c + r12a_rom.c + r12a_rx.c + r12a_tx.c + + # rtl8812a/usb/ + r12au_attach.c + r12au_init.c + r12au_rx.c + r12au_tx.c + + # rtl8821a/ + r21a_beacon.c + r21a_calib.c + r21a_chan.c + r21a_fw.c + r21a_init.c + r21a_led.c + r21a_rom.c + r21a_rx.c + + # rtl8821a/usb/ + r21au_attach.c + r21au_dfs.c + r21au_init.c : freebsd_wlan.a libfreebsd_network.a ; + +ObjectHdrs [ FGristFiles rtwn_usb_attach$(SUFOBJ) ] + : [ FDirName $(HAIKU_COMMON_PLATFORM_OBJECT_DIR) libs compat freebsd_network ] ; +Includes [ FGristFiles rtwn_usb_attach.c ] : usbdevs.h ; diff --git a/src/add-ons/kernel/drivers/network/wlan/realtekwifi/glue.c b/src/add-ons/kernel/drivers/network/wlan/realtekwifi/glue.c index 3ac97b1402..faf76d9fef 100644 --- a/src/add-ons/kernel/drivers/network/wlan/realtekwifi/glue.c +++ b/src/add-ons/kernel/drivers/network/wlan/realtekwifi/glue.c @@ -21,19 +21,43 @@ #include -HAIKU_FBSD_WLAN_DRIVER_GLUE(realtekwifi, rtwn_pci, pci) +extern driver_t* DRIVER_MODULE_NAME(rtwn_pci, pci); +extern driver_t* DRIVER_MODULE_NAME(rtwn_usb, uhub); + +HAIKU_FBSD_WLAN_DRIVERS_GLUE(realtekwifi) HAIKU_DRIVER_REQUIREMENTS(FBSD_WLAN); HAIKU_FIRMWARE_VERSION(0); HAIKU_FIRMWARE_NAME_MAP({ {"rtwn-rtl8188eefw", "rtwn-rtl8188eefw.ucode"}, + {"rtwn-rtl8188eufw", "rtwn-rtl8188eufw.ucode"}, {"rtwn-rtl8192cfwE", "rtwn-rtl8192cfwE.ucode"}, {"rtwn-rtl8192cfwE_B", "rtwn-rtl8192cfwE_B.ucode"}, + {"rtwn-rtl8192cfwU", "rtwn-rtl8192cfwU.ucode"}, + {"rtwn-rtl8192cfwT", "rtwn-rtl8192cfwT.ucode"}, + {"rtwn-rtl8192eufw", "rtwn-rtl8192eufw.ucode"}, + {"rtwn-rtl8812aufw", "rtwn-rtl8812aufw.ucode"}, + {"rtwn-rtl8821aufw", "rtwn-rtl8821aufw.ucode"}, }); NO_HAIKU_FBSD_MII_DRIVER(); NO_HAIKU_REENABLE_INTERRUPTS(); +status_t +__haiku_handle_fbsd_drivers_list(status_t (*handler)(driver_t *[], driver_t *[])) +{ + driver_t *pci_drivers[] = { + DRIVER_MODULE_NAME(rtwn_pci, pci), + NULL + }; + driver_t *usb_drivers[] = { + DRIVER_MODULE_NAME(rtwn_usb, uhub), + NULL + }; + return (*handler)(pci_drivers, usb_drivers); +} + + int HAIKU_CHECK_DISABLE_INTERRUPTS(device_t dev) {