| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846 |
- /******************************************************************************
- *
- * Copyright(c) 2016 - 2018 Realtek Corporation. All rights reserved.
- *
- * This program is free software; you can redistribute it and/or modify it
- * under the terms of version 2 of the GNU General Public License as
- * published by the Free Software Foundation.
- *
- * This program is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
- * more details.
- *
- ******************************************************************************/
- #include "halmac_gpio_8821c.h"
- #include "../halmac_gpio_88xx.h"
- #if HALMAC_8821C_SUPPORT
- /* P_LED0 definition */
- #define GPIO0_BT_GPIO0_8821C \
- {HALMAC_BT_GPIO, HALMAC_GPIO0, HALMAC_GPIO_IN_OUT, \
- 0x66, BIT(2), BIT(2)}
- #define GPIO0_BT_GPIO0_8821C \
- {HALMAC_BT_GPIO, HALMAC_GPIO0, HALMAC_GPIO_IN_OUT, \
- 0x66, BIT(2), BIT(2)}
- #define GPIO0_BT_ACT_8821C \
- {HALMAC_BT_PTA, HALMAC_GPIO0, HALMAC_GPIO_IN_OUT, \
- 0x41, BIT(1), 0}
- #define GPIO0_WL_ACT_8821C \
- {HALMAC_WL_PTA, HALMAC_GPIO0, HALMAC_GPIO_IN_OUT, \
- 0x41, BIT(2), BIT(2)}
- #define GPIO0_WLMAC_DBG_GPIO0_8821C \
- {HALMAC_WLMAC_DBG, HALMAC_GPIO0, HALMAC_GPIO_OUT, \
- 0x40, BIT(1) | BIT(0), BIT(0)}
- #define GPIO0_WLPHY_DBG_GPIO0_8821C \
- {HALMAC_WLPHY_DBG, HALMAC_GPIO0, HALMAC_GPIO_IN_OUT, \
- 0x40, BIT(1) | BIT(0), BIT(1)}
- #define GPIO0_BT_DBG_GPIO0_8821C \
- {HALMAC_BT_DBG, HALMAC_GPIO0, HALMAC_GPIO_OUT, \
- 0x40, BIT(1) | BIT(0), BIT(0) | BIT(1)}
- #define GPIO0_SW_IO_8821C \
- {HALMAC_SW_IO, HALMAC_GPIO0, HALMAC_GPIO_IN_OUT, \
- 0x40, BIT(1) | BIT(0), 0}
- /* GPIO1 definition */
- #define GPIO1_BT_GPIO1_8821C \
- {HALMAC_BT_GPIO, HALMAC_GPIO1, HALMAC_GPIO_IN_OUT, \
- 0x66, BIT(2), BIT(2)}
- #define GPIO1_BT_3DD_SYNC_A_8821C \
- {HALMAC_BT_3DDLS_A, HALMAC_GPIO1, HALMAC_GPIO_IN, \
- 0x66, BIT(2), BIT(2)}
- #define GPIO1_WL_CK_8821C \
- {HALMAC_BT_PTA, HALMAC_GPIO1, HALMAC_GPIO_OUT, \
- 0x41, BIT(1), 0}
- #define GPIO1_BT_CK_8821C \
- {HALMAC_WL_PTA, HALMAC_GPIO1, HALMAC_GPIO_OUT, \
- 0x41, BIT(2), BIT(2)}
- #define GPIO1_WLMAC_DBG_GPIO1_8821C \
- {HALMAC_WLMAC_DBG, HALMAC_GPIO1, HALMAC_GPIO_OUT, \
- 0x40, BIT(1) | BIT(0), BIT(0)}
- #define GPIO1_WLPHY_DBG_GPIO1_8821C \
- {HALMAC_WLPHY_DBG, HALMAC_GPIO1, HALMAC_GPIO_IN_OUT, \
- 0x40, BIT(1) | BIT(0), BIT(1)}
- #define GPIO1_BT_DBG_GPIO1_8821C \
- {HALMAC_BT_DBG, HALMAC_GPIO1, HALMAC_GPIO_OUT, \
- 0x40, BIT(1) | BIT(0), BIT(0) | BIT(1)}
- #define GPIO1_SW_IO_8821C \
- {HALMAC_SW_IO, HALMAC_GPIO1, HALMAC_GPIO_IN_OUT, \
- 0x40, BIT(1) | BIT(0), 0}
- /* GPIO2 definition */
- #define GPIO2_BT_GPIO2_8821C \
- {HALMAC_BT_GPIO, HALMAC_GPIO2, HALMAC_GPIO_IN_OUT, \
- 0x66, BIT(2), BIT(2)}
- #define GPIO2_WL_STATE_8821C \
- {HALMAC_BT_PTA, HALMAC_GPIO2, HALMAC_GPIO_OUT, \
- 0x41, BIT(1), 0}
- #define GPIO2_BT_STATE_8821C \
- {HALMAC_WL_PTA, HALMAC_GPIO2, HALMAC_GPIO_OUT, \
- 0x41, BIT(2), BIT(2)}
- #define GPIO2_WLMAC_DBG_GPIO2_8821C \
- {HALMAC_WLMAC_DBG, HALMAC_GPIO2, HALMAC_GPIO_OUT, \
- 0x40, BIT(1) | BIT(0), BIT(0)}
- #define GPIO2_WLPHY_DBG_GPIO2_8821C \
- {HALMAC_WLPHY_DBG, HALMAC_GPIO2, HALMAC_GPIO_IN_OUT, \
- 0x40, BIT(1) | BIT(0), BIT(1)}
- #define GPIO2_BT_DBG_GPIO2_8821C \
- {HALMAC_BT_DBG, HALMAC_GPIO2, HALMAC_GPIO_OUT, \
- 0x40, BIT(1) | BIT(0), BIT(0) | BIT(1)}
- #define GPIO2_RFE_CTRL_5_8821C \
- {HALMAC_WLPHY_RFE_CTRL2GPIO, HALMAC_GPIO2, HALMAC_GPIO_IN_OUT, \
- 0x40, BIT(2), BIT(2)}
- #define GPIO2_SW_IO_8821C \
- {HALMAC_SW_IO, HALMAC_GPIO2, HALMAC_GPIO_IN_OUT, \
- 0x40, BIT(1) | BIT(0), 0}
- /* GPIO3 definition */
- #define GPIO3_BT_GPIO3_8821C \
- {HALMAC_BT_GPIO, HALMAC_GPIO3, HALMAC_GPIO_IN_OUT, \
- 0x66, BIT(2), BIT(2)}
- #define GPIO3_WL_PRI_8821C \
- {HALMAC_BT_PTA, HALMAC_GPIO3, HALMAC_GPIO_OUT, \
- 0x41, BIT(1), 0}
- #define GPIO3_BT_PRI_8821C \
- {HALMAC_WL_PTA, HALMAC_GPIO3, HALMAC_GPIO_OUT, \
- 0x41, BIT(2), BIT(2)}
- #define GPIO3_WLMAC_DBG_GPIO3_8821C \
- {HALMAC_WLMAC_DBG, HALMAC_GPIO3, HALMAC_GPIO_OUT, \
- 0x40, BIT(1) | BIT(0), BIT(0)}
- #define GPIO3_WLPHY_DBG_GPIO3_8821C \
- {HALMAC_WLPHY_DBG, HALMAC_GPIO3, HALMAC_GPIO_IN_OUT, \
- 0x40, BIT(1) | BIT(0), BIT(1)}
- #define GPIO3_BT_DBG_GPIO3_8821C \
- {HALMAC_BT_DBG, HALMAC_GPIO3, HALMAC_GPIO_OUT, \
- 0x40, BIT(1) | BIT(0), BIT(0) | BIT(1)}
- #define GPIO3_RFE_CTRL_4_8821C \
- {HALMAC_WLPHY_RFE_CTRL2GPIO, HALMAC_GPIO3, HALMAC_GPIO_IN_OUT, \
- 0x40, BIT(2), BIT(2)}
- #define GPIO3_SW_IO_8821C \
- {HALMAC_SW_IO, HALMAC_GPIO3, HALMAC_GPIO_IN_OUT, \
- 0x40, BIT(1) | BIT(0), 0}
- /* GPIO4 definition */
- #define GPIO4_BT_SPI_D0_8821C \
- {HALMAC_BT_SFLASH, HALMAC_GPIO4, HALMAC_GPIO_IN_OUT, \
- 0x66, BIT(4), BIT(4)}
- #define GPIO4_WL_SPI_D0_8821C \
- {HALMAC_WL_SFLASH, HALMAC_GPIO4, HALMAC_GPIO_IN_OUT, \
- 0x42, BIT(3), BIT(3)}
- #define GPIO4_SDIO_INT_8821C \
- {HALMAC_SDIO_INT, HALMAC_GPIO4, HALMAC_GPIO_OUT, \
- 0x72, BIT(2), BIT(2)}
- #define GPIO4_JTAG_TRST_8821C \
- {HALMAC_JTAG, HALMAC_GPIO4, HALMAC_GPIO_IN, \
- 0x67, BIT(0), BIT(0)}
- #define GPIO4_DBG_GNT_WL_8821C \
- {HALMAC_DBG_GNT_WL_BT, HALMAC_GPIO4, HALMAC_GPIO_OUT, \
- 0x73, BIT(3), BIT(3)}
- #define GPIO4_WLMAC_DBG_GPIO4_8821C \
- {HALMAC_WLMAC_DBG, HALMAC_GPIO4, HALMAC_GPIO_OUT, \
- 0x40, BIT(1) | BIT(0), BIT(0)}
- #define GPIO4_WLPHY_DBG_GPIO4_8821C \
- {HALMAC_WLPHY_DBG, HALMAC_GPIO4, HALMAC_GPIO_IN_OUT, \
- 0x40, BIT(1) | BIT(0), BIT(1)}
- #define GPIO4_BT_DBG_GPIO4_8821C \
- {HALMAC_BT_DBG, HALMAC_GPIO4, HALMAC_GPIO_OUT, \
- 0x40, BIT(1) | BIT(0), BIT(0) | BIT(1)}
- #define GPIO4_SW_IO_8821C \
- {HALMAC_SW_IO, HALMAC_GPIO4, HALMAC_GPIO_IN_OUT, \
- 0x40, BIT(1) | BIT(0), 0}
- /* GPIO5 definition */
- #define GPIO5_BT_SPI_D1_8821C \
- {HALMAC_BT_SFLASH, HALMAC_GPIO5, HALMAC_GPIO_IN_OUT, \
- 0x66, BIT(4), BIT(4)}
- #define GPIO5_WL_SPI_D1_8821C \
- {HALMAC_WL_SFLASH, HALMAC_GPIO5, HALMAC_GPIO_IN_OUT, \
- 0x42, BIT(3), BIT(3)}
- #define GPIO5_JTAG_TDI_8821C \
- {HALMAC_JTAG, HALMAC_GPIO5, HALMAC_GPIO_IN, \
- 0x67, BIT(0), BIT(0)}
- #define GPIO5_DBG_GNT_BT_8821C \
- {HALMAC_DBG_GNT_WL_BT, HALMAC_GPIO5, HALMAC_GPIO_OUT, \
- 0x73, BIT(3), BIT(3)}
- #define GPIO5_WLMAC_DBG_GPIO5_8821C \
- {HALMAC_WLMAC_DBG, HALMAC_GPIO5, HALMAC_GPIO_OUT, \
- 0x40, BIT(1) | BIT(0), BIT(0)}
- #define GPIO5_WLPHY_DBG_GPIO5_8821C \
- {HALMAC_WLPHY_DBG, HALMAC_GPIO5, HALMAC_GPIO_IN_OUT, \
- 0x40, BIT(1) | BIT(0), BIT(1)}
- #define GPIO5_BT_DBG_GPIO5_8821C \
- {HALMAC_BT_DBG, HALMAC_GPIO5, HALMAC_GPIO_OUT, \
- 0x40, BIT(1) | BIT(0), BIT(0) | BIT(1)}
- #define GPIO5_SW_IO_8821C \
- {HALMAC_SW_IO, HALMAC_GPIO5, HALMAC_GPIO_IN_OUT, \
- 0x40, BIT(1) | BIT(0), 0}
- /* GPIO6 definition */
- #define GPIO6_BT_SPI_D2_8821C \
- {HALMAC_BT_SFLASH, HALMAC_GPIO6, HALMAC_GPIO_IN_OUT, \
- 0x66, BIT(4), BIT(4)}
- #define GPIO6_WL_SPI_D2_8821C \
- {HALMAC_WL_SFLASH, HALMAC_GPIO6, HALMAC_GPIO_IN_OUT, \
- 0x42, BIT(3), BIT(3)}
- #define GPIO6_EEDO_8821C \
- {HALMAC_EEPROM, HALMAC_GPIO6, HALMAC_GPIO_IN, \
- 0x40, BIT(4), BIT(4)}
- #define GPIO6_JTAG_TDO_8821C \
- {HALMAC_JTAG, HALMAC_GPIO6, HALMAC_GPIO_OUT, \
- 0x67, BIT(0), BIT(0)}
- #define GPIO6_BT_3DD_SYNC_B_8821C \
- {HALMAC_BT_3DDLS_B, HALMAC_GPIO6, HALMAC_GPIO_IN, \
- 0x67, BIT(1), BIT(1)}
- #define GPIO6_BT_GPIO18_8821C \
- {HALMAC_BT_GPIO, HALMAC_GPIO6, HALMAC_GPIO_IN_OUT, \
- 0x67, BIT(1), BIT(1)}
- #define GPIO6_SIN_8821C \
- {HALMAC_WL_UART, HALMAC_GPIO6, HALMAC_GPIO_IN, \
- 0x41, BIT(0), BIT(0)}
- #define GPIO6_WLMAC_DBG_GPIO6_8821C \
- {HALMAC_WLMAC_DBG, HALMAC_GPIO6, HALMAC_GPIO_OUT, \
- 0x40, BIT(1) | BIT(0), BIT(0)}
- #define GPIO6_WLPHY_DBG_GPIO6_8821C \
- {HALMAC_WLPHY_DBG, HALMAC_GPIO6, HALMAC_GPIO_IN_OUT, \
- 0x40, BIT(1) | BIT(0), BIT(1)}
- #define GPIO6_BT_DBG_GPIO6_8821C \
- {HALMAC_BT_DBG, HALMAC_GPIO6, HALMAC_GPIO_OUT, \
- 0x40, BIT(1) | BIT(0), BIT(0) | BIT(1)}
- #define GPIO6_SW_IO_8821C \
- {HALMAC_SW_IO, HALMAC_GPIO6, HALMAC_GPIO_IN_OUT, \
- 0x40, BIT(1) | BIT(0), 0}
- /* GPIO7 definition */
- #define GPIO7_BT_SPI_D3_8821C \
- {HALMAC_BT_SFLASH, HALMAC_GPIO7, HALMAC_GPIO_IN_OUT, \
- 0x66, BIT(4), BIT(4)}
- #define GPIO7_WL_SPI_D3_8821C \
- {HALMAC_WL_SFLASH, HALMAC_GPIO7, HALMAC_GPIO_IN_OUT, \
- 0x42, BIT(3), BIT(3)}
- #define GPIO7_EEDI_8821C \
- {HALMAC_EEPROM, HALMAC_GPIO7, HALMAC_GPIO_OUT, \
- 0x40, BIT(4), BIT(4)}
- #define GPIO7_JTAG_TMS_8821C \
- {HALMAC_JTAG, HALMAC_GPIO7, HALMAC_GPIO_IN, \
- 0x67, BIT(0), BIT(0)}
- #define GPIO7_BT_GPIO16_8821C \
- {HALMAC_BT_GPIO, HALMAC_GPIO7, HALMAC_GPIO_IN_OUT, \
- 0x67, BIT(2), BIT(2)}
- #define GPIO7_SOUT_8821C \
- {HALMAC_WL_UART, HALMAC_GPIO7, HALMAC_GPIO_OUT, \
- 0x41, BIT(0), BIT(0)}
- #define GPIO7_WLMAC_DBG_GPIO7_8821C \
- {HALMAC_WLMAC_DBG, HALMAC_GPIO7, HALMAC_GPIO_OUT, \
- 0x40, BIT(1) | BIT(0), BIT(0)}
- #define GPIO7_WLPHY_DBG_GPIO7_8821C \
- {HALMAC_WLPHY_DBG, HALMAC_GPIO7, HALMAC_GPIO_IN_OUT, \
- 0x40, BIT(1) | BIT(0), BIT(1)}
- #define GPIO7_BT_DBG_GPIO7_8821C \
- {HALMAC_BT_DBG, HALMAC_GPIO7, HALMAC_GPIO_OUT, \
- 0x40, BIT(1) | BIT(0), BIT(0) | BIT(1)}
- #define GPIO7_SW_IO_8821C \
- {HALMAC_SW_IO, HALMAC_GPIO7, HALMAC_GPIO_IN_OUT, \
- 0x40, BIT(1) | BIT(0), 0}
- /* GPIO8 definition */
- #define GPIO8_WL_EXT_WOL_8821C \
- {HALMAC_WL_HW_EXTWOL, HALMAC_GPIO8, HALMAC_GPIO_IN, \
- 0x4a, BIT(0) | BIT(1), BIT(0) | BIT(1)}
- #define GPIO8_WL_LED_8821C \
- {HALMAC_WL_LED, HALMAC_GPIO8, HALMAC_GPIO_OUT, \
- 0x4e, BIT(5), BIT(5)}
- #define GPIO8_SW_IO_8821C \
- {HALMAC_SW_IO, HALMAC_GPIO8, HALMAC_GPIO_IN_OUT, \
- 0x40, BIT(1) | BIT(0), 0}
- /* GPIO9 definition */
- #define GPIO9_DIS_WL_N_8821C \
- {HALMAC_WL_HWPDN, HALMAC_GPIO9, HALMAC_GPIO_IN, \
- 0x68, BIT(3) | BIT(0), BIT(3) | BIT(0)}
- #define GPIO9_WL_EXT_WOL_8821C \
- {HALMAC_WL_HW_EXTWOL, HALMAC_GPIO9, HALMAC_GPIO_IN, \
- 0x4a, BIT(0) | BIT(1), BIT(0)}
- #define GPIO9_USCTS0_8821C \
- {HALMAC_UART0, HALMAC_GPIO9, HALMAC_GPIO_IN, \
- 0x66, BIT(6), BIT(6)}
- #define GPIO9_SW_IO_8821C \
- {HALMAC_SW_IO, HALMAC_GPIO9, HALMAC_GPIO_IN_OUT, \
- 0x40, BIT(1) | BIT(0), 0}
- /* GPIO10 definition */
- #define GPIO10_SW_IO_8821C \
- {HALMAC_SW_IO, HALMAC_GPIO10, HALMAC_GPIO_IN_OUT, \
- 0x40, BIT(1) | BIT(0), 0}
- /* GPIO11 definition */
- #define GPIO11_DIS_BT_N_8821C \
- {HALMAC_BT_HWPDN, HALMAC_GPIO11, HALMAC_GPIO_IN, \
- 0x6a, BIT(0), BIT(0)}
- #define GPIO11_USOUT0_8821C \
- {HALMAC_UART0, HALMAC_GPIO11, HALMAC_GPIO_OUT, \
- 0x66, BIT(6), BIT(6)}
- #define GPIO11_SW_IO_8821C \
- {HALMAC_SW_IO, HALMAC_GPIO11, HALMAC_GPIO_IN_OUT, \
- 0x40, BIT(1) | BIT(0), 0}
- /* GPIO12 definition */
- #define GPIO12_USIN0_8821C \
- {HALMAC_UART0, HALMAC_GPIO12, HALMAC_GPIO_IN, \
- 0x66, BIT(6), BIT(6)}
- #define GPIO12_SW_IO_8821C \
- {HALMAC_SW_IO, HALMAC_GPIO12, HALMAC_GPIO_IN_OUT, \
- 0x40, BIT(1) | BIT(0), 0}
- /* GPIO13 definition */
- #define GPIO13_BT_WAKE_8821C \
- {HALMAC_GPIO13_14_WL_CTRL_EN, HALMAC_GPIO13, HALMAC_GPIO_IN, \
- 0x4e, BIT(6), BIT(6)}
- #define GPIO13_SW_IO_8821C \
- {HALMAC_SW_IO, HALMAC_GPIO13, HALMAC_GPIO_IN_OUT, \
- 0x40, BIT(1) | BIT(0), 0}
- /* GPIO14 definition */
- #define GPIO14_UART_WAKE_8821C \
- {HALMAC_GPIO13_14_WL_CTRL_EN, HALMAC_GPIO14, HALMAC_GPIO_OUT, \
- 0x4e, BIT(6), BIT(6)}
- #define GPIO14_SW_IO_8821C \
- {HALMAC_SW_IO, HALMAC_GPIO14, HALMAC_GPIO_IN_OUT, \
- 0x40, BIT(1) | BIT(0), 0}
- /* GPIO15 definition */
- #define GPIO15_EXT_XTAL_8821C \
- {HALMAC_EXT_XTAL, HALMAC_GPIO15, HALMAC_GPIO_OUT, \
- 0x66, BIT(7), BIT(7)}
- #define GPIO15_SW_IO_8821C \
- {HALMAC_SW_IO, HALMAC_GPIO15, HALMAC_GPIO_IN_OUT, \
- 0x40, BIT(1) | BIT(0), 0}
- static const struct halmac_gpio_pimux_list PINMUX_LIST_GPIO0_8821C[] = {
- GPIO0_BT_GPIO0_8821C,
- GPIO0_BT_ACT_8821C,
- GPIO0_WL_ACT_8821C,
- GPIO0_WLMAC_DBG_GPIO0_8821C,
- GPIO0_WLPHY_DBG_GPIO0_8821C,
- GPIO0_BT_DBG_GPIO0_8821C,
- GPIO0_SW_IO_8821C
- };
- static const struct halmac_gpio_pimux_list PINMUX_LIST_GPIO1_8821C[] = {
- GPIO1_BT_GPIO1_8821C,
- GPIO1_BT_3DD_SYNC_A_8821C,
- GPIO1_WL_CK_8821C,
- GPIO1_BT_CK_8821C,
- GPIO1_WLMAC_DBG_GPIO1_8821C,
- GPIO1_WLPHY_DBG_GPIO1_8821C,
- GPIO1_BT_DBG_GPIO1_8821C,
- GPIO1_SW_IO_8821C
- };
- static const struct halmac_gpio_pimux_list PINMUX_LIST_GPIO2_8821C[] = {
- GPIO2_BT_GPIO2_8821C,
- GPIO2_WL_STATE_8821C,
- GPIO2_BT_STATE_8821C,
- GPIO2_WLMAC_DBG_GPIO2_8821C,
- GPIO2_WLPHY_DBG_GPIO2_8821C,
- GPIO2_BT_DBG_GPIO2_8821C,
- GPIO2_RFE_CTRL_5_8821C,
- GPIO2_SW_IO_8821C
- };
- static const struct halmac_gpio_pimux_list PINMUX_LIST_GPIO3_8821C[] = {
- GPIO3_BT_GPIO3_8821C,
- GPIO3_WL_PRI_8821C,
- GPIO3_BT_PRI_8821C,
- GPIO3_WLMAC_DBG_GPIO3_8821C,
- GPIO3_WLPHY_DBG_GPIO3_8821C,
- GPIO3_BT_DBG_GPIO3_8821C,
- GPIO3_RFE_CTRL_4_8821C,
- GPIO3_SW_IO_8821C
- };
- static const struct halmac_gpio_pimux_list PINMUX_LIST_GPIO4_8821C[] = {
- GPIO4_BT_SPI_D0_8821C,
- GPIO4_WL_SPI_D0_8821C,
- GPIO4_SDIO_INT_8821C,
- GPIO4_JTAG_TRST_8821C,
- GPIO4_DBG_GNT_WL_8821C,
- GPIO4_WLMAC_DBG_GPIO4_8821C,
- GPIO4_WLPHY_DBG_GPIO4_8821C,
- GPIO4_BT_DBG_GPIO4_8821C,
- GPIO4_SW_IO_8821C
- };
- static const struct halmac_gpio_pimux_list PINMUX_LIST_GPIO5_8821C[] = {
- GPIO5_BT_SPI_D1_8821C,
- GPIO5_WL_SPI_D1_8821C,
- GPIO5_JTAG_TDI_8821C,
- GPIO5_DBG_GNT_BT_8821C,
- GPIO5_WLMAC_DBG_GPIO5_8821C,
- GPIO5_WLPHY_DBG_GPIO5_8821C,
- GPIO5_BT_DBG_GPIO5_8821C,
- GPIO5_SW_IO_8821C
- };
- static const struct halmac_gpio_pimux_list PINMUX_LIST_GPIO6_8821C[] = {
- GPIO6_BT_SPI_D2_8821C,
- GPIO6_WL_SPI_D2_8821C,
- GPIO6_EEDO_8821C,
- GPIO6_JTAG_TDO_8821C,
- GPIO6_BT_3DD_SYNC_B_8821C,
- GPIO6_BT_GPIO18_8821C,
- GPIO6_SIN_8821C,
- GPIO6_WLMAC_DBG_GPIO6_8821C,
- GPIO6_WLPHY_DBG_GPIO6_8821C,
- GPIO6_BT_DBG_GPIO6_8821C,
- GPIO6_SW_IO_8821C
- };
- static const struct halmac_gpio_pimux_list PINMUX_LIST_GPIO7_8821C[] = {
- GPIO7_BT_SPI_D3_8821C,
- GPIO7_WL_SPI_D3_8821C,
- GPIO7_EEDI_8821C,
- GPIO7_JTAG_TMS_8821C,
- GPIO7_BT_GPIO16_8821C,
- GPIO7_SOUT_8821C,
- GPIO7_WLMAC_DBG_GPIO7_8821C,
- GPIO7_WLPHY_DBG_GPIO7_8821C,
- GPIO7_BT_DBG_GPIO7_8821C,
- GPIO7_SW_IO_8821C
- };
- static const struct halmac_gpio_pimux_list PINMUX_LIST_GPIO8_8821C[] = {
- GPIO8_WL_EXT_WOL_8821C,
- GPIO8_WL_LED_8821C,
- GPIO8_SW_IO_8821C
- };
- static const struct halmac_gpio_pimux_list PINMUX_LIST_GPIO9_8821C[] = {
- GPIO9_DIS_WL_N_8821C,
- GPIO9_WL_EXT_WOL_8821C,
- GPIO9_USCTS0_8821C,
- GPIO9_SW_IO_8821C
- };
- static const struct halmac_gpio_pimux_list PINMUX_LIST_GPIO10_8821C[] = {
- GPIO10_SW_IO_8821C
- };
- static const struct halmac_gpio_pimux_list PINMUX_LIST_GPIO11_8821C[] = {
- GPIO11_DIS_BT_N_8821C,
- GPIO11_USOUT0_8821C,
- GPIO11_SW_IO_8821C
- };
- static const struct halmac_gpio_pimux_list PINMUX_LIST_GPIO12_8821C[] = {
- GPIO12_USIN0_8821C,
- GPIO12_SW_IO_8821C
- };
- static const struct halmac_gpio_pimux_list PINMUX_LIST_GPIO13_8821C[] = {
- GPIO13_BT_WAKE_8821C,
- GPIO13_SW_IO_8821C
- };
- static const struct halmac_gpio_pimux_list PINMUX_LIST_GPIO14_8821C[] = {
- GPIO14_UART_WAKE_8821C,
- GPIO14_SW_IO_8821C
- };
- static const struct halmac_gpio_pimux_list PINMUX_LIST_GPIO15_8821C[] = {
- GPIO15_EXT_XTAL_8821C,
- GPIO15_SW_IO_8821C
- };
- static enum halmac_ret_status
- get_pinmux_list_8821c(struct halmac_adapter *adapter,
- enum halmac_gpio_func gpio_func,
- const struct halmac_gpio_pimux_list **list,
- u32 *list_size, u32 *gpio_id);
- static enum halmac_ret_status
- chk_pinmux_valid_8821c(struct halmac_adapter *adapter,
- enum halmac_gpio_func gpio_func);
- /**
- * pinmux_get_func_8821c() -get current gpio status
- * @adapter : the adapter of halmac
- * @gpio_func : gpio function
- * @enable : function is enable(1) or disable(0)
- * Author : Ivan Lin
- * Return : enum halmac_ret_status
- * More details of status code can be found in prototype document
- */
- enum halmac_ret_status
- pinmux_get_func_8821c(struct halmac_adapter *adapter,
- enum halmac_gpio_func gpio_func, u8 *enable)
- {
- u32 list_size;
- u32 cur_func;
- u32 gpio_id;
- enum halmac_ret_status status;
- const struct halmac_gpio_pimux_list *list = NULL;
- PLTFM_MSG_TRACE("[TRACE]%s ===>\n", __func__);
- status = get_pinmux_list_8821c(adapter, gpio_func, &list, &list_size,
- &gpio_id);
- if (status != HALMAC_RET_SUCCESS)
- return status;
- status = pinmux_parser_88xx(adapter, list, list_size, gpio_id,
- &cur_func);
- if (status != HALMAC_RET_SUCCESS)
- return status;
- switch (gpio_func) {
- case HALMAC_GPIO_FUNC_WL_LED:
- *enable = (cur_func == HALMAC_WL_LED) ? 1 : 0;
- break;
- case HALMAC_GPIO_FUNC_SDIO_INT:
- *enable = (cur_func == HALMAC_SDIO_INT) ? 1 : 0;
- break;
- case HALMAC_GPIO_FUNC_BT_HOST_WAKE1:
- case HALMAC_GPIO_FUNC_BT_DEV_WAKE1:
- *enable = (cur_func == HALMAC_GPIO13_14_WL_CTRL_EN) ? 1 : 0;
- break;
- case HALMAC_GPIO_FUNC_SW_IO_0:
- case HALMAC_GPIO_FUNC_SW_IO_1:
- case HALMAC_GPIO_FUNC_SW_IO_2:
- case HALMAC_GPIO_FUNC_SW_IO_3:
- case HALMAC_GPIO_FUNC_SW_IO_4:
- case HALMAC_GPIO_FUNC_SW_IO_5:
- case HALMAC_GPIO_FUNC_SW_IO_6:
- case HALMAC_GPIO_FUNC_SW_IO_7:
- case HALMAC_GPIO_FUNC_SW_IO_8:
- case HALMAC_GPIO_FUNC_SW_IO_9:
- case HALMAC_GPIO_FUNC_SW_IO_10:
- case HALMAC_GPIO_FUNC_SW_IO_11:
- case HALMAC_GPIO_FUNC_SW_IO_12:
- case HALMAC_GPIO_FUNC_SW_IO_13:
- case HALMAC_GPIO_FUNC_SW_IO_14:
- case HALMAC_GPIO_FUNC_SW_IO_15:
- *enable = (cur_func == HALMAC_SW_IO) ? 1 : 0;
- break;
- default:
- *enable = 0;
- return HALMAC_RET_GET_PINMUX_ERR;
- }
- PLTFM_MSG_TRACE("[TRACE]%s <===\n", __func__);
- return HALMAC_RET_SUCCESS;
- }
- /**
- * pinmux_set_func_8821c() -set gpio function
- * @adapter : the adapter of halmac
- * @gpio_func : gpio function
- * Author : Ivan Lin
- * Return : enum halmac_ret_status
- * More details of status code can be found in prototype document
- */
- enum halmac_ret_status
- pinmux_set_func_8821c(struct halmac_adapter *adapter,
- enum halmac_gpio_func gpio_func)
- {
- u32 list_size;
- u32 gpio_id;
- enum halmac_ret_status status;
- const struct halmac_gpio_pimux_list *list = NULL;
- PLTFM_MSG_TRACE("[TRACE]%s ===>\n", __func__);
- PLTFM_MSG_TRACE("[TRACE]func name : %d\n", gpio_func);
- status = chk_pinmux_valid_8821c(adapter, gpio_func);
- if (status != HALMAC_RET_SUCCESS)
- return status;
- status = get_pinmux_list_8821c(adapter, gpio_func, &list, &list_size,
- &gpio_id);
- if (status != HALMAC_RET_SUCCESS)
- return status;
- status = pinmux_switch_88xx(adapter, list, list_size, gpio_id,
- gpio_func);
- if (status != HALMAC_RET_SUCCESS)
- return status;
- status = pinmux_record_88xx(adapter, gpio_func, 1);
- if (status != HALMAC_RET_SUCCESS)
- return status;
- PLTFM_MSG_TRACE("[TRACE]%s <===\n", __func__);
- return HALMAC_RET_SUCCESS;
- }
- /**
- * pinmux_free_func_8821c() -free locked gpio function
- * @adapter : the adapter of halmac
- * @gpio_func : gpio function
- * Author : Ivan Lin
- * Return : enum halmac_ret_status
- * More details of status code can be found in prototype document
- */
- enum halmac_ret_status
- pinmux_free_func_8821c(struct halmac_adapter *adapter,
- enum halmac_gpio_func gpio_func)
- {
- struct halmac_pinmux_info *info = &adapter->pinmux_info;
- PLTFM_MSG_TRACE("[TRACE]%s ===>\n", __func__);
- switch (gpio_func) {
- case HALMAC_GPIO_FUNC_SW_IO_0:
- info->sw_io_0 = 0;
- break;
- case HALMAC_GPIO_FUNC_SW_IO_1:
- info->sw_io_1 = 0;
- break;
- case HALMAC_GPIO_FUNC_SW_IO_2:
- info->sw_io_2 = 0;
- break;
- case HALMAC_GPIO_FUNC_SW_IO_3:
- info->sw_io_3 = 0;
- break;
- case HALMAC_GPIO_FUNC_SW_IO_4:
- case HALMAC_GPIO_FUNC_SDIO_INT:
- info->sw_io_4 = 0;
- info->sdio_int = 0;
- break;
- case HALMAC_GPIO_FUNC_SW_IO_5:
- info->sw_io_5 = 0;
- break;
- case HALMAC_GPIO_FUNC_SW_IO_6:
- info->sw_io_6 = 0;
- break;
- case HALMAC_GPIO_FUNC_SW_IO_7:
- info->sw_io_7 = 0;
- break;
- case HALMAC_GPIO_FUNC_SW_IO_8:
- case HALMAC_GPIO_FUNC_WL_LED:
- info->sw_io_8 = 0;
- info->wl_led = 0;
- break;
- case HALMAC_GPIO_FUNC_SW_IO_9:
- info->sw_io_9 = 0;
- break;
- case HALMAC_GPIO_FUNC_SW_IO_10:
- info->sw_io_10 = 0;
- break;
- case HALMAC_GPIO_FUNC_SW_IO_11:
- info->sw_io_11 = 0;
- break;
- case HALMAC_GPIO_FUNC_SW_IO_12:
- info->sw_io_12 = 0;
- break;
- case HALMAC_GPIO_FUNC_SW_IO_13:
- case HALMAC_GPIO_FUNC_BT_DEV_WAKE1:
- info->bt_dev_wake = 0;
- info->sw_io_13 = 0;
- break;
- case HALMAC_GPIO_FUNC_SW_IO_14:
- case HALMAC_GPIO_FUNC_BT_HOST_WAKE1:
- info->bt_host_wake = 0;
- info->sw_io_14 = 0;
- break;
- case HALMAC_GPIO_FUNC_SW_IO_15:
- info->sw_io_15 = 0;
- break;
- default:
- return HALMAC_RET_SWITCH_CASE_ERROR;
- }
- PLTFM_MSG_TRACE("[TRACE]func : %X\n", gpio_func);
- PLTFM_MSG_TRACE("[TRACE]%s <===\n", __func__);
- return HALMAC_RET_SUCCESS;
- }
- static enum halmac_ret_status
- get_pinmux_list_8821c(struct halmac_adapter *adapter,
- enum halmac_gpio_func gpio_func,
- const struct halmac_gpio_pimux_list **list,
- u32 *list_size, u32 *gpio_id)
- {
- switch (gpio_func) {
- case HALMAC_GPIO_FUNC_SW_IO_0:
- *list = PINMUX_LIST_GPIO0_8821C;
- *list_size = ARRAY_SIZE(PINMUX_LIST_GPIO0_8821C);
- *gpio_id = HALMAC_GPIO0;
- break;
- case HALMAC_GPIO_FUNC_SW_IO_1:
- *list = PINMUX_LIST_GPIO1_8821C;
- *list_size = ARRAY_SIZE(PINMUX_LIST_GPIO1_8821C);
- *gpio_id = HALMAC_GPIO1;
- break;
- case HALMAC_GPIO_FUNC_SW_IO_2:
- *list = PINMUX_LIST_GPIO2_8821C;
- *list_size = ARRAY_SIZE(PINMUX_LIST_GPIO2_8821C);
- *gpio_id = HALMAC_GPIO2;
- break;
- case HALMAC_GPIO_FUNC_SW_IO_3:
- *list = PINMUX_LIST_GPIO3_8821C;
- *list_size = ARRAY_SIZE(PINMUX_LIST_GPIO3_8821C);
- *gpio_id = HALMAC_GPIO3;
- break;
- case HALMAC_GPIO_FUNC_SW_IO_4:
- case HALMAC_GPIO_FUNC_SDIO_INT:
- *list = PINMUX_LIST_GPIO4_8821C;
- *list_size = ARRAY_SIZE(PINMUX_LIST_GPIO4_8821C);
- *gpio_id = HALMAC_GPIO4;
- break;
- case HALMAC_GPIO_FUNC_SW_IO_5:
- *list = PINMUX_LIST_GPIO5_8821C;
- *list_size = ARRAY_SIZE(PINMUX_LIST_GPIO5_8821C);
- *gpio_id = HALMAC_GPIO5;
- break;
- case HALMAC_GPIO_FUNC_SW_IO_6:
- *list = PINMUX_LIST_GPIO6_8821C;
- *list_size = ARRAY_SIZE(PINMUX_LIST_GPIO6_8821C);
- *gpio_id = HALMAC_GPIO6;
- break;
- case HALMAC_GPIO_FUNC_SW_IO_7:
- *list = PINMUX_LIST_GPIO7_8821C;
- *list_size = ARRAY_SIZE(PINMUX_LIST_GPIO7_8821C);
- *gpio_id = HALMAC_GPIO7;
- break;
- case HALMAC_GPIO_FUNC_SW_IO_8:
- case HALMAC_GPIO_FUNC_WL_LED:
- *list = PINMUX_LIST_GPIO8_8821C;
- *list_size = ARRAY_SIZE(PINMUX_LIST_GPIO8_8821C);
- *gpio_id = HALMAC_GPIO8;
- break;
- case HALMAC_GPIO_FUNC_SW_IO_9:
- *list = PINMUX_LIST_GPIO9_8821C;
- *list_size = ARRAY_SIZE(PINMUX_LIST_GPIO9_8821C);
- *gpio_id = HALMAC_GPIO9;
- break;
- case HALMAC_GPIO_FUNC_SW_IO_10:
- *list = PINMUX_LIST_GPIO10_8821C;
- *list_size = ARRAY_SIZE(PINMUX_LIST_GPIO10_8821C);
- *gpio_id = HALMAC_GPIO10;
- break;
- case HALMAC_GPIO_FUNC_SW_IO_11:
- *list = PINMUX_LIST_GPIO11_8821C;
- *list_size = ARRAY_SIZE(PINMUX_LIST_GPIO11_8821C);
- *gpio_id = HALMAC_GPIO11;
- break;
- case HALMAC_GPIO_FUNC_SW_IO_12:
- *list = PINMUX_LIST_GPIO12_8821C;
- *list_size = ARRAY_SIZE(PINMUX_LIST_GPIO12_8821C);
- *gpio_id = HALMAC_GPIO12;
- break;
- case HALMAC_GPIO_FUNC_SW_IO_13:
- case HALMAC_GPIO_FUNC_BT_DEV_WAKE1:
- *list = PINMUX_LIST_GPIO13_8821C;
- *list_size = ARRAY_SIZE(PINMUX_LIST_GPIO13_8821C);
- *gpio_id = HALMAC_GPIO13;
- break;
- case HALMAC_GPIO_FUNC_SW_IO_14:
- case HALMAC_GPIO_FUNC_BT_HOST_WAKE1:
- *list = PINMUX_LIST_GPIO14_8821C;
- *list_size = ARRAY_SIZE(PINMUX_LIST_GPIO14_8821C);
- *gpio_id = HALMAC_GPIO14;
- break;
- case HALMAC_GPIO_FUNC_SW_IO_15:
- *list = PINMUX_LIST_GPIO15_8821C;
- *list_size = ARRAY_SIZE(PINMUX_LIST_GPIO15_8821C);
- *gpio_id = HALMAC_GPIO15;
- break;
- default:
- return HALMAC_RET_SWITCH_CASE_ERROR;
- }
- return HALMAC_RET_SUCCESS;
- }
- static enum halmac_ret_status
- chk_pinmux_valid_8821c(struct halmac_adapter *adapter,
- enum halmac_gpio_func gpio_func)
- {
- struct halmac_pinmux_info *info = &adapter->pinmux_info;
- enum halmac_ret_status status = HALMAC_RET_SUCCESS;
- switch (gpio_func) {
- case HALMAC_GPIO_FUNC_SW_IO_0:
- if (info->sw_io_0 == 1)
- status = HALMAC_RET_PINMUX_USED;
- break;
- case HALMAC_GPIO_FUNC_SW_IO_1:
- if (info->sw_io_1 == 1)
- status = HALMAC_RET_PINMUX_USED;
- break;
- case HALMAC_GPIO_FUNC_SW_IO_2:
- if (info->sw_io_2 == 1)
- status = HALMAC_RET_PINMUX_USED;
- break;
- case HALMAC_GPIO_FUNC_SW_IO_3:
- if (info->sw_io_3 == 1)
- status = HALMAC_RET_PINMUX_USED;
- break;
- case HALMAC_GPIO_FUNC_SW_IO_4:
- case HALMAC_GPIO_FUNC_SDIO_INT:
- if (info->sw_io_4 == 1 || info->sdio_int == 1)
- status = HALMAC_RET_PINMUX_USED;
- break;
- case HALMAC_GPIO_FUNC_SW_IO_5:
- if (info->sw_io_5 == 1)
- status = HALMAC_RET_PINMUX_USED;
- break;
- case HALMAC_GPIO_FUNC_SW_IO_6:
- if (info->sw_io_6 == 1)
- status = HALMAC_RET_PINMUX_USED;
- break;
- case HALMAC_GPIO_FUNC_SW_IO_7:
- if (info->sw_io_7 == 1)
- status = HALMAC_RET_PINMUX_USED;
- break;
- case HALMAC_GPIO_FUNC_SW_IO_8:
- case HALMAC_GPIO_FUNC_WL_LED:
- if (info->sw_io_8 == 1 || info->wl_led == 1)
- status = HALMAC_RET_PINMUX_USED;
- break;
- case HALMAC_GPIO_FUNC_SW_IO_9:
- if (info->sw_io_9 == 1)
- status = HALMAC_RET_PINMUX_USED;
- break;
- case HALMAC_GPIO_FUNC_SW_IO_10:
- if (info->sw_io_10 == 1)
- status = HALMAC_RET_PINMUX_USED;
- break;
- case HALMAC_GPIO_FUNC_SW_IO_11:
- if (info->sw_io_11 == 1)
- status = HALMAC_RET_PINMUX_USED;
- break;
- case HALMAC_GPIO_FUNC_SW_IO_12:
- if (info->sw_io_12 == 1)
- status = HALMAC_RET_PINMUX_USED;
- break;
- case HALMAC_GPIO_FUNC_SW_IO_13:
- case HALMAC_GPIO_FUNC_BT_DEV_WAKE1:
- if (info->sw_io_13 == 1 || info->bt_dev_wake == 1)
- status = HALMAC_RET_PINMUX_USED;
- break;
- case HALMAC_GPIO_FUNC_SW_IO_14:
- case HALMAC_GPIO_FUNC_BT_HOST_WAKE1:
- if (info->sw_io_14 == 1 || info->bt_host_wake == 1)
- status = HALMAC_RET_PINMUX_USED;
- break;
- case HALMAC_GPIO_FUNC_SW_IO_15:
- if (info->sw_io_15 == 1)
- status = HALMAC_RET_PINMUX_USED;
- break;
- default:
- return HALMAC_RET_SWITCH_CASE_ERROR;
- }
- PLTFM_MSG_TRACE("[TRACE]chk_pinmux_valid func : %X status : %X\n",
- gpio_func, status);
- return status;
- }
- #endif /* HALMAC_8821C_SUPPORT */
|