static int __devinit bcm4329_rfkill_probe(struct platform_device *pdev) { int rc = 0; bool default_state = true; DBG("Enter %s\n",__FUNCTION__); /* default to bluetooth off */ bcm4329_set_block(NULL, default_state); /* blocked -> bt off */ gBtCtrl.bt_rfk = rfkill_alloc(bt_name, NULL, RFKILL_TYPE_BLUETOOTH, &bcm4329_rfk_ops, NULL); if (!gBtCtrl.bt_rfk) { LOG("fail to rfkill_allocate\n"); return -ENOMEM; } rfkill_set_states(gBtCtrl.bt_rfk, default_state, false); rc = rfkill_register(gBtCtrl.bt_rfk); if (rc) { LOG("failed to rfkill_register,rc=0x%x\n",rc); rfkill_destroy(gBtCtrl.bt_rfk); } gpio_request(BT_GPIO_POWER, NULL); gpio_request(BT_GPIO_RESET, NULL); gpio_request(BT_GPIO_WAKE_UP, NULL); #ifdef CONFIG_BT_AUTOSLEEP init_timer(&bt_sleep_tl); bt_sleep_tl.expires = 0; bt_sleep_tl.function = bcm4325_sleep; bt_sleep_tl.data = 1; add_timer(&bt_sleep_tl); #endif #if BT_WAKE_HOST_SUPPORT init_timer(&(gBtCtrl.tl)); gBtCtrl.tl.expires = 0; gBtCtrl.tl.function = timer_hostSleep; add_timer(&(gBtCtrl.tl)); gBtCtrl.b_HostWake = false; wake_lock_init(&(gBtCtrl.bt_wakelock), WAKE_LOCK_SUSPEND, "bt_wake"); rc = gpio_request(BT_GPIO_WAKE_UP_HOST, "bt_wake"); if (rc) { LOG("Failed to request BT_WAKE_UP_HOST\n"); } IOMUX_BT_GPIO_WAKE_UP_HOST(); gpio_pull_updown(BT_GPIO_WAKE_UP_HOST,GPIOPullUp); #endif LOG("bcm4329 module has been initialized,rc=0x%x\n",rc); return rc; }
static int __devinit bcm4329_rfkill_probe(struct platform_device *pdev) { int rc = 0; bool default_state = true; DBG("Enter::%s,line=%d\n",__FUNCTION__,__LINE__); /* default to bluetooth off */ bcm4329_set_block(NULL, default_state); /* blocked -> bt off */ gBtCtrl.bt_rfk = rfkill_alloc(bt_name, NULL, RFKILL_TYPE_BLUETOOTH, &bcm4329_rfk_ops, NULL); if (!gBtCtrl.bt_rfk) { printk("fail to rfkill_allocate************\n"); return -ENOMEM; } rfkill_set_states(gBtCtrl.bt_rfk, default_state, false); rc = rfkill_register(gBtCtrl.bt_rfk); if (rc) { printk("failed to rfkill_register,rc=0x%x\n",rc); rfkill_destroy(gBtCtrl.bt_rfk); } gpio_request(BT_GPIO_POWER, NULL); gpio_request(BT_GPIO_RESET, NULL); gpio_request(BT_GPIO_WAKE_UP, NULL); #if BT_WAKE_HOST_SUPPORT init_timer(&(gBtCtrl.tl)); gBtCtrl.tl.expires = jiffies + BT_WAKE_LOCK_TIMEOUT*HZ; gBtCtrl.tl.function = timer_hostSleep; add_timer(&(gBtCtrl.tl)); gBtCtrl.b_HostWake = false; wake_lock_init(&(gBtCtrl.bt_wakelock), WAKE_LOCK_SUSPEND, "bt_wake"); rc = gpio_request(BT_GPIO_WAKE_UP_HOST, "bt_wake"); if (rc) { printk("%s:failed to request RAHO_BT_WAKE_UP_HOST\n",__FUNCTION__); } IOMUX_BT_GPIO_WAKE_UP_HOST(); gpio_pull_updown(BT_GPIO_WAKE_UP_HOST,GPIOPullUp); rc = request_irq(gpio_to_irq(BT_GPIO_WAKE_UP_HOST),bcm4329_wake_host_irq,IRQF_TRIGGER_FALLING,NULL,NULL); if(rc) { printk("%s:failed to request RAHO_BT_WAKE_UP_HOST irq\n",__FUNCTION__); gpio_free(BT_GPIO_WAKE_UP_HOST); } enable_irq_wake(gpio_to_irq(BT_GPIO_WAKE_UP_HOST)); // so RAHO_BT_WAKE_UP_HOST can wake up system printk(KERN_INFO "bcm4329 module has been initialized,rc=0x%x\n",rc); #endif return rc; }