[ath] remove the inline version of the register access macros.

These are going to be much more efficient on low end embedded systems
but unfortunately they make it .. less convenient to implement correct
bus barriers and debugging.  They also didn't implement the register
serialisation workaround required for Owl (AR5416.)

So, just remove them for now.  Later on I'll just inline the routines
from ah_osdep.c.
This commit is contained in:
Adrian Chadd 2016-01-03 17:58:11 +00:00
parent 65d2872948
commit 17f42e0d6b
Notes: svn2git 2020-12-20 02:59:44 +00:00
svn path=/head/; revision=293111
2 changed files with 13 additions and 16 deletions

View File

@ -270,12 +270,14 @@ ath_hal_reg_write(struct ath_hal *ah, u_int32_t reg, u_int32_t val)
bus_space_tag_t tag = BUSTAG(ah); bus_space_tag_t tag = BUSTAG(ah);
bus_space_handle_t h = ah->ah_sh; bus_space_handle_t h = ah->ah_sh;
#ifdef AH_DEBUG
/* Debug - complain if we haven't fully waken things up */ /* Debug - complain if we haven't fully waken things up */
if (! ath_hal_reg_whilst_asleep(ah, reg) && if (! ath_hal_reg_whilst_asleep(ah, reg) &&
ah->ah_powerMode != HAL_PM_AWAKE) { ah->ah_powerMode != HAL_PM_AWAKE) {
ath_hal_printf(ah, "%s: reg=0x%08x, val=0x%08x, pm=%d\n", ath_hal_printf(ah, "%s: reg=0x%08x, val=0x%08x, pm=%d\n",
__func__, reg, val, ah->ah_powerMode); __func__, reg, val, ah->ah_powerMode);
} }
#endif
if (ath_hal_alq) { if (ath_hal_alq) {
struct ale *ale = ath_hal_alq_get(ah); struct ale *ale = ath_hal_alq_get(ah);
@ -303,12 +305,14 @@ ath_hal_reg_read(struct ath_hal *ah, u_int32_t reg)
bus_space_handle_t h = ah->ah_sh; bus_space_handle_t h = ah->ah_sh;
u_int32_t val; u_int32_t val;
#ifdef AH_DEBUG
/* Debug - complain if we haven't fully waken things up */ /* Debug - complain if we haven't fully waken things up */
if (! ath_hal_reg_whilst_asleep(ah, reg) && if (! ath_hal_reg_whilst_asleep(ah, reg) &&
ah->ah_powerMode != HAL_PM_AWAKE) { ah->ah_powerMode != HAL_PM_AWAKE) {
ath_hal_printf(ah, "%s: reg=0x%08x, pm=%d\n", ath_hal_printf(ah, "%s: reg=0x%08x, pm=%d\n",
__func__, reg, ah->ah_powerMode); __func__, reg, ah->ah_powerMode);
} }
#endif
if (ah->ah_config.ah_serialise_reg_war) if (ah->ah_config.ah_serialise_reg_war)
mtx_lock_spin(&ah_regser_mtx); mtx_lock_spin(&ah_regser_mtx);
@ -345,7 +349,8 @@ OS_MARK(struct ath_hal *ah, u_int id, u_int32_t v)
} }
} }
} }
#elif defined(AH_DEBUG) || defined(AH_REGOPS_FUNC) #else /* AH_DEBUG_ALQ */
/* /*
* Memory-mapped device register read/write. These are here * Memory-mapped device register read/write. These are here
* as routines when debugging support is enabled and/or when * as routines when debugging support is enabled and/or when
@ -363,12 +368,14 @@ ath_hal_reg_write(struct ath_hal *ah, u_int32_t reg, u_int32_t val)
bus_space_tag_t tag = BUSTAG(ah); bus_space_tag_t tag = BUSTAG(ah);
bus_space_handle_t h = ah->ah_sh; bus_space_handle_t h = ah->ah_sh;
#ifdef AH_DEBUG
/* Debug - complain if we haven't fully waken things up */ /* Debug - complain if we haven't fully waken things up */
if (! ath_hal_reg_whilst_asleep(ah, reg) && if (! ath_hal_reg_whilst_asleep(ah, reg) &&
ah->ah_powerMode != HAL_PM_AWAKE) { ah->ah_powerMode != HAL_PM_AWAKE) {
ath_hal_printf(ah, "%s: reg=0x%08x, val=0x%08x, pm=%d\n", ath_hal_printf(ah, "%s: reg=0x%08x, val=0x%08x, pm=%d\n",
__func__, reg, val, ah->ah_powerMode); __func__, reg, val, ah->ah_powerMode);
} }
#endif
if (ah->ah_config.ah_serialise_reg_war) if (ah->ah_config.ah_serialise_reg_war)
mtx_lock_spin(&ah_regser_mtx); mtx_lock_spin(&ah_regser_mtx);
@ -385,12 +392,14 @@ ath_hal_reg_read(struct ath_hal *ah, u_int32_t reg)
bus_space_handle_t h = ah->ah_sh; bus_space_handle_t h = ah->ah_sh;
u_int32_t val; u_int32_t val;
#ifdef AH_DEBUG
/* Debug - complain if we haven't fully waken things up */ /* Debug - complain if we haven't fully waken things up */
if (! ath_hal_reg_whilst_asleep(ah, reg) && if (! ath_hal_reg_whilst_asleep(ah, reg) &&
ah->ah_powerMode != HAL_PM_AWAKE) { ah->ah_powerMode != HAL_PM_AWAKE) {
ath_hal_printf(ah, "%s: reg=0x%08x, pm=%d\n", ath_hal_printf(ah, "%s: reg=0x%08x, pm=%d\n",
__func__, reg, ah->ah_powerMode); __func__, reg, ah->ah_powerMode);
} }
#endif
if (ah->ah_config.ah_serialise_reg_war) if (ah->ah_config.ah_serialise_reg_war)
mtx_lock_spin(&ah_regser_mtx); mtx_lock_spin(&ah_regser_mtx);
@ -400,7 +409,7 @@ ath_hal_reg_read(struct ath_hal *ah, u_int32_t reg)
mtx_unlock_spin(&ah_regser_mtx); mtx_unlock_spin(&ah_regser_mtx);
return val; return val;
} }
#endif /* AH_DEBUG || AH_REGOPS_FUNC */ #endif /* AH_DEBUG_ALQ */
#ifdef AH_ASSERT #ifdef AH_ASSERT
void void

View File

@ -131,26 +131,14 @@ struct ath_hal;
OS_BUS_BARRIER((_ah), (_reg), 4, (_t)) OS_BUS_BARRIER((_ah), (_reg), 4, (_t))
/* /*
* Register read/write operations are either handled through * Register read/write operations are handled through
* platform-dependent routines (or when debugging is enabled * platform-dependent routines.
* with AH_DEBUG); or they are inline expanded using the macros
* defined below.
*/ */
#if defined(AH_DEBUG) || defined(AH_REGOPS_FUNC) || defined(AH_DEBUG_ALQ)
#define OS_REG_WRITE(_ah, _reg, _val) ath_hal_reg_write(_ah, _reg, _val) #define OS_REG_WRITE(_ah, _reg, _val) ath_hal_reg_write(_ah, _reg, _val)
#define OS_REG_READ(_ah, _reg) ath_hal_reg_read(_ah, _reg) #define OS_REG_READ(_ah, _reg) ath_hal_reg_read(_ah, _reg)
extern void ath_hal_reg_write(struct ath_hal *ah, u_int reg, u_int32_t val); extern void ath_hal_reg_write(struct ath_hal *ah, u_int reg, u_int32_t val);
extern u_int32_t ath_hal_reg_read(struct ath_hal *ah, u_int reg); extern u_int32_t ath_hal_reg_read(struct ath_hal *ah, u_int reg);
#else
/* XXX TODO: enforce barriers */
#define OS_REG_WRITE(_ah, _reg, _val) \
bus_space_write_4((bus_space_tag_t)(_ah)->ah_st, \
(bus_space_handle_t)(_ah)->ah_sh, (_reg), (_val))
#define OS_REG_READ(_ah, _reg) \
bus_space_read_4((bus_space_tag_t)(_ah)->ah_st, \
(bus_space_handle_t)(_ah)->ah_sh, (_reg))
#endif
#ifdef AH_DEBUG_ALQ #ifdef AH_DEBUG_ALQ
extern void OS_MARK(struct ath_hal *, u_int id, u_int32_t value); extern void OS_MARK(struct ath_hal *, u_int id, u_int32_t value);