qcacmn: Scratch register read api for qca5332

Add a new api to read tsf2 and tqm scratch register for qca5332.
The function to read these registers are different from that of qcn9224
since qca5332 is a AHB radio and reading register involves ioremap of
address range.

Change-Id: Ib05df2ddf528594ae67109f8bcb409424a4350a2
CRs-Fixed: 3331476
This commit is contained in:
Nandha Kishore Easwaran
2022-11-08 13:58:52 +05:30
committed by Madan Koyyalamudi
parent 45859216d6
commit ae55a446c6
5 changed files with 156 additions and 90 deletions

View File

@@ -565,6 +565,82 @@ struct hal_srng_high_wm_info {
};
#endif
#define DEFAULT_TSF_ID 1
/**
* enum hal_scratch_reg_enum - Enum to indicate scratch register values
* @PMM_QTIMER_GLOBAL_OFFSET_LO_US - QTIMER GLOBAL OFFSET LOW
* @PMM_QTIMER_GLOBAL_OFFSET_HI_US - QTIMER GLOBAL OFFSET HIGH
* @PMM_MAC0_TSF1_OFFSET_LO_US - MAC0 TSF1 OFFSET LOW
* @PMM_MAC0_TSF1_OFFSET_HI_US - MAC0 TSF1 OFFSET HIGH
* @PMM_MAC0_TSF2_OFFSET_LO_US - MAC0 TSF2 OFFSET LOW
* @PMM_MAC0_TSF2_OFFSET_HI_US - MAC0 TSF2 OFFSET HIGH
* @PMM_MAC1_TSF1_OFFSET_LO_US - MAC1 TSF1 OFFSET LOW
* @PMM_MAC1_TSF1_OFFSET_HI_US - MAC1 TSF1 OFFSET HIGH
* @PMM_MAC1_TSF2_OFFSET_LO_US - MAC1 TSF2 OFFSET LOW
* @PMM_MAC1_TSF2_OFFSET_HI_US - MAC1 TSF2 OFFSET HIGH
* @PMM_MLO_OFFSET_LO_US - MLO OFFSET LOW
* @PMM_MLO_OFFSET_HI_US - MLO OFFSET HIGH
* @PMM_TQM_CLOCK_OFFSET_LO_US - TQM CLOCK OFFSET LOW
* @PMM_TQM_CLOCK_OFFSET_HI_US - TQM CLOCK OFFSET HIGH
* @PMM_Q6_CRASH_REASON - Q6 CRASH REASON
* @PMM_SCRATCH_TWT_OFFSET - TWT OFFSET
* @PMM_PMM_REG_MAX - Max PMM REG value
*/
enum hal_scratch_reg_enum {
PMM_QTIMER_GLOBAL_OFFSET_LO_US,
PMM_QTIMER_GLOBAL_OFFSET_HI_US,
PMM_MAC0_TSF1_OFFSET_LO_US,
PMM_MAC0_TSF1_OFFSET_HI_US,
PMM_MAC0_TSF2_OFFSET_LO_US,
PMM_MAC0_TSF2_OFFSET_HI_US,
PMM_MAC1_TSF1_OFFSET_LO_US,
PMM_MAC1_TSF1_OFFSET_HI_US,
PMM_MAC1_TSF2_OFFSET_LO_US,
PMM_MAC1_TSF2_OFFSET_HI_US,
PMM_MLO_OFFSET_LO_US,
PMM_MLO_OFFSET_HI_US,
PMM_TQM_CLOCK_OFFSET_LO_US,
PMM_TQM_CLOCK_OFFSET_HI_US,
PMM_Q6_CRASH_REASON,
PMM_SCRATCH_TWT_OFFSET,
PMM_PMM_REG_MAX
};
/**
* hal_get_tsf_enum(): API to get the enum corresponding to the mac and tsf id
*
* @tsf_id: tsf id
* @mac_id: mac id
* @enum_lo: Pointer to update low scratch register
* @enum_hi: Pointer to update hi scratch register
*
* Return: void
*/
static inline void
hal_get_tsf_enum(uint32_t tsf_id, uint32_t mac_id,
enum hal_scratch_reg_enum *tsf_enum_low,
enum hal_scratch_reg_enum *tsf_enum_hi)
{
if (mac_id == 0) {
if (tsf_id == 0) {
*tsf_enum_low = PMM_MAC0_TSF1_OFFSET_LO_US;
*tsf_enum_hi = PMM_MAC0_TSF1_OFFSET_HI_US;
} else if (tsf_id == 1) {
*tsf_enum_low = PMM_MAC0_TSF2_OFFSET_LO_US;
*tsf_enum_hi = PMM_MAC0_TSF2_OFFSET_HI_US;
}
} else if (mac_id == 1) {
if (tsf_id == 0) {
*tsf_enum_low = PMM_MAC1_TSF1_OFFSET_LO_US;
*tsf_enum_hi = PMM_MAC1_TSF1_OFFSET_HI_US;
} else if (tsf_id == 1) {
*tsf_enum_low = PMM_MAC1_TSF2_OFFSET_LO_US;
*tsf_enum_hi = PMM_MAC1_TSF2_OFFSET_HI_US;
}
}
}
/* Common SRNG ring structure for source and destination rings */
struct hal_srng {
/* Unique SRNG ring ID */