qcacmn: Get back WAR to confirm WBM IDLE ring LSB write
On Lahaina platform it is seen that WBM IDLE ring init is failing, Write to WBM_IDLE link ring LSB write is failing. Add temporary WAR to do back to back write of WBM IDLE link ring LSB address config register. Change-Id: If0c20da06bafa3037845e9806934f9e4dfbd1c1c CRs-Fixed: 2690495
This commit is contained in:

zatwierdzone przez
nshrivas

rodzic
1347c3ab9c
commit
e4155588aa
@@ -1784,6 +1784,29 @@ void hal_get_hw_hptp_generic(struct hal_soc *hal_soc,
|
||||
}
|
||||
}
|
||||
|
||||
#if defined(WBM_IDLE_LSB_WRITE_CONFIRM_WAR)
|
||||
/**
|
||||
* hal_wbm_idle_lsb_write_confirm() - Check and update WBM_IDLE_LINK ring LSB
|
||||
* @srng: srng handle
|
||||
*
|
||||
* Return: None
|
||||
*/
|
||||
static void hal_wbm_idle_lsb_write_confirm(struct hal_srng *srng)
|
||||
{
|
||||
if (srng->ring_id == HAL_SRNG_WBM_IDLE_LINK) {
|
||||
while (SRNG_SRC_REG_READ(srng, BASE_LSB) !=
|
||||
((unsigned int)srng->ring_base_paddr & 0xffffffff))
|
||||
SRNG_SRC_REG_WRITE(srng, BASE_LSB,
|
||||
srng->ring_base_paddr &
|
||||
0xffffffff);
|
||||
}
|
||||
}
|
||||
#else
|
||||
static void hal_wbm_idle_lsb_write_confirm(struct hal_srng *srng)
|
||||
{
|
||||
}
|
||||
#endif
|
||||
|
||||
/**
|
||||
* hal_srng_src_hw_init - Private function to initialize SRNG
|
||||
* source ring HW
|
||||
@@ -1811,6 +1834,8 @@ void hal_srng_src_hw_init_generic(struct hal_soc *hal,
|
||||
}
|
||||
|
||||
SRNG_SRC_REG_WRITE(srng, BASE_LSB, srng->ring_base_paddr & 0xffffffff);
|
||||
hal_wbm_idle_lsb_write_confirm(srng);
|
||||
|
||||
reg_val = SRNG_SM(SRNG_SRC_FLD(BASE_MSB, RING_BASE_ADDR_MSB),
|
||||
((uint64_t)(srng->ring_base_paddr) >> 32)) |
|
||||
SRNG_SM(SRNG_SRC_FLD(BASE_MSB, RING_SIZE),
|
||||
|
Reference in New Issue
Block a user