summaryrefslogtreecommitdiff
path: root/drivers/net/wireless/rtl8723as/hal/rtl8723a/sdio/sdio_ops.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/net/wireless/rtl8723as/hal/rtl8723a/sdio/sdio_ops.c')
-rwxr-xr-xdrivers/net/wireless/rtl8723as/hal/rtl8723a/sdio/sdio_ops.c258
1 files changed, 99 insertions, 159 deletions
diff --git a/drivers/net/wireless/rtl8723as/hal/rtl8723a/sdio/sdio_ops.c b/drivers/net/wireless/rtl8723as/hal/rtl8723a/sdio/sdio_ops.c
index a5e60de92085..c319fb5ec643 100755
--- a/drivers/net/wireless/rtl8723as/hal/rtl8723a/sdio/sdio_ops.c
+++ b/drivers/net/wireless/rtl8723as/hal/rtl8723a/sdio/sdio_ops.c
@@ -19,34 +19,12 @@
#define _SDIO_OPS_C_
#include <drv_types.h>
+#include <sdio_ops.h>
#include <rtl8723a_spec.h>
#include <rtl8723a_hal.h>
//#define SDIO_DEBUG_IO 1
-#define SDIO_ERR_VAL8 0xEA
-#define SDIO_ERR_VAL16 0xEAEA
-#define SDIO_ERR_VAL32 0xEAEAEAEA
-
-extern u8 sd_f0_read8(PSDIO_DATA psdio, u32 addr, s32 *err);
-extern void sd_f0_write8(PSDIO_DATA psdio, u32 addr, s32 *err);
-
-extern s32 _sd_cmd52_read(PSDIO_DATA psdio, u32 addr, u32 cnt, void *pdata);
-extern s32 _sd_cmd52_write(PSDIO_DATA psdio, u32 addr, u32 cnt, void *pdata);
-extern s32 sd_cmd52_read(PSDIO_DATA psdio, u32 addr, u32 cnt, void *pdata);
-extern s32 sd_cmd52_write(PSDIO_DATA psdio, u32 addr, u32 cnt, void *pdata);
-
-extern u8 sd_read8(PSDIO_DATA psdio, u32 addr, s32 *err);
-extern u16 sd_read16(PSDIO_DATA psdio, u32 addr, s32 *err);
-extern u32 sd_read32(PSDIO_DATA psdio, u32 addr, s32 *err);
-extern s32 _sd_read(PSDIO_DATA psdio, u32 addr, u32 cnt, void *pdata);
-extern s32 sd_read(PSDIO_DATA psdio, u32 addr, u32 cnt, void *pdata);
-extern void sd_write8(PSDIO_DATA psdio, u32 addr, u8 v, s32 *err);
-extern void sd_write16(PSDIO_DATA psdio, u32 addr, u16 v, s32 *err);
-extern void sd_write32(PSDIO_DATA psdio, u32 addr, u32 v, s32 *err);
-extern s32 _sd_write(PSDIO_DATA psdio, u32 addr, u32 cnt, void *pdata);
-extern s32 sd_write(PSDIO_DATA psdio, u32 addr, u32 cnt, void *pdata);
-
//
// Description:
// The following mapping is for SDIO host local register space.
@@ -183,18 +161,12 @@ static u32 _cvrt2ftaddr(const u32 addr, u8 *pdeviceId, u16 *poffset)
u8 sdio_read8(struct intf_hdl *pintfhdl, u32 addr)
{
- struct dvobj_priv *psdiodev;
- PSDIO_DATA psdio;
u32 ftaddr;
u8 val;
_func_enter_;
-
- psdiodev = pintfhdl->pintf_dev;
- psdio = &psdiodev->intf_data;
-
ftaddr = _cvrt2ftaddr(addr, NULL, NULL);
- val = sd_read8(psdio, ftaddr, NULL);
+ val = sd_read8(pintfhdl, ftaddr, NULL);
_func_exit_;
@@ -203,18 +175,13 @@ _func_exit_;
u16 sdio_read16(struct intf_hdl *pintfhdl, u32 addr)
{
- struct dvobj_priv *psdiodev;
- PSDIO_DATA psdio;
u32 ftaddr;
u16 val;
_func_enter_;
- psdiodev = pintfhdl->pintf_dev;
- psdio = &psdiodev->intf_data;
-
ftaddr = _cvrt2ftaddr(addr, NULL, NULL);
- sd_cmd52_read(psdio, ftaddr, 2, (u8*)&val);
+ sd_cmd52_read(pintfhdl, ftaddr, 2, (u8*)&val);
val = le16_to_cpu(val);
_func_exit_;
@@ -225,8 +192,6 @@ _func_exit_;
u32 sdio_read32(struct intf_hdl *pintfhdl, u32 addr)
{
PADAPTER padapter;
- struct dvobj_priv *psdiodev;
- PSDIO_DATA psdio;
u8 bMacPwrCtrlOn;
u8 deviceId;
u16 offset;
@@ -238,8 +203,6 @@ u32 sdio_read32(struct intf_hdl *pintfhdl, u32 addr)
_func_enter_;
padapter = pintfhdl->padapter;
- psdiodev = pintfhdl->pintf_dev;
- psdio = &psdiodev->intf_data;
ftaddr = _cvrt2ftaddr(addr, &deviceId, &offset);
@@ -247,11 +210,11 @@ _func_enter_;
if (((deviceId == WLAN_IOREG_DEVICE_ID) && (offset < 0x100))
|| (_FALSE == bMacPwrCtrlOn)
#ifdef CONFIG_LPS_LCLK
- || (_TRUE == padapter->pwrctrlpriv.bFwCurrentInPSMode)
+ || (_TRUE == adapter_to_pwrctl(padapter)->bFwCurrentInPSMode)
#endif
)
{
- err = sd_cmd52_read(psdio, ftaddr, 4, (u8*)&val);
+ err = sd_cmd52_read(pintfhdl, ftaddr, 4, (u8*)&val);
#ifdef SDIO_DEBUG_IO
if (!err) {
#endif
@@ -268,7 +231,7 @@ _func_enter_;
// 4 bytes alignment
shift = ftaddr & 0x3;
if (shift == 0) {
- val = sd_read32(psdio, ftaddr, NULL);
+ val = sd_read32(pintfhdl, ftaddr, NULL);
} else {
u8 *ptmpbuf;
@@ -279,7 +242,7 @@ _func_enter_;
}
ftaddr &= ~(u16)0x3;
- sd_read(psdio, ftaddr, 8, ptmpbuf);
+ sd_read(pintfhdl, ftaddr, 8, ptmpbuf);
_rtw_memcpy(&val, ptmpbuf+shift, 4);
val = le32_to_cpu(val);
@@ -294,8 +257,6 @@ _func_exit_;
s32 sdio_readN(struct intf_hdl *pintfhdl, u32 addr, u32 cnt, u8 *pbuf)
{
PADAPTER padapter;
- struct dvobj_priv *psdiodev;
- PSDIO_DATA psdio;
u8 bMacPwrCtrlOn;
u8 deviceId;
u16 offset;
@@ -306,8 +267,6 @@ s32 sdio_readN(struct intf_hdl *pintfhdl, u32 addr, u32 cnt, u8 *pbuf)
_func_enter_;
padapter = pintfhdl->padapter;
- psdiodev = pintfhdl->pintf_dev;
- psdio = &psdiodev->intf_data;
err = 0;
ftaddr = _cvrt2ftaddr(addr, &deviceId, &offset);
@@ -316,18 +275,18 @@ _func_enter_;
if (((deviceId == WLAN_IOREG_DEVICE_ID) && (offset < 0x100))
|| (_FALSE == bMacPwrCtrlOn)
#ifdef CONFIG_LPS_LCLK
- || (_TRUE == padapter->pwrctrlpriv.bFwCurrentInPSMode)
+ || (_TRUE == adapter_to_pwrctl(padapter)->bFwCurrentInPSMode)
#endif
)
{
- err = sd_cmd52_read(psdio, ftaddr, cnt, pbuf);
+ err = sd_cmd52_read(pintfhdl, ftaddr, cnt, pbuf);
return err;
}
// 4 bytes alignment
shift = ftaddr & 0x3;
if (shift == 0) {
- err = sd_read(psdio, ftaddr, cnt, pbuf);
+ err = sd_read(pintfhdl, ftaddr, cnt, pbuf);
} else {
u8 *ptmpbuf;
u32 n;
@@ -336,7 +295,7 @@ _func_enter_;
n = cnt + shift;
ptmpbuf = rtw_malloc(n);
if (NULL == ptmpbuf) return -1;
- err = sd_read(psdio, ftaddr, n, ptmpbuf);
+ err = sd_read(pintfhdl, ftaddr, n, ptmpbuf);
if (!err)
_rtw_memcpy(pbuf, ptmpbuf+shift, cnt);
rtw_mfree(ptmpbuf, n);
@@ -349,18 +308,13 @@ _func_exit_;
s32 sdio_write8(struct intf_hdl *pintfhdl, u32 addr, u8 val)
{
- struct dvobj_priv *psdiodev;
- PSDIO_DATA psdio;
u32 ftaddr;
s32 err;
_func_enter_;
- psdiodev = pintfhdl->pintf_dev;
- psdio = &psdiodev->intf_data;
-
ftaddr = _cvrt2ftaddr(addr, NULL, NULL);
- sd_write8(psdio, ftaddr, val, &err);
+ sd_write8(pintfhdl, ftaddr, val, &err);
_func_exit_;
@@ -369,20 +323,15 @@ _func_exit_;
s32 sdio_write16(struct intf_hdl *pintfhdl, u32 addr, u16 val)
{
- struct dvobj_priv *psdiodev;
- PSDIO_DATA psdio;
u32 ftaddr;
u8 shift;
s32 err;
_func_enter_;
- psdiodev = pintfhdl->pintf_dev;
- psdio = &psdiodev->intf_data;
-
ftaddr = _cvrt2ftaddr(addr, NULL, NULL);
val = cpu_to_le16(val);
- err = sd_cmd52_write(psdio, ftaddr, 2, (u8*)&val);
+ err = sd_cmd52_write(pintfhdl, ftaddr, 2, (u8*)&val);
_func_exit_;
@@ -392,8 +341,6 @@ _func_exit_;
s32 sdio_write32(struct intf_hdl *pintfhdl, u32 addr, u32 val)
{
PADAPTER padapter;
- struct dvobj_priv *psdiodev;
- PSDIO_DATA psdio;
u8 bMacPwrCtrlOn;
u8 deviceId;
u16 offset;
@@ -404,8 +351,6 @@ s32 sdio_write32(struct intf_hdl *pintfhdl, u32 addr, u32 val)
_func_enter_;
padapter = pintfhdl->padapter;
- psdiodev = pintfhdl->pintf_dev;
- psdio = &psdiodev->intf_data;
err = 0;
ftaddr = _cvrt2ftaddr(addr, &deviceId, &offset);
@@ -414,12 +359,12 @@ _func_enter_;
if (((deviceId == WLAN_IOREG_DEVICE_ID) && (offset < 0x100))
|| (_FALSE == bMacPwrCtrlOn)
#ifdef CONFIG_LPS_LCLK
- || (_TRUE == padapter->pwrctrlpriv.bFwCurrentInPSMode)
+ || (_TRUE == adapter_to_pwrctl(padapter)->bFwCurrentInPSMode)
#endif
)
{
val = cpu_to_le32(val);
- err = sd_cmd52_write(psdio, ftaddr, 4, (u8*)&val);
+ err = sd_cmd52_write(pintfhdl, ftaddr, 4, (u8*)&val);
return err;
}
@@ -428,16 +373,16 @@ _func_enter_;
#if 1
if (shift == 0)
{
- sd_write32(psdio, ftaddr, val, &err);
+ sd_write32(pintfhdl, ftaddr, val, &err);
}
else
{
val = cpu_to_le32(val);
- err = sd_cmd52_write(psdio, ftaddr, 4, (u8*)&val);
+ err = sd_cmd52_write(pintfhdl, ftaddr, 4, (u8*)&val);
}
#else
if (shift == 0) {
- sd_write32(psdio, ftaddr, val, &err);
+ sd_write32(pintfhdl, ftaddr, val, &err);
} else {
u8 *ptmpbuf;
@@ -445,14 +390,14 @@ _func_enter_;
if (NULL == ptmpbuf) return (-1);
ftaddr &= ~(u16)0x3;
- err = sd_read(psdio, ftaddr, 8, ptmpbuf);
+ err = sd_read(pintfhdl, ftaddr, 8, ptmpbuf);
if (err) {
rtw_mfree(ptmpbuf, 8);
return err;
}
val = cpu_to_le32(val);
_rtw_memcpy(ptmpbuf+shift, &val, 4);
- err = sd_write(psdio, ftaddr, 8, ptmpbuf);
+ err = sd_write(pintfhdl, ftaddr, 8, ptmpbuf);
rtw_mfree(ptmpbuf, 8);
}
@@ -466,8 +411,6 @@ _func_exit_;
s32 sdio_writeN(struct intf_hdl *pintfhdl, u32 addr, u32 cnt, u8* pbuf)
{
PADAPTER padapter;
- struct dvobj_priv *psdiodev;
- PSDIO_DATA psdio;
u8 bMacPwrCtrlOn;
u8 deviceId;
u16 offset;
@@ -478,8 +421,6 @@ s32 sdio_writeN(struct intf_hdl *pintfhdl, u32 addr, u32 cnt, u8* pbuf)
_func_enter_;
padapter = pintfhdl->padapter;
- psdiodev = pintfhdl->pintf_dev;
- psdio = &psdiodev->intf_data;
err = 0;
ftaddr = _cvrt2ftaddr(addr, &deviceId, &offset);
@@ -488,17 +429,17 @@ _func_enter_;
if (((deviceId == WLAN_IOREG_DEVICE_ID) && (offset < 0x100))
|| (_FALSE == bMacPwrCtrlOn)
#ifdef CONFIG_LPS_LCLK
- || (_TRUE == padapter->pwrctrlpriv.bFwCurrentInPSMode)
+ || (_TRUE == adapter_to_pwrctl(padapter)->bFwCurrentInPSMode)
#endif
)
{
- err = sd_cmd52_write(psdio, ftaddr, cnt, pbuf);
+ err = sd_cmd52_write(pintfhdl, ftaddr, cnt, pbuf);
return err;
}
shift = ftaddr & 0x3;
if (shift == 0) {
- err = sd_write(psdio, ftaddr, cnt, pbuf);
+ err = sd_write(pintfhdl, ftaddr, cnt, pbuf);
} else {
u8 *ptmpbuf;
u32 n;
@@ -507,13 +448,13 @@ _func_enter_;
n = cnt + shift;
ptmpbuf = rtw_malloc(n);
if (NULL == ptmpbuf) return -1;
- err = sd_read(psdio, ftaddr, 4, ptmpbuf);
+ err = sd_read(pintfhdl, ftaddr, 4, ptmpbuf);
if (err) {
rtw_mfree(ptmpbuf, n);
return err;
}
_rtw_memcpy(ptmpbuf+shift, pbuf, cnt);
- err = sd_write(psdio, ftaddr, n, ptmpbuf);
+ err = sd_write(pintfhdl, ftaddr, n, ptmpbuf);
rtw_mfree(ptmpbuf, n);
}
@@ -600,7 +541,7 @@ static u32 sdio_read_port(
#endif
}
- err = _sd_read(psdio, addr, cnt, mem);
+ err = _sd_read(pintfhdl, addr, cnt, mem);
#ifdef SDIO_DYNAMIC_ALLOC_MEM
if ((oldcnt != cnt) && (oldmem)) {
@@ -643,6 +584,12 @@ static u32 sdio_write_port(
padapter = pintfhdl->padapter;
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);
+ return _FAIL;
+ }
+
cnt = _RND4(cnt);
HalSdioGetCmdAddr8723ASdio(padapter, addr, cnt >> 2, &addr);
@@ -650,7 +597,7 @@ static u32 sdio_write_port(
cnt = _RND(cnt, psdio->block_transfer_len);
// cnt = sdio_align_size(cnt);
- err = sd_write(psdio, addr, cnt, xmitbuf->pdata);
+ err = sd_write(pintfhdl, addr, cnt, xmitbuf->pdata);
rtw_sctx_done_err(&xmitbuf->sctx,
err ? RTW_SCTX_DONE_WRITE_PORT_ERR : RTW_SCTX_DONE_SUCCESS);
@@ -688,21 +635,20 @@ s32 _sdio_local_read(
u32 cnt,
u8 *pbuf)
{
- PSDIO_DATA psdio;
+ struct intf_hdl * pintfhdl;
u8 bMacPwrCtrlOn;
s32 err;
u8 *ptmpbuf;
u32 n;
-
- psdio = &adapter_to_dvobj(padapter)->intf_data;
-
+ pintfhdl=&padapter->iopriv.intf;
+
HalSdioGetCmdAddr8723ASdio(padapter, SDIO_LOCAL_DEVICE_ID, addr, &addr);
rtw_hal_get_hwreg(padapter, HW_VAR_APFM_ON_MAC, &bMacPwrCtrlOn);
if (_FALSE == bMacPwrCtrlOn)
{
- err = _sd_cmd52_read(psdio, addr, cnt, pbuf);
+ err = _sd_cmd52_read(pintfhdl, addr, cnt, pbuf);
return err;
}
@@ -711,7 +657,7 @@ s32 _sdio_local_read(
if (!ptmpbuf)
return (-1);
- err = _sd_read(psdio, addr, n, ptmpbuf);
+ err = _sd_read(pintfhdl, addr, n, ptmpbuf);
if (!err)
_rtw_memcpy(pbuf, ptmpbuf, cnt);
@@ -730,25 +676,23 @@ s32 sdio_local_read(
u32 cnt,
u8 *pbuf)
{
- PSDIO_DATA psdio;
+ struct intf_hdl * pintfhdl;
u8 bMacPwrCtrlOn;
s32 err;
u8 *ptmpbuf;
u32 n;
-
- psdio = &adapter_to_dvobj(padapter)->intf_data;
-
+ pintfhdl=&padapter->iopriv.intf;
HalSdioGetCmdAddr8723ASdio(padapter, SDIO_LOCAL_DEVICE_ID, addr, &addr);
rtw_hal_get_hwreg(padapter, HW_VAR_APFM_ON_MAC, &bMacPwrCtrlOn);
if ((_FALSE == bMacPwrCtrlOn)
#ifdef CONFIG_LPS_LCLK
- || (_TRUE == padapter->pwrctrlpriv.bFwCurrentInPSMode)
+ || (_TRUE == adapter_to_pwrctl(padapter)->bFwCurrentInPSMode)
#endif
)
{
- err = sd_cmd52_read(psdio, addr, cnt, pbuf);
+ err = sd_cmd52_read(pintfhdl, addr, cnt, pbuf);
return err;
}
@@ -757,7 +701,7 @@ s32 sdio_local_read(
if (!ptmpbuf)
return (-1);
- err = sd_read(psdio, addr, n, ptmpbuf);
+ err = sd_read(pintfhdl, addr, n, ptmpbuf);
if (!err)
_rtw_memcpy(pbuf, ptmpbuf, cnt);
@@ -776,7 +720,7 @@ s32 _sdio_local_write(
u32 cnt,
u8 *pbuf)
{
- PSDIO_DATA psdio;
+ struct intf_hdl * pintfhdl;
u8 bMacPwrCtrlOn;
s32 err;
u8 *ptmpbuf;
@@ -787,18 +731,17 @@ s32 _sdio_local_write(
if(cnt & 0x3)
DBG_8192C("%s, size must be the multiple of 4 \n", __FUNCTION__);
- psdio = &adapter_to_dvobj(padapter)->intf_data;
-
+ pintfhdl=&padapter->iopriv.intf;
HalSdioGetCmdAddr8723ASdio(padapter, SDIO_LOCAL_DEVICE_ID, addr, &addr);
rtw_hal_get_hwreg(padapter, HW_VAR_APFM_ON_MAC, &bMacPwrCtrlOn);
if ((_FALSE == bMacPwrCtrlOn)
#ifdef CONFIG_LPS_LCLK
- || (_TRUE == padapter->pwrctrlpriv.bFwCurrentInPSMode)
+ || (_TRUE == adapter_to_pwrctl(padapter)->bFwCurrentInPSMode)
#endif
)
{
- err = _sd_cmd52_write(psdio, addr, cnt, pbuf);
+ err = _sd_cmd52_write(pintfhdl, addr, cnt, pbuf);
return err;
}
@@ -808,7 +751,7 @@ s32 _sdio_local_write(
_rtw_memcpy(ptmpbuf, pbuf, cnt);
- err = _sd_write(psdio, addr, cnt, ptmpbuf);
+ err = _sd_write(pintfhdl, addr, cnt, ptmpbuf);
if (ptmpbuf)
rtw_mfree(ptmpbuf, cnt);
@@ -825,7 +768,7 @@ s32 sdio_local_write(
u32 cnt,
u8 *pbuf)
{
- PSDIO_DATA psdio;
+ struct intf_hdl * pintfhdl;
u8 bMacPwrCtrlOn;
s32 err;
u8 *ptmpbuf;
@@ -836,18 +779,18 @@ s32 sdio_local_write(
if(cnt & 0x3)
DBG_8192C("%s, size must be the multiple of 4 \n", __FUNCTION__);
- psdio = &adapter_to_dvobj(padapter)->intf_data;
-
+ pintfhdl=&padapter->iopriv.intf;
+
HalSdioGetCmdAddr8723ASdio(padapter, SDIO_LOCAL_DEVICE_ID, addr, &addr);
rtw_hal_get_hwreg(padapter, HW_VAR_APFM_ON_MAC, &bMacPwrCtrlOn);
if ((_FALSE == bMacPwrCtrlOn)
#ifdef CONFIG_LPS_LCLK
- || (_TRUE == padapter->pwrctrlpriv.bFwCurrentInPSMode)
+ || (_TRUE == adapter_to_pwrctl(padapter)->bFwCurrentInPSMode)
#endif
)
{
- err = sd_cmd52_write(psdio, addr, cnt, pbuf);
+ err = sd_cmd52_write(pintfhdl, addr, cnt, pbuf);
return err;
}
@@ -857,7 +800,7 @@ s32 sdio_local_write(
_rtw_memcpy(ptmpbuf, pbuf, cnt);
- err = sd_write(psdio, addr, cnt, ptmpbuf);
+ err = sd_write(pintfhdl, addr, cnt, ptmpbuf);
if (ptmpbuf)
rtw_mfree(ptmpbuf, cnt);
@@ -867,26 +810,24 @@ s32 sdio_local_write(
u8 SdioLocalCmd52Read1Byte(PADAPTER padapter, u32 addr)
{
- PSDIO_DATA psdio;
+ struct intf_hdl * pintfhdl;
u8 val = 0;
-
- psdio = &adapter_to_dvobj(padapter)->intf_data;
+ pintfhdl=&padapter->iopriv.intf;
HalSdioGetCmdAddr8723ASdio(padapter, SDIO_LOCAL_DEVICE_ID, addr, &addr);
- sd_cmd52_read(psdio, addr, 1, &val);
+ sd_cmd52_read(pintfhdl, addr, 1, &val);
return val;
}
u16 SdioLocalCmd52Read2Byte(PADAPTER padapter, u32 addr)
{
- PSDIO_DATA psdio;
+ struct intf_hdl * pintfhdl;
u16 val = 0;
-
- psdio = &adapter_to_dvobj(padapter)->intf_data;
+ pintfhdl=&padapter->iopriv.intf;
HalSdioGetCmdAddr8723ASdio(padapter, SDIO_LOCAL_DEVICE_ID, addr, &addr);
- sd_cmd52_read(psdio, addr, 2, (u8*)&val);
+ sd_cmd52_read(pintfhdl, addr, 2, (u8*)&val);
val = le16_to_cpu(val);
@@ -895,13 +836,12 @@ u16 SdioLocalCmd52Read2Byte(PADAPTER padapter, u32 addr)
u32 SdioLocalCmd52Read4Byte(PADAPTER padapter, u32 addr)
{
- PSDIO_DATA psdio;
+ struct intf_hdl * pintfhdl;
u32 val = 0;
-
- psdio = &adapter_to_dvobj(padapter)->intf_data;
+ pintfhdl=&padapter->iopriv.intf;
HalSdioGetCmdAddr8723ASdio(padapter, SDIO_LOCAL_DEVICE_ID, addr, &addr);
- sd_cmd52_read(psdio, addr, 4, (u8*)&val);
+ sd_cmd52_read(pintfhdl, addr, 4, (u8*)&val);
val = le32_to_cpu(val);
@@ -910,60 +850,55 @@ u32 SdioLocalCmd52Read4Byte(PADAPTER padapter, u32 addr)
u32 SdioLocalCmd53Read4Byte(PADAPTER padapter, u32 addr)
{
- PSDIO_DATA psdio;
+ struct intf_hdl * pintfhdl;
u8 bMacPwrCtrlOn;
- u32 val;
+ u32 val=0;
-
- val = 0;
- psdio = &adapter_to_dvobj(padapter)->intf_data;
+ pintfhdl=&padapter->iopriv.intf;
HalSdioGetCmdAddr8723ASdio(padapter, SDIO_LOCAL_DEVICE_ID, addr, &addr);
rtw_hal_get_hwreg(padapter, HW_VAR_APFM_ON_MAC, &bMacPwrCtrlOn);
if ((_FALSE == bMacPwrCtrlOn)
#ifdef CONFIG_LPS_LCLK
- || (_TRUE == padapter->pwrctrlpriv.bFwCurrentInPSMode)
+ || (_TRUE == adapter_to_pwrctl(padapter)->bFwCurrentInPSMode)
#endif
)
{
- sd_cmd52_read(psdio, addr, 4, (u8*)&val);
+ sd_cmd52_read(pintfhdl, addr, 4, (u8*)&val);
val = le32_to_cpu(val);
}
else
- val = sd_read32(psdio, addr, NULL);
+ val = sd_read32(pintfhdl, addr, NULL);
return val;
}
void SdioLocalCmd52Write1Byte(PADAPTER padapter, u32 addr, u8 v)
{
- PSDIO_DATA psdio;
-
+ struct intf_hdl * pintfhdl;
- psdio = &adapter_to_dvobj(padapter)->intf_data;
+ pintfhdl=&padapter->iopriv.intf;
HalSdioGetCmdAddr8723ASdio(padapter, SDIO_LOCAL_DEVICE_ID, addr, &addr);
- sd_cmd52_write(psdio, addr, 1, &v);
+ sd_cmd52_write(pintfhdl, addr, 1, &v);
}
void SdioLocalCmd52Write2Byte(PADAPTER padapter, u32 addr, u16 v)
{
- PSDIO_DATA psdio;
+ struct intf_hdl * pintfhdl;
-
- psdio = &adapter_to_dvobj(padapter)->intf_data;
+ pintfhdl=&padapter->iopriv.intf;
HalSdioGetCmdAddr8723ASdio(padapter, SDIO_LOCAL_DEVICE_ID, addr, &addr);
v = cpu_to_le16(v);
- sd_cmd52_write(psdio, addr, 2, (u8*)&v);
+ sd_cmd52_write(pintfhdl, addr, 2, (u8*)&v);
}
void SdioLocalCmd52Write4Byte(PADAPTER padapter, u32 addr, u32 v)
{
- PSDIO_DATA psdio;
-
+ struct intf_hdl * pintfhdl;
- psdio = &adapter_to_dvobj(padapter)->intf_data;
+ pintfhdl=&padapter->iopriv.intf;
HalSdioGetCmdAddr8723ASdio(padapter, SDIO_LOCAL_DEVICE_ID, addr, &addr);
v = cpu_to_le32(v);
- sd_cmd52_write(psdio, addr, 4, (u8*)&v);
+ sd_cmd52_write(pintfhdl, addr, 4, (u8*)&v);
}
#if 0
@@ -1147,13 +1082,17 @@ void InitInterrupt8723ASdio(PADAPTER padapter)
// SDIO_HIMR_TXBCNOK_MSK |
// SDIO_HIMR_TXBCNERR_MSK |
// SDIO_HIMR_BCNERLY_INT_MSK |
+#ifndef CONFIG_DETECT_C2H_BY_POLLING
#if defined( CONFIG_BT_COEXIST) || defined(CONFIG_MP_INCLUDED)
SDIO_HIMR_C2HCMD_MSK |
#endif
+#endif
+#ifndef CONFIG_DETECT_CPWM_BY_POLLING
#ifdef CONFIG_LPS_LCLK
SDIO_HIMR_CPWM1_MSK |
// SDIO_HIMR_CPWM2_MSK |
#endif
+#endif
// SDIO_HIMR_HSISR_IND_MSK |
// SDIO_HIMR_GTINT3_IND_MSK |
// SDIO_HIMR_GTINT4_IND_MSK |
@@ -1412,11 +1351,8 @@ static struct recv_buf* sd_recv_rxfifo(PADAPTER padapter, u32 size)
SIZE_PTR tmpaddr=0;
SIZE_PTR alignment=0;
-#if (LINUX_VERSION_CODE < KERNEL_VERSION(2,6,18)) // http://www.mail-archive.com/netdev@vger.kernel.org/msg17214.html
- precvbuf->pskb = __dev_alloc_skb(MAX_RECVBUF_SZ + RECVBUFF_ALIGN_SZ, GFP_KERNEL);
-#else
- precvbuf->pskb = __netdev_alloc_skb(padapter->pnetdev, MAX_RECVBUF_SZ + RECVBUFF_ALIGN_SZ, GFP_KERNEL);
-#endif
+ precvbuf->pskb = rtw_skb_alloc(MAX_RECVBUF_SZ + RECVBUFF_ALIGN_SZ);
+
if(precvbuf->pskb)
{
precvbuf->pskb->dev = padapter->pnetdev;
@@ -1467,11 +1403,9 @@ static struct recv_buf* sd_recv_rxfifo(PADAPTER padapter, u32 size)
//3 1. alloc skb
// align to block size
allocsize = _RND(readsize, adapter_to_dvobj(padapter)->intf_data.block_transfer_len);
-#if (LINUX_VERSION_CODE < KERNEL_VERSION(2,6,18)) // http://www.mail-archive.com/netdev@vger.kernel.org/msg17214.html
- ppkt = __dev_alloc_skb(allocsize, GFP_KERNEL);
-#else
- ppkt = __netdev_alloc_skb(padapter->pnetdev, allocsize, GFP_KERNEL);
-#endif
+
+ ppkt = rtw_skb_alloc(allocsize);
+
if (ppkt == NULL) {
RT_TRACE(_module_hci_ops_os_c_, _drv_err_, ("%s: alloc_skb fail! alloc=%d read=%d\n", __FUNCTION__, allocsize, readsize));
return NULL;
@@ -1482,7 +1416,7 @@ static struct recv_buf* sd_recv_rxfifo(PADAPTER padapter, u32 size)
// rtw_read_port(padapter, WLAN_RX0FF_DEVICE_ID, readsize, preadbuf);
ret = sdio_read_port(&padapter->iopriv.intf, WLAN_RX0FF_DEVICE_ID, readsize, preadbuf);
if (ret == _FAIL) {
- dev_kfree_skb_any(ppkt);
+ rtw_skb_free(ppkt);
RT_TRACE(_module_hci_ops_os_c_, _drv_err_, ("%s: read port FAIL!\n", __FUNCTION__));
return NULL;
}
@@ -1491,7 +1425,7 @@ static struct recv_buf* sd_recv_rxfifo(PADAPTER padapter, u32 size)
precvpriv = &padapter->recvpriv;
precvbuf = rtw_dequeue_recvbuf(&precvpriv->free_recv_buf_queue);
if (precvbuf == NULL) {
- dev_kfree_skb_any(ppkt);
+ rtw_skb_free(ppkt);
RT_TRACE(_module_hci_ops_os_c_, _drv_err_, ("%s: alloc recvbuf FAIL!\n", __FUNCTION__));
return NULL;
}
@@ -1538,6 +1472,7 @@ void sd_int_dpc(PADAPTER padapter)
HAL_DATA_TYPE *phal;
struct dvobj_priv *dvobj = adapter_to_dvobj(padapter);
+ struct intf_hdl * pintfhdl=&padapter->iopriv.intf;
phal = GET_HAL_DATA(padapter);
if (phal->sdio_hisr & SDIO_HISR_CPWM1)
@@ -1546,14 +1481,14 @@ void sd_int_dpc(PADAPTER padapter)
#ifdef CONFIG_LPS_RPWM_TIMER
u8 bcancelled;
- _cancel_timer(&padapter->pwrctrlpriv.pwr_rpwm_timer, &bcancelled);
+ _cancel_timer(&(adapter_to_pwrctl(padapter)->pwr_rpwm_timer), &bcancelled);
#endif // CONFIG_LPS_RPWM_TIMER
_sdio_local_read(padapter, SDIO_REG_HCPWM1, 1, &report.state);
#ifdef CONFIG_LPS_LCLK
//cpwm_int_hdl(padapter, &report);
- _set_workitem(&padapter->pwrctrlpriv.cpwm_event);
+ _set_workitem(&(adapter_to_pwrctl(padapter)->cpwm_event));
#endif
}
@@ -1567,8 +1502,8 @@ void sd_int_dpc(PADAPTER padapter)
{
addr = REG_TXDMA_STATUS;
HalSdioGetCmdAddr8723ASdio(padapter, WLAN_IOREG_DEVICE_ID, addr, &addr);
- _sd_read(&dvobj->intf_data, addr, 4, status);
- _sd_write(&dvobj->intf_data, addr, 4, status);
+ _sd_read(pintfhdl, addr, 4, status);
+ _sd_write(pintfhdl, addr, 4, status);
DBG_8192C("%s: SDIO_HISR_TXERR (0x%08x)\n", __func__, le32_to_cpu(*(u32*)status));
rtw_mfree(status, 4);
} else {
@@ -1595,10 +1530,15 @@ void sd_int_dpc(PADAPTER padapter)
if (c2h_id_filter_ccx_8723a(c2h_evt->id)) {
/* Handle CCX report here */
rtw_hal_c2h_handler(padapter, c2h_evt);
+ rtw_mfree((u8*)c2h_evt, 16);
} else {
rtw_c2h_wk_cmd(padapter, (u8 *)c2h_evt);
}
}
+ else
+ {
+ rtw_mfree((u8*)c2h_evt, 16);
+ }
} else {
/* Error handling for malloc fail */
if (rtw_cbuf_push(padapter->evtpriv.c2h_queue, (void*)NULL) != _SUCCESS)