void pnp_resume_wk(void *context) { uint res = _SUCCESS; _adapter * padapter = (_adapter *)context; struct xmit_priv *pxmitpriv = &padapter->xmitpriv; struct recv_priv *precvpriv = &padapter->recvpriv; padapter->pwrctrlpriv.pnp_bstop_trx=_FALSE; pxmitpriv->txirp_cnt = 1; precvpriv->rx_pending_cnt = 1; res = rtl871x_hal_init(padapter); if (res ==_FAIL) { RT_TRACE(_module_rtl871x_ioctl_set_c_,_drv_err_,("\n========== pnp_hw_init_thread:init 8712 fail!!!!!!!!!!\n")); } if (padapter->dvobjpriv.inirp_init !=NULL) { padapter->dvobjpriv.inirp_init(padapter); RT_TRACE(_module_rtl871x_ioctl_set_c_,_drv_info_,("\n pnp_hw_init_thread:rx irp init!!\n")); } padapter->hw_init_completed = _TRUE; NdisMSetInformationComplete(padapter->hndis_adapter, NDIS_STATUS_SUCCESS); }
static int netdev_open(struct net_device *pnetdev) { struct _adapter *padapter = (struct _adapter *)_netdev_priv(pnetdev); if (padapter->bup == false) { padapter->bDriverStopped = false; padapter->bSurpriseRemoved = false; padapter->bup = true; if (rtl871x_hal_init(padapter) != _SUCCESS) goto netdev_open_error; if (r8712_initmac == NULL) /* Use the mac address stored in the Efuse */ memcpy(pnetdev->dev_addr, padapter->eeprompriv.mac_addr, ETH_ALEN); else { /* We have to inform f/w to use user-supplied MAC * address. */ msleep(200); r8712_setMacAddr_cmd(padapter, (u8 *)pnetdev->dev_addr); /* * The "myid" function will get the wifi mac address * from eeprompriv structure instead of netdev * structure. So, we have to overwrite the mac_addr * stored in the eeprompriv structure. In this case, * the real mac address won't be used anymore. So that, * the eeprompriv.mac_addr should store the mac which * users specify. */ memcpy(padapter->eeprompriv.mac_addr, pnetdev->dev_addr, ETH_ALEN); } if (start_drv_threads(padapter) != _SUCCESS) goto netdev_open_error; if (padapter->dvobjpriv.inirp_init == NULL) goto netdev_open_error; else padapter->dvobjpriv.inirp_init(padapter); r8712_set_ps_mode(padapter, padapter->registrypriv.power_mgnt, padapter->registrypriv.smart_ps); } if (!netif_queue_stopped(pnetdev)) netif_start_queue(pnetdev); else netif_wake_queue(pnetdev); if (video_mode) enable_video_mode(padapter, cbw40_enable); /* start driver mlme relation timer */ start_drv_timers(padapter); padapter->ledpriv.LedControlHandler(padapter, LED_CTL_NO_LINK); return 0; netdev_open_error: padapter->bup = false; netif_carrier_off(pnetdev); netif_stop_queue(pnetdev); return -1; }
void pnp_resume_wk(void *context) { #ifdef CONFIG_POWER_DOWN_MODE NDIS_STATUS status; uint res = _SUCCESS; #endif u8 x = 0; _adapter * padapter = (_adapter *)context; RT_TRACE(_module_rtl871x_ioctl_set_c_,_drv_info_,("pnp_resume_wk ===>\n")); padapter->pwrctrlpriv.pnp_bstop_trx=_FALSE; #ifdef CONFIG_POWER_DOWN_MODE { BOOL fRet = FALSE; HANDLE hPMU = INVALID_HANDLE_VALUE; u32 stLdoData = 0; hPMU = CreateFile(_T("SDH1:"), GENERIC_READ|GENERIC_WRITE, FILE_SHARE_READ | FILE_SHARE_WRITE, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL); if(INVALID_HANDLE_VALUE == hPMU ) { RT_TRACE(_module_rtl871x_ioctl_set_c_,_drv_err_,("CreateFile Error SDH1==.\n")); } fRet=DeviceIoControl(hPMU, IOCTL_CARD_STATE_NOTIFY, NULL, 0, &stLdoData, sizeof(u32), NULL, NULL); if(!fRet) { RT_TRACE(_module_rtl871x_ioctl_set_c_,_drv_err_,("DeviceIoControl Error \n")); } CloseHandle(hPMU); } //set 4-bit bus mode attrib_read(padapter, 0x7, 1, &x); x |= BIT(1); attrib_write(padapter, 0x7, 1, &x); //set Function 1 I/O Block Size to 512(0x0200) x = 0x00; attrib_write(padapter, 0x110, 1, &x); x = 0x02; attrib_write(padapter, 0x111, 1, &x); //set Function 1 I/O Enable attrib_read(padapter, 0x2, 1, &x); x |= BIT(1); attrib_write(padapter, 0x2, 1, &x); //set Function 1 Interrupt Enable x = BIT(0)|BIT(1); attrib_write(padapter, 0x4, 1, &x); status=padapter->dvobj_init(padapter); if (status != NDIS_STATUS_SUCCESS) { RT_TRACE(_module_rtl871x_ioctl_set_c_,_drv_err_,("\n initialize device object priv Failed!\n")); } res = rtl871x_hal_init(padapter); if (res ==_FAIL) { RT_TRACE(_module_rtl871x_ioctl_set_c_,_drv_err_,("\n========== pnp_hw_init_thread:init 8712 fail!!!!!!!!!!\n")); } #endif RT_TRACE(_module_rtl871x_ioctl_set_c_,_drv_err_,("===>write SDIO_HIMR!!!\n")); write16(padapter, SDIO_HIMR, 0x3ff); { u32 tmp32; tmp32=read32(padapter, TXFF_EMPTY_TH); RT_TRACE(_module_rtl871x_ioctl_set_c_,_drv_err_,(" =====TXFF_EMPTY_TH=0x%.8x!\n",tmp32)); tmp32=tmp32 |0xfffff; write32(padapter, TXFF_EMPTY_TH, tmp32); tmp32=read32(padapter, TXFF_EMPTY_TH); RT_TRACE(_module_rtl871x_ioctl_set_c_,_drv_err_,(" =====TXFF_EMPTY_TH=0x%.8x!\n",tmp32)); } padapter->hw_init_completed=_TRUE; #ifdef CONFIG_POWER_DOWN_MODE if(padapter->pwrctrlpriv.pwr_mode != padapter->registrypriv.power_mgnt){ set_ps_mode(padapter, padapter->registrypriv.power_mgnt, padapter->registrypriv.smart_ps); } #endif NdisMSetInformationComplete(padapter->hndis_adapter, NDIS_STATUS_SUCCESS); RT_TRACE(_module_rtl871x_ioctl_set_c_,_drv_info_,("pnp_resume_wk <===\n")); }