diff --git a/hif/inc/reg_struct.h b/hif/inc/reg_struct.h index 8098f468c8..7e05857c9b 100644 --- a/hif/inc/reg_struct.h +++ b/hif/inc/reg_struct.h @@ -19,6 +19,21 @@ #ifndef REG_STRUCT_H #define REG_STRUCT_H +#define MISSING_REGISTER 0 +#define UNSUPPORTED_REGISTER_OFFSET 0xffffffff + +/** + * is_register_supported() - return true if the register offset is valid + * @reg: register address being checked + * + * Return: true if the register offset is valid + */ +static inline bool is_register_supported(uint32_t reg) +{ + return (reg != MISSING_REGISTER) && + (reg != UNSUPPORTED_REGISTER_OFFSET); +} + struct targetdef_s { uint32_t d_RTC_SOC_BASE_ADDRESS; uint32_t d_RTC_WMAC_BASE_ADDRESS; diff --git a/hif/inc/target_reg_init.h b/hif/inc/target_reg_init.h index d41caf1f7d..a776678d90 100644 --- a/hif/inc/target_reg_init.h +++ b/hif/inc/target_reg_init.h @@ -25,7 +25,7 @@ typedef struct targetdef_s TARGET_REGISTER_TABLE; -#define ATH_UNSUPPORTED_REG_OFFSET 0xffffffff +#define ATH_UNSUPPORTED_REG_OFFSET UNSUPPORTED_REGISTER_OFFSET #define ATH_SUPPORTED_BY_TARGET(reg_offset) \ ((reg_offset) != ATH_UNSUPPORTED_REG_OFFSET) diff --git a/hif/src/ce/ce_main.c b/hif/src/ce/ce_main.c index 0ee23a9dce..c54265948d 100644 --- a/hif/src/ce/ce_main.c +++ b/hif/src/ce/ce_main.c @@ -713,7 +713,7 @@ struct CE_handle *ce_init(struct hif_softc *scn, (uint32_t)(dma_addr & 0xFFFFFFFF)); /* if SR_BA_ADDRESS_HIGH register exists */ - if (SR_BA_ADDRESS_HIGH) { + if (is_register_supported(SR_BA_ADDRESS_HIGH)) { uint32_t tmp; tmp = CE_SRC_RING_BASE_ADDR_HIGH_GET( scn, ctrl_addr); @@ -852,7 +852,7 @@ struct CE_handle *ce_init(struct hif_softc *scn, (uint32_t)(dma_addr & 0xFFFFFFFF)); /* if DR_BA_ADDRESS_HIGH exists */ - if (DR_BA_ADDRESS_HIGH) { + if (is_register_supported(DR_BA_ADDRESS_HIGH)) { uint32_t tmp; tmp = CE_DEST_RING_BASE_ADDR_HIGH_GET(scn, ctrl_addr);