svn commit: r188974 - in head/sys/dev/ath: . ath_hal ath_hal/ar5210
ath_hal/ar5211 ath_hal/ar5212 ath_hal/ar5312 ath_hal/ar5416
Sam Leffler
sam at FreeBSD.org
Mon Feb 23 16:12:17 PST 2009
Author: sam
Date: Tue Feb 24 00:12:16 2009
New Revision: 188974
URL: http://svn.freebsd.org/changeset/base/188974
Log:
5416 and later parts mux the gpio outputs; extend the api to include
a signal type that's used to select the appropriate mux
Modified:
head/sys/dev/ath/ath_hal/ah.h
head/sys/dev/ath/ath_hal/ah_internal.h
head/sys/dev/ath/ath_hal/ar5210/ar5210.h
head/sys/dev/ath/ath_hal/ar5210/ar5210_misc.c
head/sys/dev/ath/ath_hal/ar5211/ar5211.h
head/sys/dev/ath/ath_hal/ar5211/ar5211_misc.c
head/sys/dev/ath/ath_hal/ar5212/ar5212.h
head/sys/dev/ath/ath_hal/ar5212/ar5212_gpio.c
head/sys/dev/ath/ath_hal/ar5312/ar5312.h
head/sys/dev/ath/ath_hal/ar5312/ar5312_gpio.c
head/sys/dev/ath/ath_hal/ar5312/ar5315_gpio.c
head/sys/dev/ath/ath_hal/ar5416/ar5416.h
head/sys/dev/ath/ath_hal/ar5416/ar5416_gpio.c
head/sys/dev/ath/if_ath.c
head/sys/dev/ath/if_athvar.h
Modified: head/sys/dev/ath/ath_hal/ah.h
==============================================================================
--- head/sys/dev/ath/ath_hal/ah.h Tue Feb 24 00:03:14 2009 (r188973)
+++ head/sys/dev/ath/ath_hal/ah.h Tue Feb 24 00:12:16 2009 (r188974)
@@ -359,6 +359,22 @@ typedef enum {
} HAL_INT;
typedef enum {
+ HAL_GPIO_MUX_OUTPUT = 0,
+ HAL_GPIO_MUX_PCIE_ATTENTION_LED = 1,
+ HAL_GPIO_MUX_PCIE_POWER_LED = 2,
+ HAL_GPIO_MUX_TX_FRAME = 3,
+ HAL_GPIO_MUX_RX_CLEAR_EXTERNAL = 4,
+ HAL_GPIO_MUX_MAC_NETWORK_LED = 5,
+ HAL_GPIO_MUX_MAC_POWER_LED = 6
+} HAL_GPIO_MUX_TYPE;
+
+typedef enum {
+ HAL_GPIO_INTR_LOW = 0,
+ HAL_GPIO_INTR_HIGH = 1,
+ HAL_GPIO_INTR_DISABLE = 2
+} HAL_GPIO_INTR_TYPE;
+
+typedef enum {
HAL_RFGAIN_INACTIVE = 0,
HAL_RFGAIN_READ_REQUESTED = 1,
HAL_RFGAIN_NEED_CHANGE = 2
@@ -700,7 +716,8 @@ struct ath_hal {
void __ahdecl(*ah_setLedState)(struct ath_hal*, HAL_LED_STATE);
void __ahdecl(*ah_writeAssocid)(struct ath_hal*,
const uint8_t *bssid, uint16_t assocId);
- HAL_BOOL __ahdecl(*ah_gpioCfgOutput)(struct ath_hal *, uint32_t gpio);
+ HAL_BOOL __ahdecl(*ah_gpioCfgOutput)(struct ath_hal *,
+ uint32_t gpio, HAL_GPIO_MUX_TYPE);
HAL_BOOL __ahdecl(*ah_gpioCfgInput)(struct ath_hal *, uint32_t gpio);
uint32_t __ahdecl(*ah_gpioGet)(struct ath_hal *, uint32_t gpio);
HAL_BOOL __ahdecl(*ah_gpioSet)(struct ath_hal *,
Modified: head/sys/dev/ath/ath_hal/ah_internal.h
==============================================================================
--- head/sys/dev/ath/ath_hal/ah_internal.h Tue Feb 24 00:03:14 2009 (r188973)
+++ head/sys/dev/ath/ath_hal/ah_internal.h Tue Feb 24 00:12:16 2009 (r188974)
@@ -311,8 +311,8 @@ struct ath_hal_private {
AH_PRIVATE(_ah)->ah_eepromRead(_ah, _off, _data)
#define ath_hal_eepromWrite(_ah, _off, _data) \
AH_PRIVATE(_ah)->ah_eepromWrite(_ah, _off, _data)
-#define ath_hal_gpioCfgOutput(_ah, _gpio) \
- (_ah)->ah_gpioCfgOutput(_ah, _gpio)
+#define ath_hal_gpioCfgOutput(_ah, _gpio, _type) \
+ (_ah)->ah_gpioCfgOutput(_ah, _gpio, _type)
#define ath_hal_gpioCfgInput(_ah, _gpio) \
(_ah)->ah_gpioCfgInput(_ah, _gpio)
#define ath_hal_gpioGet(_ah, _gpio) \
Modified: head/sys/dev/ath/ath_hal/ar5210/ar5210.h
==============================================================================
--- head/sys/dev/ath/ath_hal/ar5210/ar5210.h Tue Feb 24 00:03:14 2009 (r188973)
+++ head/sys/dev/ath/ath_hal/ar5210/ar5210.h Tue Feb 24 00:12:16 2009 (r188974)
@@ -207,7 +207,8 @@ extern HAL_BOOL ar5210SetRegulatoryDomai
extern u_int ar5210GetWirelessModes(struct ath_hal *ah);
extern void ar5210EnableRfKill(struct ath_hal *);
extern HAL_BOOL ar5210GpioCfgInput(struct ath_hal *, uint32_t gpio);
-extern HAL_BOOL ar5210GpioCfgOutput(struct ath_hal *, uint32_t gpio);
+extern HAL_BOOL ar5210GpioCfgOutput(struct ath_hal *, uint32_t gpio,
+ HAL_GPIO_MUX_TYPE);
extern uint32_t ar5210GpioGet(struct ath_hal *, uint32_t gpio);
extern HAL_BOOL ar5210GpioSet(struct ath_hal *, uint32_t gpio, uint32_t);
extern void ar5210Gpio0SetIntr(struct ath_hal *, u_int, uint32_t ilevel);
Modified: head/sys/dev/ath/ath_hal/ar5210/ar5210_misc.c
==============================================================================
--- head/sys/dev/ath/ath_hal/ar5210/ar5210_misc.c Tue Feb 24 00:03:14 2009 (r188973)
+++ head/sys/dev/ath/ath_hal/ar5210/ar5210_misc.c Tue Feb 24 00:12:16 2009 (r188974)
@@ -158,7 +158,7 @@ ar5210EnableRfKill(struct ath_hal *ah)
* Configure GPIO Output lines
*/
HAL_BOOL
-ar5210GpioCfgOutput(struct ath_hal *ah, uint32_t gpio)
+ar5210GpioCfgOutput(struct ath_hal *ah, uint32_t gpio, HAL_GPIO_MUX_TYPE type)
{
HALASSERT(gpio < AR_NUM_GPIO);
Modified: head/sys/dev/ath/ath_hal/ar5211/ar5211.h
==============================================================================
--- head/sys/dev/ath/ath_hal/ar5211/ar5211.h Tue Feb 24 00:03:14 2009 (r188973)
+++ head/sys/dev/ath/ath_hal/ar5211/ar5211.h Tue Feb 24 00:12:16 2009 (r188974)
@@ -233,7 +233,8 @@ extern u_int ar5211GetWirelessModes(stru
extern void ar5211EnableRfKill(struct ath_hal *);
extern uint32_t ar5211GpioGet(struct ath_hal *, uint32_t gpio);
extern void ar5211GpioSetIntr(struct ath_hal *, u_int, uint32_t ilevel);
-extern HAL_BOOL ar5211GpioCfgOutput(struct ath_hal *, uint32_t gpio);
+extern HAL_BOOL ar5211GpioCfgOutput(struct ath_hal *, uint32_t gpio,
+ HAL_GPIO_MUX_TYPE);
extern HAL_BOOL ar5211GpioCfgInput(struct ath_hal *, uint32_t gpio);
extern HAL_BOOL ar5211GpioSet(struct ath_hal *, uint32_t gpio, uint32_t val);
extern void ar5211SetLedState(struct ath_hal *, HAL_LED_STATE);
Modified: head/sys/dev/ath/ath_hal/ar5211/ar5211_misc.c
==============================================================================
--- head/sys/dev/ath/ath_hal/ar5211/ar5211_misc.c Tue Feb 24 00:03:14 2009 (r188973)
+++ head/sys/dev/ath/ath_hal/ar5211/ar5211_misc.c Tue Feb 24 00:12:16 2009 (r188974)
@@ -192,7 +192,7 @@ ar5211EnableRfKill(struct ath_hal *ah)
* Configure GPIO Output lines
*/
HAL_BOOL
-ar5211GpioCfgOutput(struct ath_hal *ah, uint32_t gpio)
+ar5211GpioCfgOutput(struct ath_hal *ah, uint32_t gpio, HAL_GPIO_MUX_TYPE type)
{
uint32_t reg;
Modified: head/sys/dev/ath/ath_hal/ar5212/ar5212.h
==============================================================================
--- head/sys/dev/ath/ath_hal/ar5212/ar5212.h Tue Feb 24 00:03:14 2009 (r188973)
+++ head/sys/dev/ath/ath_hal/ar5212/ar5212.h Tue Feb 24 00:12:16 2009 (r188974)
@@ -450,7 +450,8 @@ extern HAL_BOOL ar5212SetRegulatoryDomai
uint16_t regDomain, HAL_STATUS *stats);
extern u_int ar5212GetWirelessModes(struct ath_hal *ah);
extern void ar5212EnableRfKill(struct ath_hal *);
-extern HAL_BOOL ar5212GpioCfgOutput(struct ath_hal *, uint32_t gpio);
+extern HAL_BOOL ar5212GpioCfgOutput(struct ath_hal *, uint32_t gpio,
+ HAL_GPIO_MUX_TYPE);
extern HAL_BOOL ar5212GpioCfgInput(struct ath_hal *, uint32_t gpio);
extern HAL_BOOL ar5212GpioSet(struct ath_hal *, uint32_t gpio, uint32_t val);
extern uint32_t ar5212GpioGet(struct ath_hal *ah, uint32_t gpio);
Modified: head/sys/dev/ath/ath_hal/ar5212/ar5212_gpio.c
==============================================================================
--- head/sys/dev/ath/ath_hal/ar5212/ar5212_gpio.c Tue Feb 24 00:03:14 2009 (r188973)
+++ head/sys/dev/ath/ath_hal/ar5212/ar5212_gpio.c Tue Feb 24 00:12:16 2009 (r188974)
@@ -14,7 +14,7 @@
* ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
* OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
*
- * $Id: ar5212_gpio.c,v 1.3 2008/11/10 04:08:03 sam Exp $
+ * $FreeBSD$
*/
#include "opt_ah.h"
@@ -36,7 +36,7 @@
* Configure GPIO Output lines
*/
HAL_BOOL
-ar5212GpioCfgOutput(struct ath_hal *ah, uint32_t gpio)
+ar5212GpioCfgOutput(struct ath_hal *ah, uint32_t gpio, HAL_GPIO_MUX_TYPE type)
{
HALASSERT(gpio < AR_NUM_GPIO);
Modified: head/sys/dev/ath/ath_hal/ar5312/ar5312.h
==============================================================================
--- head/sys/dev/ath/ath_hal/ar5312/ar5312.h Tue Feb 24 00:03:14 2009 (r188973)
+++ head/sys/dev/ath/ath_hal/ar5312/ar5312.h Tue Feb 24 00:12:16 2009 (r188974)
@@ -41,14 +41,16 @@
extern HAL_BOOL ar5312IsInterruptPending(struct ath_hal *ah);
/* AR5312 */
-extern HAL_BOOL ar5312GpioCfgOutput(struct ath_hal *, uint32_t gpio);
+extern HAL_BOOL ar5312GpioCfgOutput(struct ath_hal *, uint32_t gpio,
+ HAL_GPIO_MUX_TYPE);
extern HAL_BOOL ar5312GpioCfgInput(struct ath_hal *, uint32_t gpio);
extern HAL_BOOL ar5312GpioSet(struct ath_hal *, uint32_t gpio, uint32_t val);
extern uint32_t ar5312GpioGet(struct ath_hal *ah, uint32_t gpio);
extern void ar5312GpioSetIntr(struct ath_hal *ah, u_int, uint32_t ilevel);
/* AR2315+ */
-extern HAL_BOOL ar5315GpioCfgOutput(struct ath_hal *, uint32_t gpio);
+extern HAL_BOOL ar5315GpioCfgOutput(struct ath_hal *, uint32_t gpio,
+ HAL_GPIO_MUX_TYPE);
extern HAL_BOOL ar5315GpioCfgInput(struct ath_hal *, uint32_t gpio);
extern HAL_BOOL ar5315GpioSet(struct ath_hal *, uint32_t gpio, uint32_t val);
extern uint32_t ar5315GpioGet(struct ath_hal *ah, uint32_t gpio);
Modified: head/sys/dev/ath/ath_hal/ar5312/ar5312_gpio.c
==============================================================================
--- head/sys/dev/ath/ath_hal/ar5312/ar5312_gpio.c Tue Feb 24 00:03:14 2009 (r188973)
+++ head/sys/dev/ath/ath_hal/ar5312/ar5312_gpio.c Tue Feb 24 00:12:16 2009 (r188974)
@@ -14,7 +14,7 @@
* ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
* OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
*
- * $Id: ar5312_gpio.c,v 1.3 2008/11/10 04:08:04 sam Exp $
+ * $FreeBSD$
*/
#include "opt_ah.h"
@@ -35,7 +35,7 @@
* Configure GPIO Output lines
*/
HAL_BOOL
-ar5312GpioCfgOutput(struct ath_hal *ah, uint32_t gpio)
+ar5312GpioCfgOutput(struct ath_hal *ah, uint32_t gpio, HAL_GPIO_MUX_TYPE type)
{
uint32_t gpioOffset = (AR5312_GPIO_BASE - ((uint32_t) ah->ah_sh));
Modified: head/sys/dev/ath/ath_hal/ar5312/ar5315_gpio.c
==============================================================================
--- head/sys/dev/ath/ath_hal/ar5312/ar5315_gpio.c Tue Feb 24 00:03:14 2009 (r188973)
+++ head/sys/dev/ath/ath_hal/ar5312/ar5315_gpio.c Tue Feb 24 00:12:16 2009 (r188974)
@@ -14,7 +14,7 @@
* ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
* OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
*
- * $Id: ar5315_gpio.c,v 1.3 2008/11/10 04:08:04 sam Exp $
+ * $FreeBSD$
*/
#include "opt_ah.h"
@@ -35,7 +35,7 @@
* Configure GPIO Output lines
*/
HAL_BOOL
-ar5315GpioCfgOutput(struct ath_hal *ah, uint32_t gpio)
+ar5315GpioCfgOutput(struct ath_hal *ah, uint32_t gpio, HAL_GPIO_MUX_TYPE type)
{
uint32_t gpioOffset = (AR5315_GPIO_BASE - ((uint32_t) ah->ah_sh));
Modified: head/sys/dev/ath/ath_hal/ar5416/ar5416.h
==============================================================================
--- head/sys/dev/ath/ath_hal/ar5416/ar5416.h Tue Feb 24 00:03:14 2009 (r188973)
+++ head/sys/dev/ath/ath_hal/ar5416/ar5416.h Tue Feb 24 00:12:16 2009 (r188974)
@@ -120,7 +120,8 @@ extern HAL_BOOL ar5416IsInterruptPending
extern HAL_BOOL ar5416GetPendingInterrupts(struct ath_hal *, HAL_INT *masked);
extern HAL_INT ar5416SetInterrupts(struct ath_hal *ah, HAL_INT ints);
-extern HAL_BOOL ar5416GpioCfgOutput(struct ath_hal *, uint32_t gpio);
+extern HAL_BOOL ar5416GpioCfgOutput(struct ath_hal *, uint32_t gpio,
+ HAL_GPIO_MUX_TYPE);
extern HAL_BOOL ar5416GpioCfgInput(struct ath_hal *, uint32_t gpio);
extern HAL_BOOL ar5416GpioSet(struct ath_hal *, uint32_t gpio, uint32_t val);
extern uint32_t ar5416GpioGet(struct ath_hal *ah, uint32_t gpio);
Modified: head/sys/dev/ath/ath_hal/ar5416/ar5416_gpio.c
==============================================================================
--- head/sys/dev/ath/ath_hal/ar5416/ar5416_gpio.c Tue Feb 24 00:03:14 2009 (r188973)
+++ head/sys/dev/ath/ath_hal/ar5416/ar5416_gpio.c Tue Feb 24 00:12:16 2009 (r188974)
@@ -14,7 +14,7 @@
* ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
* OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
*
- * $Id: ar5416_gpio.c,v 1.3 2008/11/10 04:08:04 sam Exp $
+ * $FreeBSD$
*/
#include "opt_ah.h"
@@ -36,7 +36,7 @@
* Configure GPIO Output lines
*/
HAL_BOOL
-ar5416GpioCfgOutput(struct ath_hal *ah, uint32_t gpio)
+ar5416GpioCfgOutput(struct ath_hal *ah, uint32_t gpio, HAL_GPIO_MUX_TYPE type)
{
HALASSERT(gpio < AR_NUM_GPIO);
OS_REG_CLR_BIT(ah, AR_GPIO_INTR_OUT, AR_GPIO_BIT(gpio));
Modified: head/sys/dev/ath/if_ath.c
==============================================================================
--- head/sys/dev/ath/if_ath.c Tue Feb 24 00:03:14 2009 (r188973)
+++ head/sys/dev/ath/if_ath.c Tue Feb 24 00:12:16 2009 (r188974)
@@ -559,7 +559,8 @@ ath_attach(u_int16_t devid, struct ath_s
*/
sc->sc_softled = (devid == AR5212_DEVID_IBM || devid == AR5211_DEVID);
if (sc->sc_softled) {
- ath_hal_gpioCfgOutput(ah, sc->sc_ledpin);
+ ath_hal_gpioCfgOutput(ah, sc->sc_ledpin,
+ HAL_GPIO_MUX_MAC_NETWORK_LED);
ath_hal_gpioset(ah, sc->sc_ledpin, !sc->sc_ledon);
}
@@ -1218,7 +1219,8 @@ ath_resume(struct ath_softc *sc)
ieee80211_resume_all(ic);
}
if (sc->sc_softled) {
- ath_hal_gpioCfgOutput(ah, sc->sc_ledpin);
+ ath_hal_gpioCfgOutput(ah, sc->sc_ledpin,
+ HAL_GPIO_MUX_MAC_NETWORK_LED);
ath_hal_gpioset(ah, sc->sc_ledpin, !sc->sc_ledon);
}
}
@@ -6653,7 +6655,8 @@ ath_sysctl_softled(SYSCTL_HANDLER_ARGS)
if (softled != sc->sc_softled) {
if (softled) {
/* NB: handle any sc_ledpin change */
- ath_hal_gpioCfgOutput(sc->sc_ah, sc->sc_ledpin);
+ ath_hal_gpioCfgOutput(sc->sc_ah, sc->sc_ledpin,
+ HAL_GPIO_MUX_MAC_NETWORK_LED);
ath_hal_gpioset(sc->sc_ah, sc->sc_ledpin,
!sc->sc_ledon);
}
@@ -6675,7 +6678,8 @@ ath_sysctl_ledpin(SYSCTL_HANDLER_ARGS)
if (ledpin != sc->sc_ledpin) {
sc->sc_ledpin = ledpin;
if (sc->sc_softled) {
- ath_hal_gpioCfgOutput(sc->sc_ah, sc->sc_ledpin);
+ ath_hal_gpioCfgOutput(sc->sc_ah, sc->sc_ledpin,
+ HAL_GPIO_MUX_MAC_NETWORK_LED);
ath_hal_gpioset(sc->sc_ah, sc->sc_ledpin,
!sc->sc_ledon);
}
Modified: head/sys/dev/ath/if_athvar.h
==============================================================================
--- head/sys/dev/ath/if_athvar.h Tue Feb 24 00:03:14 2009 (r188973)
+++ head/sys/dev/ath/if_athvar.h Tue Feb 24 00:12:16 2009 (r188974)
@@ -700,8 +700,8 @@ void ath_intr(void *);
#define ath_hal_gettxintrtxqs(_ah, _txqs) \
((*(_ah)->ah_getTxIntrQueue)((_ah), (_txqs)))
-#define ath_hal_gpioCfgOutput(_ah, _gpio) \
- ((*(_ah)->ah_gpioCfgOutput)((_ah), (_gpio)))
+#define ath_hal_gpioCfgOutput(_ah, _gpio, _type) \
+ ((*(_ah)->ah_gpioCfgOutput)((_ah), (_gpio), (_type)))
#define ath_hal_gpioset(_ah, _gpio, _b) \
((*(_ah)->ah_gpioSet)((_ah), (_gpio), (_b)))
#define ath_hal_gpioget(_ah, _gpio) \
More information about the svn-src-all
mailing list