static void read_pni_config(void) { u8 i; for(i=0;i<2;i++) { pni[i].Mode = spi_read8(CMM,i); pni[i].Update_Rate = spi_read8(TMRC,i); pni[i].Gian[X_AXIS] = spi_read16(CCX,i); pni[i].Gian[Y_AXIS] = spi_read16(CCY,i); pni[i].Gian[Z_AXIS] = spi_read16(CCZ,i); } // pni[0].Update_Rate = spi_read8(TMRC,0); // pni[1].Update_Rate = spi_read8(TMRC,1); }
u16 _spi_read16(struct intf_hdl *pintfhdl, u32 addr) { u16 val; _func_enter_; val = spi_read16(pintfhdl->padapter, addr, NULL); _func_exit_; return val; }
void spi_recv_work_callback(PADAPTER padapter) { PHAL_DATA_TYPE phal = GET_HAL_DATA(padapter); struct recv_buf *precvbuf; struct spi_more_data more_data = {0}; phal->SdioRxFIFOSize = rtw_read16(padapter, SPI_LOCAL_OFFSET | SPI_REG_RX0_REQ_LEN); //DBG_8192C("%s: RX Request, size=%d\n", __func__, phal->SdioRxFIFOSize); do { more_data.more_data = 0; more_data.len = 0; if (phal->SdioRxFIFOSize == 0) { u16 val = 0; s32 ret; val = spi_read16(padapter, SPI_LOCAL_OFFSET | SPI_REG_RX0_REQ_LEN, &ret); if (!ret) { phal->SdioRxFIFOSize = val; DBG_8192C("%s: RX_REQUEST, read RXFIFOsize again size=%d\n", __func__, phal->SdioRxFIFOSize); } else { DBG_8192C(KERN_ERR "%s: RX_REQUEST, read RXFIFOsize ERROR!!\n", __func__); } } if (phal->SdioRxFIFOSize != 0) { #ifdef RTL8723A_SDIO_LOOPBACK sd_recv_loopback(padapter, phal->SdioRxFIFOSize); #else precvbuf = spi_recv_rxfifo(padapter, phal->SdioRxFIFOSize, &more_data); if (precvbuf) spi_rxhandler(padapter, precvbuf); if (more_data.more_data) { phal->SdioRxFIFOSize = more_data.len; } #endif } } while (more_data.more_data); #ifdef PLATFORM_LINUX #ifdef CONFIG_GSPI_HCI tasklet_schedule(&padapter->recvpriv.recv_tasklet); #endif #endif }