static int bt_suspend(struct platform_device *pdev,
pm_message_t state)
{
- struct bt_dev_data *pdata = platform_get_drvdata(pdev);
+ struct bt_dev_runtime_data *prdata =
+ platform_get_drvdata(pdev);
+ struct bt_dev_data *pdata;
pr_info("bt suspend\n");
- enable_irq(pdata->irqno_wakeup);
+
+ if (prdata) {
+ pdata = prdata->pdata;
+ if (pdata)
+ enable_irq(pdata->irqno_wakeup);
+ }
return 0;
}
static int bt_resume(struct platform_device *pdev)
{
- struct bt_dev_data *pdata = platform_get_drvdata(pdev);
+ struct bt_dev_runtime_data *prdata =
+ platform_get_drvdata(pdev);
+ struct bt_dev_data *pdata;
pr_info("bt resume\n");
- disable_irq(pdata->irqno_wakeup);
+
+ if (prdata) {
+ pdata = prdata->pdata;
+ if (pdata)
+ disable_irq(pdata->irqno_wakeup);
+ }
return 0;
}
register_early_suspend(&bt_early_suspend);
#endif
- platform_set_drvdata(pdev, pdata);
-
/*1.Set BT_WAKE_HOST to the input state;*/
/*2.Get interrupt number(irqno_wakeup).*/
pdata->irqno_wakeup = gpio_to_irq(pdata->gpio_btwakeup);