diff options
Diffstat (limited to 'drivers/net/wireless/rtl8723as/hal/rtl8723a/sdio/sdio_ops.c')
-rwxr-xr-x | drivers/net/wireless/rtl8723as/hal/rtl8723a/sdio/sdio_ops.c | 258 |
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) |