Ejemplo n.º 1
0
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);
}
Ejemplo n.º 2
0
u16 _spi_read16(struct intf_hdl *pintfhdl, u32 addr)
{
	u16 val;

_func_enter_;

	val = spi_read16(pintfhdl->padapter, addr, NULL);

_func_exit_;

	return val;
}
Ejemplo n.º 3
0
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
}