Exemple #1
0
//
//	Description:
//		Turn on LED according to LedPin specified.
//
static void
SwLedOn_8188EU(
	_adapter			*padapter, 
	PLED_USB		pLed
)
{
	u8	LedCfg;
	//HAL_DATA_TYPE	*pHalData = GET_HAL_DATA(padapter);

	if (RTW_CANNOT_RUN(padapter))
		return;

	LedCfg = rtw_read8(padapter, REG_LEDCFG2);
	switch(pLed->LedPin)
	{	
		case LED_PIN_LED0:
			rtw_write8(padapter, REG_LEDCFG2, (LedCfg&0xf0)|BIT5|BIT6); // SW control led0 on.
			break;

		case LED_PIN_LED1:
			rtw_write8(padapter, REG_LEDCFG2, (LedCfg&0x0f)|BIT5); // SW control led1 on.
			break;

		default:
			break;
	}
	
	pLed->bLedOn = _TRUE;
}
void usb_recv_tasklet(void *priv)
{
	_pkt			*pskb;
	_adapter		*padapter = (_adapter *)priv;
	struct recv_priv	*precvpriv = &padapter->recvpriv;
	struct recv_buf	*precvbuf = NULL;

	while (NULL != (pskb = skb_dequeue(&precvpriv->rx_skb_queue))) {

		if (RTW_CANNOT_RUN(padapter)) {
			RTW_INFO("recv_tasklet => bDriverStopped(%s) OR bSurpriseRemoved(%s)\n"
				, rtw_is_drv_stopped(padapter) ? "True" : "False"
				, rtw_is_surprise_removed(padapter) ? "True" : "False");
			#ifdef CONFIG_PREALLOC_RX_SKB_BUFFER
			if (rtw_free_skb_premem(pskb) != 0)
			#endif /* CONFIG_PREALLOC_RX_SKB_BUFFER */
				rtw_skb_free(pskb);
			break;
		}

		recvbuf2recvframe(padapter, pskb);

		skb_reset_tail_pointer(pskb);
		pskb->len = 0;

		skb_queue_tail(&precvpriv->free_recv_skb_queue, pskb);

		precvbuf = rtw_dequeue_recvbuf(&precvpriv->recv_buf_pending_queue);
		if (NULL != precvbuf) {
			precvbuf->pskb = NULL;
			rtw_read_port(padapter, precvpriv->ff_hwaddr, 0, (unsigned char *)precvbuf);
		}
	}
}
/*
 *	Description:
 *		Turn off LED according to LedPin specified.
 *   */
static void
SwLedOff_8812AE(
	_adapter			*padapter,
	PLED_PCIE		pLed
)
{
	u16	LedReg = REG_LEDCFG0;
	HAL_DATA_TYPE *pHalData = GET_HAL_DATA(padapter);
	struct led_priv	*ledpriv = &(padapter->ledpriv);

	if (RTW_CANNOT_RUN(padapter))
		return;

	switch (pLed->LedPin) {
	case LED_PIN_LED0:
		if (ledpriv->LedStrategy == SW_LED_MODE10)
			LedReg = REG_LEDCFG0;
		else
			LedReg = REG_LEDCFG1;
		break;

	case LED_PIN_LED1:
		LedReg = REG_LEDCFG2;
		break;

	case LED_PIN_GPIO0:
	default:
		break;
	}

	/* RTW_INFO("In SwLedOff,LedAddr:%X LEDPIN=%d\n", LedReg, pLed->LedPin); */

	if (pHalData->bLedOpenDrain == _TRUE) { /* Open-drain arrangement for controlling the LED */
		u8	LedCfg = rtw_read8(padapter, LedReg);

		LedCfg &= 0xd0; /* Set to software control. */
		rtw_write8(padapter, LedReg, (LedCfg | BIT3));

		/* Open-drain arrangement */
		LedCfg = rtw_read8(padapter, REG_MAC_PINMUX_CFG);
		LedCfg &= 0xFE;/* Set GPIO[8] to input mode */
		rtw_write8(padapter, REG_MAC_PINMUX_CFG, LedCfg);

	} else
		rtw_write8(padapter, LedReg, 0x28);

	pLed->bLedOn = _FALSE;
}
/*
 *	Description:
 *		Turn off LED according to LedPin specified.
 *   */
VOID
SwLedOff_8821AE(
	IN	PADAPTER		Adapter,
	IN	PLED_PCIE		pLed
)
{
	u16	LedReg = REG_LEDCFG0;
	HAL_DATA_TYPE *pHalData = GET_HAL_DATA(Adapter);
	struct led_priv	*ledpriv = &(Adapter->ledpriv);

	if (RTW_CANNOT_RUN(Adapter))
		return;

	switch (pLed->LedPin) {
	case LED_PIN_LED0:
		if (ledpriv->LedStrategy == SW_LED_MODE10)
			LedReg = REG_LEDCFG0;
		else
			LedReg = REG_LEDCFG2;
		break;

	case LED_PIN_LED1:
		LedReg = REG_LEDCFG1;
		break;

	case LED_PIN_GPIO0:
	default:
		break;
	}

	/* RTW_INFO("In SwLedOff,LedAddr:%X LEDPIN=%d\n", LedReg, pLed->LedPin); */

	if (pHalData->bLedOpenDrain == _TRUE) { /* Open-drain arrangement for controlling the LED */
		u8	LedCfg = rtw_read8(Adapter, LedReg);

		LedCfg &= 0xd0; /* Set to software control and disable LED2 */
		rtw_write8(Adapter, LedReg, (LedCfg | BIT3));

		/* Open-drain arrangement */
		LedCfg = rtw_read8(Adapter, REG_GPIO_EXT_CTRL + 2);
		LedCfg &= 0xFE;
		rtw_write8(Adapter, REG_GPIO_EXT_CTRL + 2, LedCfg);
	} else
		rtw_write8(Adapter, LedReg, 0x28);

	pLed->bLedOn = _FALSE;
}
Exemple #5
0
//
//	Description:
//		Turn off LED according to LedPin specified.
//
static void
SwLedOff_8188EU(
	_adapter			*padapter, 
	PLED_USB		pLed
)
{
	u8	LedCfg;
	HAL_DATA_TYPE	*pHalData = GET_HAL_DATA(padapter);

	if (RTW_CANNOT_RUN(padapter))
		goto exit;


	LedCfg = rtw_read8(padapter, REG_LEDCFG2);//0x4E

	switch(pLed->LedPin)
	{
		case LED_PIN_LED0:
			if(pHalData->bLedOpenDrain == _TRUE) // Open-drain arrangement for controlling the LED)
			{
				LedCfg &= 0x90; // Set to software control.				
				rtw_write8(padapter, REG_LEDCFG2, (LedCfg|BIT3));				
				LedCfg = rtw_read8(padapter, REG_MAC_PINMUX_CFG);
				LedCfg &= 0xFE;
				rtw_write8(padapter, REG_MAC_PINMUX_CFG, LedCfg);									
			}
			else
			{
				rtw_write8(padapter, REG_LEDCFG2, (LedCfg|BIT3|BIT5|BIT6));
			}
			break;

		case LED_PIN_LED1:
			LedCfg &= 0x0f; // Set to software control.
			rtw_write8(padapter, REG_LEDCFG2, (LedCfg|BIT3));
			break;

		default:
			break;
	}
exit:
	pLed->bLedOn = _FALSE;
	
}
void usb_recv_tasklet(void *priv)
{
	struct recv_buf *precvbuf = NULL;
	_adapter	*padapter = (_adapter *)priv;
	struct recv_priv	*precvpriv = &padapter->recvpriv;

	while (NULL != (precvbuf = rtw_dequeue_recvbuf(&precvpriv->recv_buf_pending_queue))) {
		if (RTW_CANNOT_RUN(padapter)) {
			RTW_INFO("recv_tasklet => bDriverStopped(%s) OR bSurpriseRemoved(%s)\n"
				, rtw_is_drv_stopped(padapter)? "True" : "False"
				, rtw_is_surprise_removed(padapter)? "True" : "False");
			break;
		}

		recvbuf2recvframe(padapter, precvbuf);

		rtw_read_port(padapter, precvpriv->ff_hwaddr, 0, (unsigned char *)precvbuf);
	}
}
/*
 *	Description:
 *		Turn on LED according to LedPin specified.
 *   */
VOID
SwLedOn_8821AE(
	IN	PADAPTER		Adapter,
	IN	PLED_PCIE		pLed
)
{
	u16	LedReg = REG_LEDCFG0;
	u8	LedCfg = 0;
	HAL_DATA_TYPE	*pHalData = GET_HAL_DATA(Adapter);
	struct led_priv	*ledpriv = &(Adapter->ledpriv);

	if (RTW_CANNOT_RUN(Adapter))
		return;

	switch (pLed->LedPin) {
	case LED_PIN_LED0:
		if (ledpriv->LedStrategy == SW_LED_MODE10)
			LedReg = REG_LEDCFG0;
		else
			LedReg = REG_LEDCFG2;
		break;

	case LED_PIN_LED1:
		LedReg = REG_LEDCFG1;
		break;

	case LED_PIN_GPIO0:
	default:
		break;
	}

	/* RTW_INFO("In SwLedOn, LedAddr:%X LEDPIN=%d\n", LedReg, pLed->LedPin); */

	LedCfg = rtw_read8(Adapter, LedReg);
	LedCfg |= BIT5; /* Set 0x4c[21] */
	LedCfg &= ~BIT3; /* Clear 0x4c[19] */
	LedCfg &= ~(BIT6 | BIT2 | BIT1 | BIT0); /* Clear 0x4c[22] and 0x4c[18:16] */
	rtw_write8(Adapter, LedReg, LedCfg); /* SW control led0 on.	 */
	pLed->bLedOn = _TRUE;
}