Пример #1
0
static int bcm4329_rfkill_suspend(struct platform_device *pdev, pm_message_t state)
{
    DBG("%s\n",__FUNCTION__);

    cancel_delayed_work(&wakeup_work);

#ifdef CONFIG_BT_AUTOSLEEP
    bcm4325_sleep(1);
#endif

    DBG("Disable UART_RTS\n");
	//To prevent uart to receive bt data when suspended
	IOMUX_UART_RTS_GPIO();
	gpio_request(UART_RTS, "uart_rts");
	gpio_set_value(UART_RTS, GPIO_HIGH);

    // enable bt wakeup host
    DBG("Request irq for bt wakeup host\n");
	if (0 == request_irq(BT_IRQ_WAKE_UP_HOST,
                    bcm4329_wake_host_irq,
                    IRQF_TRIGGER_FALLING,
                    "bt_wake",
                    NULL))
        enable_irq_wake(BT_IRQ_WAKE_UP_HOST);
    else
		LOG("Failed to request BT_WAKE_UP_HOST irq\n");

#ifdef CONFIG_RFKILL_RESET
    extern void rfkill_set_block(struct rfkill *rfkill, bool blocked);
    rfkill_set_block(gBtCtrl.bt_rfk, true);
#endif

    return 0;
}
static int bcm4329_rfkill_suspend(struct platform_device *pdev, pm_message_t state)
{
    DBG("%s\n",__FUNCTION__);

#ifdef CONFIG_BT_AUTOSLEEP
    bcm4325_sleep(1);
#endif

    DBG("Disable UART_RTS\n");
	//To prevent uart to receive bt data when suspended
	IOMUX_UART_RTS_GPIO();
	gpio_request(UART_RTS, "uart_rts");
	gpio_set_value(UART_RTS, GPIO_HIGH);

#ifdef CONFIG_RFKILL_RESET
    extern void rfkill_set_block(struct rfkill *rfkill, bool blocked);
    rfkill_set_block(gBtCtrl.bt_rfk, true);
#endif

    return 0;
}