svn commit: r342678 - in head/sys/dev/rtwn/rtl8188e: . usb
Andriy Voskoboinyk
avos at FreeBSD.org
Wed Jan 2 05:30:43 UTC 2019
Author: avos
Date: Wed Jan 2 05:30:41 2019
New Revision: 342678
URL: https://svnweb.freebsd.org/changeset/base/342678
Log:
Move USB-specific parts from rtwn(4) to rtwn_usb(4)
MFC after: 4 days
Modified:
head/sys/dev/rtwn/rtl8188e/r88e.h
head/sys/dev/rtwn/rtl8188e/r88e_init.c
head/sys/dev/rtwn/rtl8188e/usb/r88eu.h
head/sys/dev/rtwn/rtl8188e/usb/r88eu_attach.c
head/sys/dev/rtwn/rtl8188e/usb/r88eu_init.c
Modified: head/sys/dev/rtwn/rtl8188e/r88e.h
==============================================================================
--- head/sys/dev/rtwn/rtl8188e/r88e.h Wed Jan 2 05:21:06 2019 (r342677)
+++ head/sys/dev/rtwn/rtl8188e/r88e.h Wed Jan 2 05:30:41 2019 (r342678)
@@ -24,9 +24,7 @@
/*
* Global definitions.
*/
-#define R88E_PUBQ_NPAGES 142
#define R88E_TXPKTBUF_COUNT 177
-#define R88E_TX_PAGE_COUNT 169
#define R88E_MACID_MAX 63
#define R88E_RX_DMA_BUFFER_SIZE 0x2400
@@ -67,9 +65,8 @@ int r88e_set_pwrmode(struct rtwn_softc *, struct ieee8
#endif
/* r88e_init.c */
-void r88e_init_bb(struct rtwn_softc *);
+void r88e_init_bb_common(struct rtwn_softc *);
void r88e_init_rf(struct rtwn_softc *);
-int r88e_power_on(struct rtwn_softc *);
/* r88e_led.c */
void r88e_set_led(struct rtwn_softc *, int, int);
Modified: head/sys/dev/rtwn/rtl8188e/r88e_init.c
==============================================================================
--- head/sys/dev/rtwn/rtl8188e/r88e_init.c Wed Jan 2 05:21:06 2019 (r342677)
+++ head/sys/dev/rtwn/rtl8188e/r88e_init.c Wed Jan 2 05:30:41 2019 (r342678)
@@ -70,20 +70,8 @@ r88e_crystalcap_write(struct rtwn_softc *sc)
}
void
-r88e_init_bb(struct rtwn_softc *sc)
+r88e_init_bb_common(struct rtwn_softc *sc)
{
-
- /* Enable BB and RF. */
- rtwn_setbits_2(sc, R92C_SYS_FUNC_EN, 0,
- R92C_SYS_FUNC_EN_BBRSTB | R92C_SYS_FUNC_EN_BB_GLB_RST |
- R92C_SYS_FUNC_EN_DIO_RF);
-
- rtwn_write_1(sc, R92C_RF_CTRL,
- R92C_RF_CTRL_EN | R92C_RF_CTRL_RSTB | R92C_RF_CTRL_SDMRSTB);
- rtwn_write_1(sc, R92C_SYS_FUNC_EN,
- R92C_SYS_FUNC_EN_USBA | R92C_SYS_FUNC_EN_USBD |
- R92C_SYS_FUNC_EN_BB_GLB_RST | R92C_SYS_FUNC_EN_BBRSTB);
-
r92c_init_bb_common(sc);
rtwn_bb_write(sc, R92C_OFDM0_AGCCORE1(0), 0x69553422);
@@ -92,67 +80,4 @@ r88e_init_bb(struct rtwn_softc *sc)
rtwn_delay(sc, 1);
r88e_crystalcap_write(sc);
-}
-
-int
-r88e_power_on(struct rtwn_softc *sc)
-{
-#define RTWN_CHK(res) do { \
- if (res != 0) \
- return (EIO); \
-} while(0)
- int ntries;
-
- /* Wait for power ready bit. */
- for (ntries = 0; ntries < 5000; ntries++) {
- if (rtwn_read_4(sc, R92C_APS_FSMCO) & R92C_APS_FSMCO_SUS_HOST)
- break;
- rtwn_delay(sc, 10);
- }
- if (ntries == 5000) {
- device_printf(sc->sc_dev,
- "timeout waiting for chip power up\n");
- return (ETIMEDOUT);
- }
-
- /* Reset BB. */
- RTWN_CHK(rtwn_setbits_1(sc, R92C_SYS_FUNC_EN,
- R92C_SYS_FUNC_EN_BBRSTB | R92C_SYS_FUNC_EN_BB_GLB_RST, 0));
-
- RTWN_CHK(rtwn_setbits_1(sc, R92C_AFE_XTAL_CTRL + 2, 0, 0x80));
-
- /* Disable HWPDN. */
- RTWN_CHK(rtwn_setbits_1_shift(sc, R92C_APS_FSMCO,
- R92C_APS_FSMCO_APDM_HPDN, 0, 1));
-
- /* Disable WL suspend. */
- RTWN_CHK(rtwn_setbits_1_shift(sc, R92C_APS_FSMCO,
- R92C_APS_FSMCO_AFSM_HSUS | R92C_APS_FSMCO_AFSM_PCIE, 0, 1));
-
- RTWN_CHK(rtwn_setbits_1_shift(sc, R92C_APS_FSMCO,
- 0, R92C_APS_FSMCO_APFM_ONMAC, 1));
- for (ntries = 0; ntries < 5000; ntries++) {
- if (!(rtwn_read_2(sc, R92C_APS_FSMCO) &
- R92C_APS_FSMCO_APFM_ONMAC))
- break;
- rtwn_delay(sc, 10);
- }
- if (ntries == 5000)
- return (ETIMEDOUT);
-
- /* Enable LDO normal mode. */
- RTWN_CHK(rtwn_setbits_1(sc, R92C_LPLDO_CTRL,
- R92C_LPLDO_CTRL_SLEEP, 0));
-
- /* Enable MAC DMA/WMAC/SCHEDULE/SEC blocks. */
- RTWN_CHK(rtwn_write_2(sc, R92C_CR, 0));
- RTWN_CHK(rtwn_setbits_2(sc, R92C_CR, 0,
- R92C_CR_HCI_TXDMA_EN | R92C_CR_TXDMA_EN |
- R92C_CR_HCI_RXDMA_EN | R92C_CR_RXDMA_EN |
- R92C_CR_PROTOCOL_EN | R92C_CR_SCHEDULE_EN |
- ((sc->sc_hwcrypto != RTWN_CRYPTO_SW) ? R92C_CR_ENSEC : 0) |
- R92C_CR_CALTMR_EN));
-
- return (0);
-#undef RTWN_CHK
}
Modified: head/sys/dev/rtwn/rtl8188e/usb/r88eu.h
==============================================================================
--- head/sys/dev/rtwn/rtl8188e/usb/r88eu.h Wed Jan 2 05:21:06 2019 (r342677)
+++ head/sys/dev/rtwn/rtl8188e/usb/r88eu.h Wed Jan 2 05:30:41 2019 (r342678)
@@ -25,9 +25,18 @@
/*
+ * Global definitions.
+ */
+#define R88EU_PUBQ_NPAGES 142
+#define R88EU_TX_PAGE_COUNT 169
+
+
+/*
* Function declarations.
*/
/* r88eu_init.c */
+void r88eu_init_bb(struct rtwn_softc *);
+int r88eu_power_on(struct rtwn_softc *);
void r88eu_power_off(struct rtwn_softc *);
void r88eu_init_intr(struct rtwn_softc *);
void r88eu_init_rx_agg(struct rtwn_softc *);
Modified: head/sys/dev/rtwn/rtl8188e/usb/r88eu_attach.c
==============================================================================
--- head/sys/dev/rtwn/rtl8188e/usb/r88eu_attach.c Wed Jan 2 05:21:06 2019 (r342677)
+++ head/sys/dev/rtwn/rtl8188e/usb/r88eu_attach.c Wed Jan 2 05:30:41 2019 (r342678)
@@ -140,7 +140,7 @@ r88eu_attach(struct rtwn_usb_softc *uc)
sc->sc_efuse_postread = rtwn_nop_softc;
sc->sc_parse_rom = r88e_parse_rom;
sc->sc_set_led = r88e_set_led;
- sc->sc_power_on = r88e_power_on;
+ sc->sc_power_on = r88eu_power_on;
sc->sc_power_off = r88eu_power_off;
#ifndef RTWN_WITHOUT_UCODE
sc->sc_fw_reset = r88e_fw_reset;
@@ -172,7 +172,7 @@ r88eu_attach(struct rtwn_usb_softc *uc)
sc->sc_init_ampdu = rtwn_nop_softc;
sc->sc_init_intr = r88eu_init_intr;
sc->sc_init_edca = r92c_init_edca;
- sc->sc_init_bb = r88e_init_bb;
+ sc->sc_init_bb = r88eu_init_bb;
sc->sc_init_rf = r92c_init_rf;
sc->sc_init_antsel = rtwn_nop_softc;
sc->sc_post_init = r88eu_post_init;
@@ -190,11 +190,11 @@ r88eu_attach(struct rtwn_usb_softc *uc)
sc->fwname = "rtwn-rtl8188eufw";
sc->fwsig = 0x88e;
- sc->page_count = R88E_TX_PAGE_COUNT;
+ sc->page_count = R88EU_TX_PAGE_COUNT;
sc->pktbuf_count = R88E_TXPKTBUF_COUNT;
sc->ackto = 0x40;
- sc->npubqpages = R88E_PUBQ_NPAGES;
+ sc->npubqpages = R88EU_PUBQ_NPAGES;
sc->page_size = R92C_TX_PAGE_SIZE;
sc->txdesc_len = sizeof(struct r92cu_tx_desc);
Modified: head/sys/dev/rtwn/rtl8188e/usb/r88eu_init.c
==============================================================================
--- head/sys/dev/rtwn/rtl8188e/usb/r88eu_init.c Wed Jan 2 05:21:06 2019 (r342677)
+++ head/sys/dev/rtwn/rtl8188e/usb/r88eu_init.c Wed Jan 2 05:30:41 2019 (r342678)
@@ -55,6 +55,87 @@ __FBSDID("$FreeBSD$");
void
+r88eu_init_bb(struct rtwn_softc *sc)
+{
+
+ /* Enable BB and RF. */
+ rtwn_setbits_2(sc, R92C_SYS_FUNC_EN, 0,
+ R92C_SYS_FUNC_EN_BBRSTB | R92C_SYS_FUNC_EN_BB_GLB_RST |
+ R92C_SYS_FUNC_EN_DIO_RF);
+
+ rtwn_write_1(sc, R92C_RF_CTRL,
+ R92C_RF_CTRL_EN | R92C_RF_CTRL_RSTB | R92C_RF_CTRL_SDMRSTB);
+ rtwn_write_1(sc, R92C_SYS_FUNC_EN,
+ R92C_SYS_FUNC_EN_USBA | R92C_SYS_FUNC_EN_USBD |
+ R92C_SYS_FUNC_EN_BB_GLB_RST | R92C_SYS_FUNC_EN_BBRSTB);
+
+ r88e_init_bb_common(sc);
+}
+
+int
+r88eu_power_on(struct rtwn_softc *sc)
+{
+#define RTWN_CHK(res) do { \
+ if (res != 0) \
+ return (EIO); \
+} while(0)
+ int ntries;
+
+ /* Wait for power ready bit. */
+ for (ntries = 0; ntries < 5000; ntries++) {
+ if (rtwn_read_4(sc, R92C_APS_FSMCO) & R92C_APS_FSMCO_SUS_HOST)
+ break;
+ rtwn_delay(sc, 10);
+ }
+ if (ntries == 5000) {
+ device_printf(sc->sc_dev,
+ "timeout waiting for chip power up\n");
+ return (ETIMEDOUT);
+ }
+
+ /* Reset BB. */
+ RTWN_CHK(rtwn_setbits_1(sc, R92C_SYS_FUNC_EN,
+ R92C_SYS_FUNC_EN_BBRSTB | R92C_SYS_FUNC_EN_BB_GLB_RST, 0));
+
+ RTWN_CHK(rtwn_setbits_1(sc, R92C_AFE_XTAL_CTRL + 2, 0, 0x80));
+
+ /* Disable HWPDN. */
+ RTWN_CHK(rtwn_setbits_1_shift(sc, R92C_APS_FSMCO,
+ R92C_APS_FSMCO_APDM_HPDN, 0, 1));
+
+ /* Disable WL suspend. */
+ RTWN_CHK(rtwn_setbits_1_shift(sc, R92C_APS_FSMCO,
+ R92C_APS_FSMCO_AFSM_HSUS | R92C_APS_FSMCO_AFSM_PCIE, 0, 1));
+
+ RTWN_CHK(rtwn_setbits_1_shift(sc, R92C_APS_FSMCO,
+ 0, R92C_APS_FSMCO_APFM_ONMAC, 1));
+ for (ntries = 0; ntries < 5000; ntries++) {
+ if (!(rtwn_read_2(sc, R92C_APS_FSMCO) &
+ R92C_APS_FSMCO_APFM_ONMAC))
+ break;
+ rtwn_delay(sc, 10);
+ }
+ if (ntries == 5000)
+ return (ETIMEDOUT);
+
+ /* Enable LDO normal mode. */
+ RTWN_CHK(rtwn_setbits_1(sc, R92C_LPLDO_CTRL,
+ R92C_LPLDO_CTRL_SLEEP, 0));
+
+ /* Enable MAC DMA/WMAC/SCHEDULE/SEC blocks. */
+ RTWN_CHK(rtwn_write_2(sc, R92C_CR, 0));
+ RTWN_CHK(rtwn_setbits_2(sc, R92C_CR, 0,
+ R92C_CR_HCI_TXDMA_EN | R92C_CR_TXDMA_EN |
+ R92C_CR_HCI_RXDMA_EN | R92C_CR_RXDMA_EN |
+ R92C_CR_PROTOCOL_EN | R92C_CR_SCHEDULE_EN |
+ ((sc->sc_hwcrypto != RTWN_CRYPTO_SW) ? R92C_CR_ENSEC : 0) |
+ R92C_CR_CALTMR_EN));
+
+ return (0);
+#undef RTWN_CHK
+}
+
+void
r88eu_power_off(struct rtwn_softc *sc)
{
uint8_t reg;
More information about the svn-src-head
mailing list