qcacmn: Use multi window write and read for pine

Write into hal register using three floating windows instead of one.
This change is done to avoid frequent window changes for writing into
DP and CE registers. Instead 3 windows are used. One window is statically
mapped to CE block and another window is mapped statically to DP block.
Due to this design there is no need to change the window register to
write into these blocks and write can be done on corresponding window
with single iowrite32. Similar loginc is used for ioread32.

Also modified the hp_addr and tp_addr in initialisation stage so that
hal_write will not have multiple if checks.

Change-Id: Ibb99ec4da7f63323082e46a28afbe90e1f555545
CRs-fixed: 2507441
This commit is contained in:
Nandha Kishore Easwaran
2019-11-05 11:44:46 +05:30
committad av nshrivas
förälder 2b0d3f38d5
incheckning bcf953583a
11 ändrade filer med 203 tillägg och 14 borttagningar

Visa fil

@@ -353,6 +353,8 @@ struct hal_hw_txrx_ops {
uint32_t scatter_buf_size,
uint32_t last_buf_end_offset,
uint32_t num_entries);
qdf_iomem_t (*hal_get_window_address)(struct hal_soc *hal_soc,
qdf_iomem_t addr);
/* tx */
void (*hal_tx_desc_set_dscp_tid_table_id)(void *desc, uint8_t id);
@@ -498,6 +500,9 @@ struct hal_soc {
uint32_t register_window;
qdf_spinlock_t register_access_lock;
/* Static window map configuration for multiple window write*/
bool static_window_map;
/* srng table */
struct hal_hw_srng_config *hw_srng_table;
int32_t *hal_hw_reg_offset;