* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
* more details.
*
- * You should have received a copy of the GNU General Public License along with
- * this program; if not, write to the Free Software Foundation, Inc.,
- * 51 Franklin Street, Fifth Floor, Boston, MA 02110, USA
- *
*******************************************************************************/
#define _SDIO_OPS_C_
+#include <drv_types.h>
+#include <rtw_debug.h>
#include <rtl8723b_hal.h>
-//#define SDIO_DEBUG_IO 1
+/* define SDIO_DEBUG_IO 1 */
-//
-// Description:
-// The following mapping is for SDIO host local register space.
-//
-// Creadted by Roger, 2011.01.31.
-//
+/* */
+/* Description: */
+/* The following mapping is for SDIO host local register space. */
+/* */
+/* Creadted by Roger, 2011.01.31. */
+/* */
static void HalSdioGetCmdAddr8723BSdio(
- IN PADAPTER padapter,
- IN u8 DeviceID,
- IN u32 Addr,
- OUT u32* pCmdAddr
+struct adapter * padapter,
+u8 DeviceID,
+u32 Addr,
+ u32* pCmdAddr
)
{
switch (DeviceID)
devideId = WLAN_IOREG_DEVICE_ID;
break;
-// case 0x1027:
-// devideId = SDIO_FIRMWARE_FIFO;
-// break;
+/* case 0x1027: */
+/* devideId = SDIO_FIRMWARE_FIFO; */
+/* break; */
case 0x1031:
devideId = WLAN_TX_HIQ_DEVICE_ID;
break;
default:
-// devideId = (u8)((addr >> 13) & 0xF);
+/* devideId = (u8)((addr >> 13) & 0xF); */
devideId = WLAN_IOREG_DEVICE_ID;
break;
}
/*
* Ref:
- * HalSdioGetCmdAddr8723BSdio()
+ *HalSdioGetCmdAddr8723BSdio()
*/
static u32 _cvrt2ftaddr(const u32 addr, u8 *pdeviceId, u16 *poffset)
{
u32 ftaddr;
u8 val;
-_func_enter_;
ftaddr = _cvrt2ftaddr(addr, NULL, NULL);
val = sd_read8(pintfhdl, ftaddr, NULL);
-
-_func_exit_;
-
return val;
}
{
u32 ftaddr;
u16 val;
+ __le16 le_tmp;
-_func_enter_;
ftaddr = _cvrt2ftaddr(addr, NULL, NULL);
- sd_cmd52_read(pintfhdl, ftaddr, 2, (u8*)&val);
- val = le16_to_cpu(val);
-
-_func_exit_;
-
+ sd_cmd52_read(pintfhdl, ftaddr, 2, (u8 *)&le_tmp);
+ val = le16_to_cpu(le_tmp);
return val;
}
static u32 sdio_read32(struct intf_hdl *pintfhdl, u32 addr)
{
- PADAPTER padapter;
+ struct adapter *padapter;
u8 bMacPwrCtrlOn;
u8 deviceId;
u16 offset;
u8 shift;
u32 val;
s32 err;
-
-_func_enter_;
+ __le32 le_tmp;
padapter = pintfhdl->padapter;
ftaddr = _cvrt2ftaddr(addr, &deviceId, &offset);
|| (false == bMacPwrCtrlOn)
|| (true == adapter_to_pwrctl(padapter)->bFwCurrentInPSMode))
{
- err = sd_cmd52_read(pintfhdl, ftaddr, 4, (u8*)&val);
+ err = sd_cmd52_read(pintfhdl, ftaddr, 4, (u8 *)&le_tmp);
#ifdef SDIO_DEBUG_IO
if (!err) {
#endif
- val = le32_to_cpu(val);
+ val = le32_to_cpu(le_tmp);
return val;
#ifdef SDIO_DEBUG_IO
}
- DBG_8192C(KERN_ERR "%s: Mac Power off, Read FAIL(%d)! addr=0x%x\n", __func__, err, addr);
+ DBG_8192C(KERN_ERR "%s: Mac Power off, Read FAIL(%d)! addr = 0x%x\n", __func__, err, addr);
return SDIO_ERR_VAL32;
#endif
}
- // 4 bytes alignment
+ /* 4 bytes alignment */
shift = ftaddr & 0x3;
if (shift == 0) {
val = sd_read32(pintfhdl, ftaddr, NULL);
} else {
u8 *ptmpbuf;
- ptmpbuf = (u8*)rtw_malloc(8);
+ ptmpbuf = (u8 *)rtw_malloc(8);
if (NULL == ptmpbuf) {
- DBG_8192C(KERN_ERR "%s: Allocate memory FAIL!(size=8) addr=0x%x\n", __func__, addr);
+ DBG_8192C(KERN_ERR "%s: Allocate memory FAIL!(size =8) addr = 0x%x\n", __func__, addr);
return SDIO_ERR_VAL32;
}
ftaddr &= ~(u16)0x3;
sd_read(pintfhdl, ftaddr, 8, ptmpbuf);
- memcpy(&val, ptmpbuf+shift, 4);
- val = le32_to_cpu(val);
+ memcpy(&le_tmp, ptmpbuf+shift, 4);
+ val = le32_to_cpu(le_tmp);
kfree(ptmpbuf);
}
-
-_func_exit_;
-
return val;
}
static s32 sdio_readN(struct intf_hdl *pintfhdl, u32 addr, u32 cnt, u8 *pbuf)
{
- PADAPTER padapter;
+ struct adapter *padapter;
u8 bMacPwrCtrlOn;
u8 deviceId;
u16 offset;
u8 shift;
s32 err;
-_func_enter_;
-
padapter = pintfhdl->padapter;
err = 0;
return err;
}
- // 4 bytes alignment
+ /* 4 bytes alignment */
shift = ftaddr & 0x3;
if (shift == 0) {
err = sd_read(pintfhdl, ftaddr, cnt, pbuf);
memcpy(pbuf, ptmpbuf+shift, cnt);
kfree(ptmpbuf);
}
-
-_func_exit_;
-
return err;
}
u32 ftaddr;
s32 err;
-_func_enter_;
ftaddr = _cvrt2ftaddr(addr, NULL, NULL);
sd_write8(pintfhdl, ftaddr, val, &err);
-_func_exit_;
-
return err;
}
static s32 sdio_write16(struct intf_hdl *pintfhdl, u32 addr, u16 val)
{
u32 ftaddr;
- u8 shift;
s32 err;
+ __le16 le_tmp;
-_func_enter_;
ftaddr = _cvrt2ftaddr(addr, NULL, NULL);
- val = cpu_to_le16(val);
- err = sd_cmd52_write(pintfhdl, ftaddr, 2, (u8*)&val);
-
-_func_exit_;
+ le_tmp = cpu_to_le16(val);
+ err = sd_cmd52_write(pintfhdl, ftaddr, 2, (u8 *)&le_tmp);
return err;
}
static s32 sdio_write32(struct intf_hdl *pintfhdl, u32 addr, u32 val)
{
- PADAPTER padapter;
+ struct adapter *padapter;
u8 bMacPwrCtrlOn;
u8 deviceId;
u16 offset;
u32 ftaddr;
u8 shift;
s32 err;
-
-_func_enter_;
+ __le32 le_tmp;
padapter = pintfhdl->padapter;
err = 0;
ftaddr = _cvrt2ftaddr(addr, &deviceId, &offset);
rtw_hal_get_hwreg(padapter, HW_VAR_APFM_ON_MAC, &bMacPwrCtrlOn);
- if (((deviceId == WLAN_IOREG_DEVICE_ID) && (offset < 0x100))
- || (false == bMacPwrCtrlOn)
- || (true == adapter_to_pwrctl(padapter)->bFwCurrentInPSMode))
- {
- val = cpu_to_le32(val);
- err = sd_cmd52_write(pintfhdl, ftaddr, 4, (u8*)&val);
+ if (((deviceId == WLAN_IOREG_DEVICE_ID) && (offset < 0x100)) ||
+ (!bMacPwrCtrlOn) || (adapter_to_pwrctl(padapter)->bFwCurrentInPSMode)) {
+ le_tmp = cpu_to_le32(val);
+ err = sd_cmd52_write(pintfhdl, ftaddr, 4, (u8 *)&le_tmp);
return err;
}
- // 4 bytes alignment
+ /* 4 bytes alignment */
shift = ftaddr & 0x3;
if (shift == 0)
{
sd_write32(pintfhdl, ftaddr, val, &err);
+ } else {
+ le_tmp = cpu_to_le32(val);
+ err = sd_cmd52_write(pintfhdl, ftaddr, 4, (u8 *)&le_tmp);
}
- else
- {
- val = cpu_to_le32(val);
- err = sd_cmd52_write(pintfhdl, ftaddr, 4, (u8*)&val);
- }
-
-_func_exit_;
-
return err;
}
-static s32 sdio_writeN(struct intf_hdl *pintfhdl, u32 addr, u32 cnt, u8* pbuf)
+static s32 sdio_writeN(struct intf_hdl *pintfhdl, u32 addr, u32 cnt, u8 *pbuf)
{
- PADAPTER padapter;
+ struct adapter *padapter;
u8 bMacPwrCtrlOn;
u8 deviceId;
u16 offset;
u8 shift;
s32 err;
-_func_enter_;
-
padapter = pintfhdl->padapter;
err = 0;
err = sd_write(pintfhdl, ftaddr, n, ptmpbuf);
kfree(ptmpbuf);
}
-
-_func_exit_;
-
return err;
}
static u8 sdio_f0_read8(struct intf_hdl *pintfhdl, u32 addr)
{
- u32 ftaddr;
- u8 val;
-
-_func_enter_;
- val = sd_f0_read8(pintfhdl, addr, NULL);
-
-_func_exit_;
-
- return val;
+ return sd_f0_read8(pintfhdl, addr, NULL);
}
static void sdio_read_mem(struct intf_hdl *pintfhdl, u32 addr, u32 cnt, u8 *rmem)
{
s32 err;
-_func_enter_;
-
err = sdio_readN(pintfhdl, addr, cnt, rmem);
-
-_func_exit_;
+ /* TODO: Report error is err not zero */
}
static void sdio_write_mem(struct intf_hdl *pintfhdl, u32 addr, u32 cnt, u8 *wmem)
{
-_func_enter_;
-
sdio_writeN(pintfhdl, addr, cnt, wmem);
-
-_func_exit_;
}
/*
* Description:
- * Read from RX FIFO
- * Round read size to block size,
- * and make sure data transfer will be done in one command.
+ *Read from RX FIFO
+ *Round read size to block size,
+ *and make sure data transfer will be done in one command.
*
* Parameters:
- * pintfhdl a pointer of intf_hdl
- * addr port ID
- * cnt size to read
- * rmem address to put data
+ *pintfhdl a pointer of intf_hdl
+ *addr port ID
+ *cnt size to read
+ *rmem address to put data
*
* Return:
- * _SUCCESS(1) Success
- * _FAIL(0) Fail
+ *_SUCCESS(1) Success
+ *_FAIL(0) Fail
*/
static u32 sdio_read_port(
struct intf_hdl *pintfhdl,
u32 cnt,
u8 *mem)
{
- PADAPTER padapter;
+ struct adapter *padapter;
PSDIO_DATA psdio;
- PHAL_DATA_TYPE phal;
+ struct hal_com_data *phal;
u32 oldcnt;
#ifdef SDIO_DYNAMIC_ALLOC_MEM
u8 *oldmem;
oldcnt = cnt;
if (cnt > psdio->block_transfer_len)
cnt = _RND(cnt, psdio->block_transfer_len);
-// cnt = sdio_align_size(cnt);
+/* cnt = sdio_align_size(cnt); */
if (oldcnt != cnt) {
#ifdef SDIO_DYNAMIC_ALLOC_MEM
oldmem == NULL;
}
#else
- // in this case, caller should gurante the buffer is big enough
- // to receive data after alignment
+ /* in this case, caller should gurante the buffer is big enough */
+ /* to receive data after alignment */
#endif
}
/*
* Description:
- * Write to TX FIFO
- * Align write size block size,
- * and make sure data could be written in one command.
+ *Write to TX FIFO
+ *Align write size block size,
+ *and make sure data could be written in one command.
*
* Parameters:
- * pintfhdl a pointer of intf_hdl
- * addr port ID
- * cnt size to write
- * wmem data pointer to write
+ *pintfhdl a pointer of intf_hdl
+ *addr port ID
+ *cnt size to write
+ *wmem data pointer to write
*
* Return:
- * _SUCCESS(1) Success
- * _FAIL(0) Fail
+ *_SUCCESS(1) Success
+ *_FAIL(0) Fail
*/
static u32 sdio_write_port(
struct intf_hdl *pintfhdl,
u32 cnt,
u8 *mem)
{
- PADAPTER padapter;
+ struct adapter *padapter;
PSDIO_DATA psdio;
s32 err;
struct xmit_buf *xmitbuf = (struct xmit_buf *)mem;
psdio = &adapter_to_dvobj(padapter)->intf_data;
if (padapter->hw_init_completed == false) {
- DBG_871X("%s [addr=0x%x cnt=%d] padapter->hw_init_completed == false\n",__func__,addr,cnt);
+ DBG_871X("%s [addr = 0x%x cnt =%d] padapter->hw_init_completed == false\n", __func__, addr, cnt);
return _FAIL;
}
if (cnt > psdio->block_transfer_len)
cnt = _RND(cnt, psdio->block_transfer_len);
-// cnt = sdio_align_size(cnt);
+/* cnt = sdio_align_size(cnt); */
err = sd_write(pintfhdl, addr, cnt, xmitbuf->pdata);
return _SUCCESS;
}
-void sdio_set_intf_ops(_adapter *padapter, struct _io_ops *pops)
+void sdio_set_intf_ops(struct adapter *padapter, struct _io_ops *pops)
{
-_func_enter_;
-
pops->_read8 = &sdio_read8;
pops->_read16 = &sdio_read16;
pops->_read32 = &sdio_read32;
pops->_write_port = &sdio_write_port;
pops->_sd_f0_read8 = sdio_f0_read8;
-
-_func_exit_;
}
/*
* Todo: align address to 4 bytes.
*/
-s32 _sdio_local_read(
- PADAPTER padapter,
- u32 addr,
- u32 cnt,
- u8 *pbuf)
+static s32 _sdio_local_read(
+ struct adapter *padapter,
+ u32 addr,
+ u32 cnt,
+ u8 *pbuf)
{
struct intf_hdl * pintfhdl;
u8 bMacPwrCtrlOn;
u32 n;
- pintfhdl=&padapter->iopriv.intf;
+ pintfhdl =&padapter->iopriv.intf;
HalSdioGetCmdAddr8723BSdio(padapter, SDIO_LOCAL_DEVICE_ID, addr, &addr);
}
n = RND4(cnt);
- ptmpbuf = (u8*)rtw_malloc(n);
+ ptmpbuf = (u8 *)rtw_malloc(n);
if (!ptmpbuf)
return (-1);
* Todo: align address to 4 bytes.
*/
s32 sdio_local_read(
- PADAPTER padapter,
- u32 addr,
- u32 cnt,
- u8 *pbuf)
+ struct adapter *padapter,
+ u32 addr,
+ u32 cnt,
+ u8 *pbuf)
{
struct intf_hdl * pintfhdl;
u8 bMacPwrCtrlOn;
u8 *ptmpbuf;
u32 n;
- pintfhdl=&padapter->iopriv.intf;
+ pintfhdl =&padapter->iopriv.intf;
HalSdioGetCmdAddr8723BSdio(padapter, SDIO_LOCAL_DEVICE_ID, addr, &addr);
}
n = RND4(cnt);
- ptmpbuf = (u8*)rtw_malloc(n);
+ ptmpbuf = (u8 *)rtw_malloc(n);
if (!ptmpbuf)
return (-1);
* Todo: align address to 4 bytes.
*/
s32 sdio_local_write(
- PADAPTER padapter,
- u32 addr,
- u32 cnt,
- u8 *pbuf)
+ struct adapter *padapter,
+ u32 addr,
+ u32 cnt,
+ u8 *pbuf)
{
struct intf_hdl * pintfhdl;
u8 bMacPwrCtrlOn;
s32 err;
u8 *ptmpbuf;
- if(addr & 0x3)
- DBG_8192C("%s, address must be 4 bytes alignment\n", __FUNCTION__);
+ if (addr & 0x3)
+ DBG_8192C("%s, address must be 4 bytes alignment\n", __func__);
- if(cnt & 0x3)
- DBG_8192C("%s, size must be the multiple of 4 \n", __FUNCTION__);
+ if (cnt & 0x3)
+ DBG_8192C("%s, size must be the multiple of 4\n", __func__);
- pintfhdl=&padapter->iopriv.intf;
+ pintfhdl =&padapter->iopriv.intf;
HalSdioGetCmdAddr8723BSdio(padapter, SDIO_LOCAL_DEVICE_ID, addr, &addr);
return err;
}
- ptmpbuf = (u8*)rtw_malloc(cnt);
+ ptmpbuf = (u8 *)rtw_malloc(cnt);
if (!ptmpbuf)
return (-1);
err = sd_write(pintfhdl, addr, cnt, ptmpbuf);
- if (ptmpbuf)
- kfree(ptmpbuf);
+ kfree(ptmpbuf);
return err;
}
-u8 SdioLocalCmd52Read1Byte(PADAPTER padapter, u32 addr)
+u8 SdioLocalCmd52Read1Byte(struct adapter *padapter, u32 addr)
{
u8 val = 0;
- struct intf_hdl * pintfhdl=&padapter->iopriv.intf;
+ struct intf_hdl * pintfhdl =&padapter->iopriv.intf;
HalSdioGetCmdAddr8723BSdio(padapter, SDIO_LOCAL_DEVICE_ID, addr, &addr);
sd_cmd52_read(pintfhdl, addr, 1, &val);
return val;
}
-static u16 SdioLocalCmd52Read2Byte(PADAPTER padapter, u32 addr)
+static u16 SdioLocalCmd52Read2Byte(struct adapter *padapter, u32 addr)
{
- u16 val = 0;
- struct intf_hdl * pintfhdl=&padapter->iopriv.intf;
+ __le16 val = 0;
+ struct intf_hdl * pintfhdl =&padapter->iopriv.intf;
HalSdioGetCmdAddr8723BSdio(padapter, SDIO_LOCAL_DEVICE_ID, addr, &addr);
- sd_cmd52_read(pintfhdl, addr, 2, (u8*)&val);
-
- val = le16_to_cpu(val);
+ sd_cmd52_read(pintfhdl, addr, 2, (u8 *)&val);
- return val;
+ return le16_to_cpu(val);
}
-static u32 SdioLocalCmd53Read4Byte(PADAPTER padapter, u32 addr)
+static u32 SdioLocalCmd53Read4Byte(struct adapter *padapter, u32 addr)
{
u8 bMacPwrCtrlOn;
u32 val = 0;
- struct intf_hdl * pintfhdl=&padapter->iopriv.intf;
+ struct intf_hdl * pintfhdl =&padapter->iopriv.intf;
+ __le32 le_tmp;
HalSdioGetCmdAddr8723BSdio(padapter, SDIO_LOCAL_DEVICE_ID, addr, &addr);
rtw_hal_get_hwreg(padapter, HW_VAR_APFM_ON_MAC, &bMacPwrCtrlOn);
- if ((false == bMacPwrCtrlOn)
- || (true == adapter_to_pwrctl(padapter)->bFwCurrentInPSMode))
- {
- sd_cmd52_read(pintfhdl, addr, 4, (u8*)&val);
- val = le32_to_cpu(val);
- }
- else
+ if (!bMacPwrCtrlOn || adapter_to_pwrctl(padapter)->bFwCurrentInPSMode) {
+ sd_cmd52_read(pintfhdl, addr, 4, (u8 *)&le_tmp);
+ val = le32_to_cpu(le_tmp);
+ } else {
val = sd_read32(pintfhdl, addr, NULL);
-
+ }
return val;
}
-void SdioLocalCmd52Write1Byte(PADAPTER padapter, u32 addr, u8 v)
+void SdioLocalCmd52Write1Byte(struct adapter *padapter, u32 addr, u8 v)
{
- struct intf_hdl * pintfhdl=&padapter->iopriv.intf;
+ struct intf_hdl * pintfhdl =&padapter->iopriv.intf;
HalSdioGetCmdAddr8723BSdio(padapter, SDIO_LOCAL_DEVICE_ID, addr, &addr);
sd_cmd52_write(pintfhdl, addr, 1, &v);
}
-static void SdioLocalCmd52Write4Byte(PADAPTER padapter, u32 addr, u32 v)
+static void SdioLocalCmd52Write4Byte(struct adapter *padapter, u32 addr, u32 v)
{
- struct intf_hdl * pintfhdl=&padapter->iopriv.intf;
+ struct intf_hdl * pintfhdl =&padapter->iopriv.intf;
+ __le32 le_tmp;
+
HalSdioGetCmdAddr8723BSdio(padapter, SDIO_LOCAL_DEVICE_ID, addr, &addr);
- v = cpu_to_le32(v);
- sd_cmd52_write(pintfhdl, addr, 4, (u8*)&v);
+ le_tmp = cpu_to_le32(v);
+ sd_cmd52_write(pintfhdl, addr, 4, (u8 *)&le_tmp);
}
-static s32 ReadInterrupt8723BSdio(PADAPTER padapter, u32 *phisr)
+static s32 ReadInterrupt8723BSdio(struct adapter *padapter, u32 *phisr)
{
u32 hisr, himr;
u8 val8, hisr_len;
himr = GET_HAL_DATA(padapter)->sdio_himr;
- // decide how many bytes need to be read
+ /* decide how many bytes need to be read */
hisr_len = 0;
while (himr)
{
return true;
}
-//
-// Description:
-// Initialize SDIO Host Interrupt Mask configuration variables for future use.
-//
-// Assumption:
-// Using SDIO Local register ONLY for configuration.
-//
-// Created by Roger, 2011.02.11.
-//
-void InitInterrupt8723BSdio(PADAPTER padapter)
+/* */
+/* Description: */
+/* Initialize SDIO Host Interrupt Mask configuration variables for future use. */
+/* */
+/* Assumption: */
+/* Using SDIO Local register ONLY for configuration. */
+/* */
+/* Created by Roger, 2011.02.11. */
+/* */
+void InitInterrupt8723BSdio(struct adapter *padapter)
{
- PHAL_DATA_TYPE pHalData;
+ struct hal_com_data *pHalData;
pHalData = GET_HAL_DATA(padapter);
- pHalData->sdio_himr = (u32)( \
+ pHalData->sdio_himr = (u32)( \
SDIO_HIMR_RX_REQUEST_MSK |
SDIO_HIMR_AVAL_MSK |
-// SDIO_HIMR_TXERR_MSK |
-// SDIO_HIMR_RXERR_MSK |
-// SDIO_HIMR_TXFOVW_MSK |
-// SDIO_HIMR_RXFOVW_MSK |
-// SDIO_HIMR_TXBCNOK_MSK |
-// SDIO_HIMR_TXBCNERR_MSK |
-// SDIO_HIMR_BCNERLY_INT_MSK |
-// SDIO_HIMR_C2HCMD_MSK |
-// SDIO_HIMR_HSISR_IND_MSK |
-// SDIO_HIMR_GTINT3_IND_MSK |
-// SDIO_HIMR_GTINT4_IND_MSK |
-// SDIO_HIMR_PSTIMEOUT_MSK |
-// SDIO_HIMR_OCPINT_MSK |
-// SDIO_HIMR_ATIMEND_MSK |
-// SDIO_HIMR_ATIMEND_E_MSK |
-// SDIO_HIMR_CTWEND_MSK |
+/* SDIO_HIMR_TXERR_MSK | */
+/* SDIO_HIMR_RXERR_MSK | */
+/* SDIO_HIMR_TXFOVW_MSK | */
+/* SDIO_HIMR_RXFOVW_MSK | */
+/* SDIO_HIMR_TXBCNOK_MSK | */
+/* SDIO_HIMR_TXBCNERR_MSK | */
+/* SDIO_HIMR_BCNERLY_INT_MSK | */
+/* SDIO_HIMR_C2HCMD_MSK | */
+/* SDIO_HIMR_HSISR_IND_MSK | */
+/* SDIO_HIMR_GTINT3_IND_MSK | */
+/* SDIO_HIMR_GTINT4_IND_MSK | */
+/* SDIO_HIMR_PSTIMEOUT_MSK | */
+/* SDIO_HIMR_OCPINT_MSK | */
+/* SDIO_HIMR_ATIMEND_MSK | */
+/* SDIO_HIMR_ATIMEND_E_MSK | */
+/* SDIO_HIMR_CTWEND_MSK | */
0);
}
-//
-// Description:
-// Initialize System Host Interrupt Mask configuration variables for future use.
-//
-// Created by Roger, 2011.08.03.
-//
-void InitSysInterrupt8723BSdio(PADAPTER padapter)
+/* */
+/* Description: */
+/* Initialize System Host Interrupt Mask configuration variables for future use. */
+/* */
+/* Created by Roger, 2011.08.03. */
+/* */
+void InitSysInterrupt8723BSdio(struct adapter *padapter)
{
- PHAL_DATA_TYPE pHalData;
+ struct hal_com_data *pHalData;
pHalData = GET_HAL_DATA(padapter);
- pHalData->SysIntrMask = ( \
-// HSIMR_GPIO12_0_INT_EN |
-// HSIMR_SPS_OCP_INT_EN |
-// HSIMR_RON_INT_EN |
-// HSIMR_PDNINT_EN |
-// HSIMR_GPIO9_INT_EN |
+ pHalData->SysIntrMask = ( \
+/* HSIMR_GPIO12_0_INT_EN | */
+/* HSIMR_SPS_OCP_INT_EN | */
+/* HSIMR_RON_INT_EN | */
+/* HSIMR_PDNINT_EN | */
+/* HSIMR_GPIO9_INT_EN | */
0);
}
#ifdef CONFIG_WOWLAN
-//
-// Description:
-// Clear corresponding SDIO Host ISR interrupt service.
-//
-// Assumption:
-// Using SDIO Local register ONLY for configuration.
-//
-// Created by Roger, 2011.02.11.
-//
-void ClearInterrupt8723BSdio(PADAPTER padapter)
+/* */
+/* Description: */
+/* Clear corresponding SDIO Host ISR interrupt service. */
+/* */
+/* Assumption: */
+/* Using SDIO Local register ONLY for configuration. */
+/* */
+/* Created by Roger, 2011.02.11. */
+/* */
+void ClearInterrupt8723BSdio(struct adapter *padapter)
{
- PHAL_DATA_TYPE pHalData;
+ struct hal_com_data *pHalData;
u8 *clear;
pHalData = GET_HAL_DATA(padapter);
clear = rtw_zmalloc(4);
- // Clear corresponding HISR Content if needed
- *(u32*)clear = cpu_to_le32(pHalData->sdio_hisr & MASK_SDIO_HISR_CLEAR);
- if (*(u32*)clear)
- {
- // Perform write one clear operation
+ /* Clear corresponding HISR Content if needed */
+ *(__le32*)clear = cpu_to_le32(pHalData->sdio_hisr & MASK_SDIO_HISR_CLEAR);
+ if (*(__le32*)clear) {
+ /* Perform write one clear operation */
sdio_local_write(padapter, SDIO_REG_HISR, 4, clear);
}
}
#endif
-//
-// Description:
-// Enalbe SDIO Host Interrupt Mask configuration on SDIO local domain.
-//
-// Assumption:
-// 1. Using SDIO Local register ONLY for configuration.
-// 2. PASSIVE LEVEL
-//
-// Created by Roger, 2011.02.11.
-//
-void EnableInterrupt8723BSdio(PADAPTER padapter)
+/* */
+/* Description: */
+/* Enalbe SDIO Host Interrupt Mask configuration on SDIO local domain. */
+/* */
+/* Assumption: */
+/* 1. Using SDIO Local register ONLY for configuration. */
+/* 2. PASSIVE LEVEL */
+/* */
+/* Created by Roger, 2011.02.11. */
+/* */
+void EnableInterrupt8723BSdio(struct adapter *padapter)
{
- PHAL_DATA_TYPE pHalData;
- u32 himr;
+ struct hal_com_data *pHalData;
+ __le32 himr;
+ u32 tmp;
pHalData = GET_HAL_DATA(padapter);
himr = cpu_to_le32(pHalData->sdio_himr);
- sdio_local_write(padapter, SDIO_REG_HIMR, 4, (u8*)&himr);
+ sdio_local_write(padapter, SDIO_REG_HIMR, 4, (u8 *)&himr);
RT_TRACE(_module_hci_ops_c_, _drv_notice_,
- ("%s: enable SDIO HIMR=0x%08X\n", __FUNCTION__, pHalData->sdio_himr));
+ ("%s: enable SDIO HIMR = 0x%08X\n", __func__, pHalData->sdio_himr));
- // Update current system IMR settings
- himr = rtw_read32(padapter, REG_HSIMR);
- rtw_write32(padapter, REG_HSIMR, himr|pHalData->SysIntrMask);
+ /* Update current system IMR settings */
+ tmp = rtw_read32(padapter, REG_HSIMR);
+ rtw_write32(padapter, REG_HSIMR, tmp | pHalData->SysIntrMask);
RT_TRACE(_module_hci_ops_c_, _drv_notice_,
- ("%s: enable HSIMR=0x%08X\n", __FUNCTION__, pHalData->SysIntrMask));
+ ("%s: enable HSIMR = 0x%08X\n", __func__, pHalData->SysIntrMask));
- //
- // <Roger_Notes> There are some C2H CMDs have been sent before system interrupt is enabled, e.g., C2H, CPWM.
- // So we need to clear all C2H events that FW has notified, otherwise FW won't schedule any commands anymore.
- // 2011.10.19.
- //
+ /* */
+ /* <Roger_Notes> There are some C2H CMDs have been sent before system interrupt is enabled, e.g., C2H, CPWM. */
+ /* So we need to clear all C2H events that FW has notified, otherwise FW won't schedule any commands anymore. */
+ /* 2011.10.19. */
+ /* */
rtw_write8(padapter, REG_C2HEVT_CLEAR, C2H_EVT_HOST_CLOSE);
}
-//
-// Description:
-// Disable SDIO Host IMR configuration to mask unnecessary interrupt service.
-//
-// Assumption:
-// Using SDIO Local register ONLY for configuration.
-//
-// Created by Roger, 2011.02.11.
-//
-void DisableInterrupt8723BSdio(PADAPTER padapter)
+/* */
+/* Description: */
+/* Disable SDIO Host IMR configuration to mask unnecessary interrupt service. */
+/* */
+/* Assumption: */
+/* Using SDIO Local register ONLY for configuration. */
+/* */
+/* Created by Roger, 2011.02.11. */
+/* */
+void DisableInterrupt8723BSdio(struct adapter *padapter)
{
- u32 himr;
+ __le32 himr;
himr = cpu_to_le32(SDIO_HIMR_DISABLED);
- sdio_local_write(padapter, SDIO_REG_HIMR, 4, (u8*)&himr);
-
+ sdio_local_write(padapter, SDIO_REG_HIMR, 4, (u8 *)&himr);
}
-//
-// Description:
-// Using 0x100 to check the power status of FW.
-//
-// Assumption:
-// Using SDIO Local register ONLY for configuration.
-//
-// Created by Isaac, 2013.09.10.
-//
-u8 CheckIPSStatus(PADAPTER padapter)
+/* */
+/* Description: */
+/* Using 0x100 to check the power status of FW. */
+/* */
+/* Assumption: */
+/* Using SDIO Local register ONLY for configuration. */
+/* */
+/* Created by Isaac, 2013.09.10. */
+/* */
+u8 CheckIPSStatus(struct adapter *padapter)
{
- DBG_871X("%s(): Read 0x100=0x%02x 0x86=0x%02x\n", __func__,
- rtw_read8(padapter, 0x100),rtw_read8(padapter, 0x86));
+ DBG_871X("%s(): Read 0x100 = 0x%02x 0x86 = 0x%02x\n", __func__,
+ rtw_read8(padapter, 0x100), rtw_read8(padapter, 0x86));
if (rtw_read8(padapter, 0x100) == 0xEA)
return true;
return false;
}
-static struct recv_buf* sd_recv_rxfifo(PADAPTER padapter, u32 size)
+static struct recv_buf* sd_recv_rxfifo(struct adapter *padapter, u32 size)
{
u32 readsize, ret;
u8 *preadbuf;
struct recv_buf *precvbuf;
- // Patch for some SDIO Host 4 bytes issue
- // ex. RK3188
+ /* Patch for some SDIO Host 4 bytes issue */
+ /* ex. RK3188 */
readsize = RND4(size);
- //3 1. alloc recvbuf
+ /* 3 1. alloc recvbuf */
precvpriv = &padapter->recvpriv;
precvbuf = rtw_dequeue_recvbuf(&precvpriv->free_recv_buf_queue);
if (precvbuf == NULL) {
- DBG_871X_LEVEL(_drv_err_, "%s: alloc recvbuf FAIL!\n", __FUNCTION__);
+ DBG_871X_LEVEL(_drv_err_, "%s: alloc recvbuf FAIL!\n", __func__);
return NULL;
}
- //3 2. alloc skb
+ /* 3 2. alloc skb */
if (precvbuf->pskb == NULL) {
- SIZE_PTR tmpaddr=0;
- SIZE_PTR alignment=0;
+ SIZE_PTR tmpaddr = 0;
+ SIZE_PTR alignment = 0;
precvbuf->pskb = rtw_skb_alloc(MAX_RECVBUF_SZ + RECVBUFF_ALIGN_SZ);
- if(precvbuf->pskb)
+ if (precvbuf->pskb)
{
precvbuf->pskb->dev = padapter->pnetdev;
}
if (precvbuf->pskb == NULL) {
- DBG_871X("%s: alloc_skb fail! read=%d\n", __FUNCTION__, readsize);
+ DBG_871X("%s: alloc_skb fail! read =%d\n", __func__, readsize);
return NULL;
}
}
- //3 3. read data from rxfifo
+ /* 3 3. read data from rxfifo */
preadbuf = precvbuf->pskb->data;
ret = sdio_read_port(&padapter->iopriv.intf, WLAN_RX0FF_DEVICE_ID, readsize, preadbuf);
if (ret == _FAIL) {
- RT_TRACE(_module_hci_ops_os_c_, _drv_err_, ("%s: read port FAIL!\n", __FUNCTION__));
+ RT_TRACE(_module_hci_ops_os_c_, _drv_err_, ("%s: read port FAIL!\n", __func__));
return NULL;
}
- //3 4. init recvbuf
+ /* 3 4. init recvbuf */
precvbuf->len = size;
precvbuf->phead = precvbuf->pskb->head;
precvbuf->pdata = precvbuf->pskb->data;
return precvbuf;
}
-static void sd_rxhandler(PADAPTER padapter, struct recv_buf *precvbuf)
+static void sd_rxhandler(struct adapter *padapter, struct recv_buf *precvbuf)
{
struct recv_priv *precvpriv;
- _queue *ppending_queue;
-
+ struct __queue *ppending_queue;
precvpriv = &padapter->recvpriv;
ppending_queue = &precvpriv->recv_buf_pending_queue;
- //3 1. enqueue recvbuf
+ /* 3 1. enqueue recvbuf */
rtw_enqueue_recvbuf(precvbuf, ppending_queue);
- //3 2. schedule tasklet
+ /* 3 2. schedule tasklet */
tasklet_schedule(&precvpriv->recv_tasklet);
}
-void sd_int_dpc(PADAPTER padapter)
+void sd_int_dpc(struct adapter *padapter)
{
- PHAL_DATA_TYPE phal;
+ struct hal_com_data *phal;
struct dvobj_priv *dvobj;
- struct intf_hdl * pintfhdl=&padapter->iopriv.intf;
+ struct intf_hdl * pintfhdl =&padapter->iopriv.intf;
struct pwrctrl_priv *pwrctl;
if (phal->sdio_hisr & SDIO_HISR_AVAL)
{
- //_irqL irql;
- u8 freepage[4];
+ u8 freepage[4];
_sdio_local_read(padapter, SDIO_REG_FREE_TXPG, 4, freepage);
- //spin_lock_bh(&phal->SdioTxFIFOFreePageLock);
- //memcpy(phal->SdioTxFIFOFreePage, freepage, 4);
- //spin_unlock_bh(&phal->SdioTxFIFOFreePageLock);
- //DBG_871X("SDIO_HISR_AVAL, Tx Free Page = 0x%x%x%x%x\n",
- // freepage[0],
- // freepage[1],
- // freepage[2],
- // freepage[3]);
up(&(padapter->xmitpriv.xmit_sema));
}
if (phal->sdio_hisr & SDIO_HISR_CPWM1)
report.state = SdioLocalCmd52Read1Byte(padapter, SDIO_REG_HCPWM1_8723B);
- //cpwm_int_hdl(padapter, &report);
+ /* cpwm_int_hdl(padapter, &report); */
_set_workitem(&(pwrctl->cpwm_event));
}
if (c2h_id_filter_ccx_8723b((u8 *)c2h_evt)) {
/* Handle CCX report here */
rtw_hal_c2h_handler(padapter, (u8 *)c2h_evt);
- kfree((u8*)c2h_evt);
+ kfree((u8 *)c2h_evt);
} else {
rtw_c2h_wk_cmd(padapter, (u8 *)c2h_evt);
}
if (phal->sdio_hisr & SDIO_HISR_RX_REQUEST)
{
struct recv_buf *precvbuf;
- int alloc_fail_time=0;
+ int alloc_fail_time = 0;
u32 hisr;
-// DBG_8192C("%s: RX Request, size=%d\n", __func__, phal->SdioRxFIFOSize);
+/* DBG_8192C("%s: RX Request, size =%d\n", __func__, phal->SdioRxFIFOSize); */
phal->sdio_hisr ^= SDIO_HISR_RX_REQUEST;
do {
phal->SdioRxFIFOSize = SdioLocalCmd52Read2Byte(padapter, SDIO_REG_RX0_REQ_LEN);
break;
} while (1);
- if(alloc_fail_time==10)
- DBG_871X("exit because alloc memory failed more than 10 times \n");
+ if (alloc_fail_time == 10)
+ DBG_871X("exit because alloc memory failed more than 10 times\n");
}
}
-void sd_int_hdl(PADAPTER padapter)
+void sd_int_hdl(struct adapter *padapter)
{
- PHAL_DATA_TYPE phal;
+ struct hal_com_data *phal;
if ((padapter->bDriverStopped == true) ||
phal->sdio_hisr &= phal->sdio_himr;
- // clear HISR
+ /* clear HISR */
v32 = phal->sdio_hisr & MASK_SDIO_HISR_CLEAR;
if (v32) {
SdioLocalCmd52Write4Byte(padapter, SDIO_REG_HISR, v32);
} else {
RT_TRACE(_module_hci_ops_c_, _drv_err_,
("%s: HISR(0x%08x) and HIMR(0x%08x) not match!\n",
- __FUNCTION__, phal->sdio_hisr, phal->sdio_himr));
+ __func__, phal->sdio_hisr, phal->sdio_himr));
}
}
-//
-// Description:
-// Query SDIO Local register to query current the number of Free TxPacketBuffer page.
-//
-// Assumption:
-// 1. Running at PASSIVE_LEVEL
-// 2. RT_TX_SPINLOCK is NOT acquired.
-//
-// Created by Roger, 2011.01.28.
-//
-u8 HalQueryTxBufferStatus8723BSdio(PADAPTER padapter)
+/* */
+/* Description: */
+/* Query SDIO Local register to query current the number of Free TxPacketBuffer page. */
+/* */
+/* Assumption: */
+/* 1. Running at PASSIVE_LEVEL */
+/* 2. RT_TX_SPINLOCK is NOT acquired. */
+/* */
+/* Created by Roger, 2011.01.28. */
+/* */
+u8 HalQueryTxBufferStatus8723BSdio(struct adapter *padapter)
{
- PHAL_DATA_TYPE phal;
+ struct hal_com_data *phal;
u32 NumOfFreePage;
- //_irqL irql;
+ /* _irqL irql; */
phal = GET_HAL_DATA(padapter);
NumOfFreePage = SdioLocalCmd53Read4Byte(padapter, SDIO_REG_FREE_TXPG);
- //spin_lock_bh(&phal->SdioTxFIFOFreePageLock);
+ /* spin_lock_bh(&phal->SdioTxFIFOFreePageLock); */
memcpy(phal->SdioTxFIFOFreePage, &NumOfFreePage, 4);
RT_TRACE(_module_hci_ops_c_, _drv_notice_,
- ("%s: Free page for HIQ(%#x),MIDQ(%#x),LOWQ(%#x),PUBQ(%#x)\n",
- __FUNCTION__,
+ ("%s: Free page for HIQ(%#x), MIDQ(%#x), LOWQ(%#x), PUBQ(%#x)\n",
+ __func__,
phal->SdioTxFIFOFreePage[HI_QUEUE_IDX],
phal->SdioTxFIFOFreePage[MID_QUEUE_IDX],
phal->SdioTxFIFOFreePage[LOW_QUEUE_IDX],
phal->SdioTxFIFOFreePage[PUBLIC_QUEUE_IDX]));
- //spin_unlock_bh(&phal->SdioTxFIFOFreePageLock);
+ /* spin_unlock_bh(&phal->SdioTxFIFOFreePageLock); */
return true;
}
-//
-// Description:
-// Query SDIO Local register to get the current number of TX OQT Free Space.
-//
-u8 HalQueryTxOQTBufferStatus8723BSdio(PADAPTER padapter)
+/* */
+/* Description: */
+/* Query SDIO Local register to get the current number of TX OQT Free Space. */
+/* */
+u8 HalQueryTxOQTBufferStatus8723BSdio(struct adapter *padapter)
{
- HAL_DATA_TYPE *pHalData = GET_HAL_DATA(padapter);
+ struct hal_com_data *pHalData = GET_HAL_DATA(padapter);
pHalData->SdioTxOQTFreeSpace = SdioLocalCmd52Read1Byte(padapter, SDIO_REG_OQT_FREE_PG);
return true;
}
#if defined(CONFIG_WOWLAN) || defined(CONFIG_AP_WOWLAN)
-u8 RecvOnePkt(PADAPTER padapter, u32 size)
+u8 RecvOnePkt(struct adapter *padapter, u32 size)
{
struct recv_buf *precvbuf;
struct dvobj_priv *psddev;
psdio_data = &psddev->intf_data;
func = psdio_data->func;
- if(size) {
+ if (size) {
sdio_claim_host(func);
precvbuf = sd_recv_rxfifo(padapter, size);
if (precvbuf) {
- //printk("Completed Recv One Pkt.\n");
+ /* printk("Completed Recv One Pkt.\n"); */
sd_rxhandler(padapter, precvbuf);
res = true;
- }else{
+ } else {
res = false;
}
sdio_release_host(func);
DBG_871X("-%s-\n", __func__);
return res;
}
-#endif //CONFIG_WOWLAN
+#endif /* CONFIG_WOWLAN */