
Currently, we decrement active_work_cnt in a while loop in delayed register worker and later on make a "allow_l1" call to enable L1ss. The bus suspend routine depends on the value of active_work_cnt to determine if any register writes are pending. In case there are, bus suspend is rejected. As a result its possible that when bus suspend happens, the delayed worker while processing the last remaining enqueued write, makes the active_work_cnt to 0. This will allow the bus suspend routine to continue to disable the bus, even before the delayed-reg-worker has called allow_l1 and run to completion. This may lead to a NOC error while calling "allow_l1" API from delayed-reg-worker. Hence, move the decrement of active_work_cnt to the very end in hal_reg_write_work function. Change-Id: Iec602f97c953df1c6a018310fd02ab458547ce3a CRs-fixed: 2813733
The below qca6290 and qca8074 folder has c files defining functions and structures to hold target specific definitions to handle differences between chips with respect to hal. Please ensure changes get applied to all platform specific files if the fixes are generic and applicable to all the folders. qca6290 hal_6290_rx.c - rx related target specific function hal_6290_srng_table.c - holds hw srng table and hal hw reg offsets array hal_6290_tx.c - tx related target specific function qca8074 hal_8074_rx.c - rx related target specific function hal_8074_srng_table.c - holds hw srng table and hal hw reg offsets array hal_8074_tx.c - tx related target specific function