123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106 |
- #include "hal_api.h"
- void hal_setup_link_idle_list(void *hal_soc,
- qdf_dma_addr_t scatter_bufs_base_paddr[],
- void *scatter_bufs_base_vaddr[], uint32_t num_scatter_bufs,
- uint32_t scatter_buf_size, uint32_t last_buf_end_offset)
- {
- int i;
- uint32_t *prev_buf_link_ptr = NULL;
- struct hal_soc *soc = (struct hal_soc *)hal_soc;
-
- for (i = 0; i < num_scatter_bufs; i++) {
- if (i > 0) {
- prev_buf_link_ptr[0] =
- scatter_bufs_base_paddr[i] & 0xffffffff;
- prev_buf_link_ptr[1] =
- ((uint64_t)(scatter_bufs_base_paddr[i]) >> 32) &
- HWIO_WBM_R0_SCATTERED_LINK_DESC_LIST_BASE_MSB_BASE_ADDRESS_39_32_BMSK;
- }
- prev_buf_link_ptr = (uint32_t *)(scatter_bufs_base_vaddr[i] +
- scatter_buf_size - WBM_IDLE_SCATTER_BUF_NEXT_PTR_SIZE);
- }
-
- HAL_REG_WRITE(soc,
- HWIO_WBM_R0_SCATTERED_LINK_DESC_LIST_BASE_LSB_ADDR(
- SEQ_WCSS_UMAC_WBM_REG_OFFSET),
- scatter_bufs_base_paddr[0] & 0xffffffff);
- HAL_REG_WRITE(soc,
- HWIO_WBM_R0_SCATTERED_LINK_DESC_LIST_BASE_MSB_ADDR(
- SEQ_WCSS_UMAC_WBM_REG_OFFSET),
- ((uint64_t)(scatter_bufs_base_paddr[0]) >> 32) &
- HWIO_WBM_R0_SCATTERED_LINK_DESC_LIST_BASE_MSB_BASE_ADDRESS_39_32_BMSK);
-
-
- HAL_REG_WRITE(soc,
- HWIO_WBM_R0_SCATTERED_LINK_DESC_PTR_HEAD_INFO_IX0_ADDR(
- SEQ_WCSS_UMAC_WBM_REG_OFFSET),
- scatter_bufs_base_paddr[0] & 0xffffffff);
- HAL_REG_WRITE(soc,
- HWIO_WBM_R0_SCATTERED_LINK_DESC_PTR_HEAD_INFO_IX1_ADDR(
- SEQ_WCSS_UMAC_WBM_REG_OFFSET),
- HAL_SM(HWIO_WBM_R0_SCATTERED_LINK_DESC_PTR_HEAD_INFO_IX1,
- BUFFER_ADDRESS_39_32,
- ((uint64_t)(scatter_bufs_base_paddr[0]) >> 32)) |
- HAL_SM(HWIO_WBM_R0_SCATTERED_LINK_DESC_PTR_HEAD_INFO_IX1,
- HEAD_POINTER_OFFSET, 0));
- HAL_REG_WRITE(soc,
- HWIO_WBM_R0_SCATTERED_LINK_DESC_PTR_HEAD_INFO_IX0_ADDR(
- SEQ_WCSS_UMAC_WBM_REG_OFFSET),
- scatter_bufs_base_paddr[0] & 0xffffffff);
- HAL_REG_WRITE(soc,
- HWIO_WBM_R0_SCATTERED_LINK_DESC_PTR_TAIL_INFO_IX0_ADDR(
- SEQ_WCSS_UMAC_WBM_REG_OFFSET),
- scatter_bufs_base_paddr[num_scatter_bufs - 1] & 0xffffffff);
- HAL_REG_WRITE(soc,
- HWIO_WBM_R0_SCATTERED_LINK_DESC_PTR_TAIL_INFO_IX1_ADDR(
- SEQ_WCSS_UMAC_WBM_REG_OFFSET),
- HAL_SM(HWIO_WBM_R0_SCATTERED_LINK_DESC_PTR_TAIL_INFO_IX1,
- BUFFER_ADDRESS_39_32,
- ((uint64_t)(scatter_bufs_base_paddr[num_scatter_bufs - 1]) >>
- 32)) | HAL_SM(HWIO_WBM_R0_SCATTERED_LINK_DESC_PTR_TAIL_INFO_IX1,
- TAIL_POINTER_OFFSET, last_buf_end_offset << 2));
- }
|