Index: sys/dev/rtwn/rtl8188e/pci/r88ee.h =================================================================== --- sys/dev/rtwn/rtl8188e/pci/r88ee.h +++ sys/dev/rtwn/rtl8188e/pci/r88ee.h @@ -22,16 +22,6 @@ #include -/* - * Global definitions. - */ -#define R88EE_PUBQ_NPAGES 176 -#define R88EE_HPQ_NPAGES 41 -#define R88EE_LPQ_NPAGES 28 -#define R88EE_TX_PAGE_COUNT \ - (R88EE_PUBQ_NPAGES + R88EE_HPQ_NPAGES + R88EE_LPQ_NPAGES) - - /* * Function declarations. */ @@ -53,9 +43,6 @@ void r88ee_init_rx_agg(struct rtwn_softc *); void r88ee_init_rf(struct rtwn_softc *); -/* r88ee_led.c */ -void r88ee_set_led(struct rtwn_softc *, int, int); - /* r88ee_rx.c */ int r88ee_classify_intr(struct rtwn_softc *, void *, int); void r88ee_enable_intr(struct rtwn_pci_softc *); Index: sys/dev/rtwn/rtl8188e/pci/r88ee_attach.c =================================================================== --- sys/dev/rtwn/rtl8188e/pci/r88ee_attach.c +++ sys/dev/rtwn/rtl8188e/pci/r88ee_attach.c @@ -147,24 +147,23 @@ struct rtwn_softc *sc = &pc->pc_sc; /* PCIe part. */ - pc->pc_setup_tx_desc = r88ee_setup_tx_desc; + pc->pc_setup_tx_desc = r92ce_setup_tx_desc; pc->pc_tx_postsetup = r92ce_tx_postsetup; - pc->pc_copy_tx_desc = r88ee_copy_tx_desc; + pc->pc_copy_tx_desc = r92ce_copy_tx_desc; pc->pc_enable_intr = r88ee_enable_intr; pc->pc_qmap = 0xe771; pc->tcr = 0x8200; /* Common part. */ - /* RTL8192C* cannot use pairwise keys from first 4 slots */ - sc->sc_flags = RTWN_FLAG_EXT_HDR; //RTWN_FLAG_CAM_FIXED; + sc->sc_flags = RTWN_FLAG_EXT_HDR; sc->sc_start_xfers = r88ee_start_xfers; sc->sc_set_chan = r92c_set_chan; sc->sc_fill_tx_desc = r92c_fill_tx_desc; sc->sc_fill_tx_desc_raw = r92c_fill_tx_desc_raw; sc->sc_fill_tx_desc_null = r92c_fill_tx_desc_null; /* XXX recheck */ - sc->sc_dump_tx_desc = r88ee_dump_tx_desc; + sc->sc_dump_tx_desc = r92ce_dump_tx_desc; sc->sc_tx_radiotap_flags = r92c_tx_radiotap_flags; sc->sc_rx_radiotap_flags = r92c_rx_radiotap_flags; sc->sc_get_rssi_cck = r88e_get_rssi_cck; @@ -183,7 +182,7 @@ sc->sc_power_off = r88ee_power_off; #ifndef RTWN_WITHOUT_UCODE sc->sc_fw_reset = r88e_fw_reset; - sc->sc_fw_download_enable = r88ee_fw_download_enable; + sc->sc_fw_download_enable = r88e_fw_download_enable; #endif sc->sc_set_page_size = r92c_set_page_size; sc->sc_lc_calib = r92c_lc_calib; Index: sys/dev/rtwn/rtl8188e/pci/r88ee_init.c =================================================================== --- sys/dev/rtwn/rtl8188e/pci/r88ee_init.c +++ sys/dev/rtwn/rtl8188e/pci/r88ee_init.c @@ -61,8 +61,8 @@ r88ee_init_intr(struct rtwn_softc *sc) { /* Disable interrupts. */ - rtwn_write_4(sc, 0xb0, 0x200084ff); - rtwn_write_4(sc, 0xb8, 0x100); + rtwn_write_4(sc, R88E_HIMR, 0x200084ff); + rtwn_write_4(sc, R88E_HIMRE, 0x100); rtwn_write_1(sc, 0x01AF, 0x0); rtwn_write_4(sc, 0x0058, 0xc0); } @@ -87,15 +87,15 @@ rtwn_write_1(sc, R92C_RSV_CTRL, 0x00); /* Power sequence: NIC enable flow */ - rtwn_setbits_1(sc, 0x5, 0x18, 0x0); + rtwn_setbits_1(sc, 0x0005, 0x18, 0x0); if (!r88ee_pwrseq_polling(sc, 0x6, 0x2, 0x2)) return false; - rtwn_setbits_1(sc, 0x2, 0x3, 0x0); - rtwn_setbits_1(sc, 0x26, 0x80, 0x80); - rtwn_setbits_1(sc, 0x5, 0x80, 0x0); - rtwn_setbits_1(sc, 0x5, 0x18, 0x0); - rtwn_setbits_1(sc, 0x5, 0x1, 0x1); - if (!r88ee_pwrseq_polling(sc, 0x5, 0x1, 0x0)) + rtwn_setbits_1(sc, 0x0002, 0x3, 0x0); + rtwn_setbits_1(sc, 0x0026, 0x80, 0x80); + rtwn_setbits_1(sc, 0x0005, 0x80, 0x0); + rtwn_setbits_1(sc, 0x0005, 0x18, 0x0); + rtwn_setbits_1(sc, 0x0005, 0x1, 0x1); + if (!r88ee_pwrseq_polling(sc, 0x0005, 0x1, 0x0)) return false; /* End of power sequence */ @@ -132,26 +132,26 @@ tmp = rtwn_read_1(sc, R88E_TX_RPT_CTRL); rtwn_write_1(sc, R88E_TX_RPT_CTRL, tmp & (~0x02)); - tmp = rtwn_read_1(sc, R88EE_RXDMA_CONTROL); + tmp = rtwn_read_1(sc, R92C_TRXDMA_CTRL); while (!(tmp & 0x02) && (count++ < 100)) { rtwn_delay(sc, 10); - tmp = rtwn_read_1(sc, R88EE_RXDMA_CONTROL); + tmp = rtwn_read_1(sc, R88EE_RXDMA_CTRL); count++; } rtwn_write_1(sc, R92C_PCIE_CTRL_REG+1, 0xFF); /* Power sequence: Disable NIC LPS enable Flow */ - rtwn_setbits_1(sc, 0x522, 0xff, 0x7f); - r88ee_pwrseq_polling(sc, 0x5f8, 0xff, 0x0); - r88ee_pwrseq_polling(sc, 0x5f9, 0xff, 0x0); - r88ee_pwrseq_polling(sc, 0x5fa, 0xff, 0x0); - r88ee_pwrseq_polling(sc, 0x5fb, 0xff, 0x0); - rtwn_setbits_1(sc, 0x2, 0x1, 0x0); - rtwn_setbits_1(sc, 0x100, 0xff, 0x3f); - rtwn_setbits_1(sc, 0x101, 0x2, 0x0); - rtwn_setbits_1(sc, 0x553, 0x20, 0x20); + rtwn_setbits_1(sc, 0x0522, 0xff, 0x7f); + r88ee_pwrseq_polling(sc, 0x05f8, 0xff, 0x0); + r88ee_pwrseq_polling(sc, 0x05f9, 0xff, 0x0); + r88ee_pwrseq_polling(sc, 0x05fa, 0xff, 0x0); + r88ee_pwrseq_polling(sc, 0x05fb, 0xff, 0x0); + rtwn_setbits_1(sc, 0x0002, 0x01, 0x00); + rtwn_setbits_1(sc, 0x0100, 0xff, 0x3f); + rtwn_setbits_1(sc, 0x0101, 0x02, 0x00); + rtwn_setbits_1(sc, 0x0553, 0x20, 0x20); /* End of power sequence */ rtwn_write_1(sc, R92C_RF_CTRL, 0x00); @@ -168,11 +168,11 @@ rtwn_write_1(sc, R88E_32K_CTRL, (tmp & (~0x01))); /* Power sequence: NIC Disable flow */ - rtwn_setbits_1(sc, 0x1f, 0xff, 0x0); - rtwn_setbits_1(sc, 0x23, 0x10, 0x10); - rtwn_setbits_1(sc, 0x5, 0x2, 0x2); - r88ee_pwrseq_polling(sc, 0x5, 0x2, 0x0); - rtwn_setbits_1(sc, 0x26, 0x80, 0x80); + rtwn_setbits_1(sc, 0x001f, 0xff, 0x00); + rtwn_setbits_1(sc, 0x0023, 0x10, 0x10); + rtwn_setbits_1(sc, 0x0005, 0x02, 0x02); + r88ee_pwrseq_polling(sc, 0x05, 0x02, 0x0); + rtwn_setbits_1(sc, 0x0026, 0x80, 0x80); /* End of power sequence */ tmp = rtwn_read_1(sc, R92C_RSV_CTRL+1); Index: sys/dev/rtwn/rtl8188e/pci/r88ee_reg.h =================================================================== --- sys/dev/rtwn/rtl8188e/pci/r88ee_reg.h +++ sys/dev/rtwn/rtl8188e/pci/r88ee_reg.h @@ -31,91 +31,21 @@ /* * MAC registers. */ -/* System Configuration. */ -#define R88EE_PCIE_MIO_INTF 0x0e4 -#define R88EE_PCIE_MIO_INTD 0x0e8 -/* PCIe Configuration. */ -#define R88EE_PCIE_CTRL_REG 0x300 -#define R88EE_INT_MIG 0x304 -#define R88EE_BCNQ_DESA 0x308 -#define R88EE_HQ_DESA 0x310 -#define R88EE_MGQ_DESA 0x318 -#define R88EE_VOQ_DESA 0x320 -#define R88EE_VIQ_DESA 0x328 -#define R88EE_BEQ_DESA 0x330 -#define R88EE_BKQ_DESA 0x338 -#define R88EE_RX_DESA 0x340 -#define R88EE_DBI 0x348 -#define R88EE_MDIO 0x354 -#define R88EE_DBG_SEL 0x360 -#define R88EE_PCIE_HRPWM 0x361 -#define R88EE_PCIE_HCPWM 0x363 -#define R88EE_UART_CTRL 0x364 -#define R88EE_UART_TX_DES 0x370 -#define R88EE_UART_RX_DES 0x378 - /* EDCA Registers */ -#define R88EE_SIFS_CTX 0x0514 #define R88EE_SIFS_TRX 0x0516 #define R88EE_SIFS_SPEC 0x0428 #define R88EE_SIFS_SPEC_MAC 0x063A #define R88EE_SIFS_RESP_OFDM 0x063E -/* Bits for R88EE_GPIO_MUXCFG. */ -#define R88EE_GPIO_MUXCFG_RFKILL 0x0008 - /* Bits for R88EE_GPIO_IO_SEL. */ #define R88EE_GPIO_IO_SEL_2 0x0062 -#define R88EE_GPIO_IO_SEL_RFKILL 0x0008 - -/* Bits for R88EE_LEDCFG2. */ -#define R88EE_LEDCFG2_EN 0x60 -#define R88EE_LEDCFG2_DIS 0x68 /* Bits for R88EE_HIMR. */ -#define R88EE_IMR_ROK 0x00000001 /* receive DMA OK */ -#define R88EE_IMR_VODOK 0x00000002 /* AC_VO DMA OK */ -#define R88EE_IMR_VIDOK 0x00000004 /* AC_VI DMA OK */ -#define R88EE_IMR_BEDOK 0x00000008 /* AC_BE DMA OK */ -#define R88EE_IMR_BKDOK 0x00000010 /* AC_BK DMA OK */ -#define R88EE_IMR_TXBDER 0x00000020 /* beacon transmit error */ -#define R88EE_IMR_MGNTDOK 0x00000040 /* management queue DMA OK */ -#define R88EE_IMR_TBDOK 0x00000080 /* beacon transmit OK */ -#define R88EE_IMR_HIGHDOK 0x00000100 /* high queue DMA OK */ -#define R88EE_IMR_BDOK 0x00000200 /* beacon queue DMA OK */ -#define R88EE_IMR_ATIMEND 0x00000400 /* ATIM window end interrupt */ -#define R88EE_IMR_RDU 0x00000800 /* Rx descriptor unavailable */ -#define R88EE_IMR_RXFOVW 0x00001000 /* receive FIFO overflow */ -#define R88EE_IMR_BCNINT 0x00002000 /* beacon DMA interrupt 0 */ -#define R88EE_IMR_PSTIMEOUT 0x00004000 /* powersave timeout */ -#define R88EE_IMR_TXFOVW 0x00008000 /* transmit FIFO overflow */ -#define R88EE_IMR_TIMEOUT1 0x00010000 /* timeout interrupt 1 */ -#define R88EE_IMR_TIMEOUT2 0x00020000 /* timeout interrupt 2 */ -#define R88EE_IMR_BCNDOK1 0x00040000 /* beacon queue DMA OK (1) */ -#define R88EE_IMR_BCNDOK2 0x00080000 /* beacon queue DMA OK (2) */ -#define R88EE_IMR_BCNDOK3 0x00100000 /* beacon queue DMA OK (3) */ -#define R88EE_IMR_BCNDOK4 0x00200000 /* beacon queue DMA OK (4) */ -#define R88EE_IMR_BCNDOK5 0x00400000 /* beacon queue DMA OK (5) */ -#define R88EE_IMR_BCNDOK6 0x00800000 /* beacon queue DMA OK (6) */ -#define R88EE_IMR_BCNDOK7 0x01000000 /* beacon queue DMA OK (7) */ -#define R88EE_IMR_BCNDOK8 0x02000000 /* beacon queue DMA OK (8) */ -#define R88EE_IMR_BCNDMAINT1 0x04000000 /* beacon DMA interrupt 1 */ -#define R88EE_IMR_BCNDMAINT2 0x08000000 /* beacon DMA interrupt 2 */ -#define R88EE_IMR_BCNDMAINT3 0x10000000 /* beacon DMA interrupt 3 */ -#define R88EE_IMR_BCNDMAINT4 0x20000000 /* beacon DMA interrupt 4 */ -#define R88EE_IMR_BCNDMAINT5 0x40000000 /* beacon DMA interrupt 5 */ -#define R88EE_IMR_BCNDMAINT6 0x80000000 /* beacon DMA interrupt 6 */ -#define R88EE_HIMR 0xb0 -#define R88EE_ISR 0xb4 -#define R88EE_HIMRE 0xb8 -#define R88EE_HISRE 0xbc - -/* Shortcut. */ -#define R88EE_IBSS_INT_MASK \ - (R88EE_IMR_BCNINT | R88EE_IMR_TBDOK | R88EE_IMR_TBDER) +#define R88EE_ISR 0x00B4 +#define R88EE_HISRE 0x00BC /* Power On/Off DMA */ -#define R88EE_RXDMA_CONTROL 0x0286 -#define R88EE_TRXDMA_CTRL 0x010C +#define R88EE_RXDMA_CTRL 0x0286 +#define R88EE_TRXDMA_CTRL 0x0010 #endif /* R99EE_REG_H */ Index: sys/dev/rtwn/rtl8188e/pci/r88ee_rx.c =================================================================== --- sys/dev/rtwn/rtl8188e/pci/r88ee_rx.c +++ sys/dev/rtwn/rtl8188e/pci/r88ee_rx.c @@ -65,8 +65,8 @@ *rings = 0; - rtwn_write_4(sc, R88EE_HIMR, 0x0); - rtwn_write_4(sc, R88EE_HIMRE, 0x0); + rtwn_write_4(sc, R88E_HIMR, 0x0); + rtwn_write_4(sc, R88E_HIMRE, 0x0); status = rtwn_read_4(sc, R88EE_ISR) & 0x200084ff; rtwn_write_4(sc, R88EE_ISR, status); @@ -114,26 +114,26 @@ struct rtwn_softc *sc = &pc->pc_sc; /* Enable interrupts */ - rtwn_write_4(sc, R88EE_HIMR, 0x200084ff); - rtwn_write_4(sc, R88EE_HIMRE, 0x100); + rtwn_write_4(sc, R88E_HIMR, 0x200084ff); + rtwn_write_4(sc, R88E_HIMRE, 0x100); /* there are some C2H CMDs have been sent * before system interrupt is enabled, e.g., C2H, CPWM. * So we need to clear all C2H events that FW has notified, * otherwise FW won't schedule any commands anymore. */ - rtwn_write_1(sc, 0x01AF, 0); + rtwn_write_1(sc, R92C_C2H_EVT_CLEAR, 0); /*enable system interrupt*/ - rtwn_write_4(sc, 0x0058, 0xC0); + rtwn_write_4(sc, R92C_HSIMR, 0xC0); } void r88ee_start_xfers(struct rtwn_softc *sc) { - rtwn_write_4(sc, 0x00B0, 0x200084ff); - rtwn_write_4(sc, 0x00B8, 0x100); - rtwn_write_1(sc, 0x01AF, 0x0); - rtwn_write_4(sc, 0x0058, 0xc0); + rtwn_write_4(sc, R88E_HIMR, 0x200084ff); + rtwn_write_4(sc, R88E_HIMRE, 0x100); + rtwn_write_1(sc, R92C_C2H_EVT_CLEAR, 0x0); + rtwn_write_4(sc, R92C_HSIMR, 0xc0); } #undef R88EE_INT_ENABLE Index: sys/dev/rtwn/rtl8188e/pci/r88ee_tx.c =================================================================== --- sys/dev/rtwn/rtl8188e/pci/r88ee_tx.c +++ /dev/null @@ -1,111 +0,0 @@ -/* $OpenBSD: if_rtwn.c,v 1.6 2015/08/28 00:03:53 deraadt Exp $ */ - -/*- - * Copyright (c) 2010 Damien Bergamini - * Copyright (c) 2015 Stefan Sperling - * Copyright (c) 2016 Andriy Voskoboinyk - * Copyright (c) 2018 Farhan Khan - * - * Permission to use, copy, modify, and distribute this software for any - * purpose with or without fee is hereby granted, provided that the above - * copyright notice and this permission notice appear in all copies. - * - * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES - * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF - * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR - * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES - * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN - * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF - * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - */ - -#include -__FBSDID("$FreeBSD$"); - -#include "opt_wlan.h" - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#include -#include -#include - -#include -#include -#include - -#include -#include - -#include -#include - -#include - -#include -#include - - -void -r88ee_setup_tx_desc(struct rtwn_pci_softc *pc, void *desc, - uint32_t next_desc_addr) -{ - struct r88ee_tx_desc *txd = desc; - - /* setup tx desc */ - txd->nextdescaddr = htole32(next_desc_addr); -} - -void -r88ee_tx_postsetup(struct rtwn_pci_softc *pc, void *desc, - bus_dma_segment_t segs[]) -{ - /* Not implemented */ -} - -void -r88ee_copy_tx_desc(void *dest, const void *src) -{ - struct r88ee_tx_desc *txd = dest; - size_t len = sizeof(struct r92c_tx_desc) + - sizeof(txd->txbufsize) + sizeof(txd->pad); - - if (src != NULL) - memcpy(dest, src, len); - else - memset(dest, 0, len); -} - -void -r88ee_dump_tx_desc(struct rtwn_softc *sc, const void *desc) -{ -#ifdef RTWN_DEBUG - const struct r88ee_tx_desc *txd = desc; - - RTWN_DPRINTF(sc, RTWN_DEBUG_XMIT_DESC, - "%s: len %d, off %d, flags0 %02X, dw: 1 %08X, 2 %08X, 3 %04X " - "(seq %04X), 4 %08X, 5 %08X, 6 %08X, size %04X, pad %04X, " - "addr: %08X (64: %08X), next: %08X (64: %08X), " - "rsvd: %08X %08X %08X %08X\n", - __func__, le16toh(txd->pktlen), txd->offset, txd->flags0, - le32toh(txd->txdw1), le32toh(txd->txdw2), le16toh(txd->txdw3), - le16toh(txd->txdseq), le32toh(txd->txdw4), le32toh(txd->txdw5), - le32toh(txd->txdw6), le16toh(txd->txbufsize), le16toh(txd->pad), - le32toh(txd->txbufaddr), le32toh(txd->txbufaddr64), - le32toh(txd->nextdescaddr), le32toh(txd->nextdescaddr64), - le32toh(txd->reserved[0]), le32toh(txd->reserved[1]), - le32toh(txd->reserved[2]), le32toh(txd->reserved[3])); -#endif -} Index: sys/dev/rtwn/rtl8188e/r88e.h =================================================================== --- sys/dev/rtwn/rtl8188e/r88e.h +++ sys/dev/rtwn/rtl8188e/r88e.h @@ -60,7 +60,6 @@ int r88e_fw_cmd(struct rtwn_softc *, uint8_t, const void *, int); void r88e_fw_reset(struct rtwn_softc *, int); void r88e_fw_download_enable(struct rtwn_softc *, int); -void r88ee_fw_download_enable(struct rtwn_softc *, int); #endif void r88e_macid_enable_link(struct rtwn_softc *, int, int); void r88e_set_media_status(struct rtwn_softc *, int); Index: sys/dev/rtwn/rtl8188e/r88e_fw.c =================================================================== --- sys/dev/rtwn/rtl8188e/r88e_fw.c +++ sys/dev/rtwn/rtl8188e/r88e_fw.c @@ -130,27 +130,6 @@ } #endif -void -r88ee_fw_download_enable(struct rtwn_softc *sc, int enable) -{ - uint8_t tmp; - if (enable) { - tmp = rtwn_read_1(sc, R92C_SYS_FUNC_EN+1); - rtwn_write_1(sc, R92C_SYS_FUNC_EN+1, tmp | 0x04); - - tmp = rtwn_read_1(sc, R92C_MCUFWDL); - rtwn_write_1(sc, R92C_MCUFWDL, tmp | 0x01); - - tmp = rtwn_read_1(sc, R92C_MCUFWDL + 2); - rtwn_write_1(sc, R92C_MCUFWDL + 2, tmp & 0xf7); - } else { - tmp = rtwn_read_1(sc, R92C_MCUFWDL); - rtwn_write_1(sc, R92C_MCUFWDL, tmp & 0xfe); - - rtwn_write_1(sc, R92C_MCUFWDL + 1, 0x00); - } -} - void r88e_macid_enable_link(struct rtwn_softc *sc, int id, int enable) { Index: sys/modules/rtwn_pci/Makefile =================================================================== --- sys/modules/rtwn_pci/Makefile +++ sys/modules/rtwn_pci/Makefile @@ -19,7 +19,7 @@ .PATH: ${.SRCTOP}/sys/dev/rtwn/rtl8188e/pci SRCS += r88ee_attach.c r88ee_calib.c r88ee_init.c \ - r88ee_tx.c r88ee_pwrseq.c r88ee_rx.c r88ee_rf.c \ + r88ee_pwrseq.c r88ee_rx.c r88ee_rf.c \ r88ee.h r88ee_priv.h r88ee_reg.h r88ee_tx_desc.h \ r88ee_pwrseq.h