.. | .. |
---|
175 | 175 | rfkill->irq_req = 1; |
---|
176 | 176 | LOG("** disable irq\n"); |
---|
177 | 177 | disable_irq(irq->irq); |
---|
178 | | - ret = enable_irq_wake(irq->irq); |
---|
179 | | - if (ret) |
---|
180 | | - goto fail3; |
---|
| 178 | + /*ret = disable_irq_wake(irq->irq);init irq wake is disabled,no need to disable*/ |
---|
181 | 179 | } |
---|
182 | 180 | |
---|
183 | 181 | return ret; |
---|
184 | 182 | |
---|
185 | | -fail3: |
---|
186 | | - free_irq(irq->irq, rfkill); |
---|
187 | 183 | fail2: |
---|
188 | 184 | gpio_free(irq->gpio.io); |
---|
189 | 185 | fail1: |
---|
.. | .. |
---|
292 | 288 | |
---|
293 | 289 | toggle = rfkill->pdata->power_toggle; |
---|
294 | 290 | |
---|
295 | | - if (toggle) { |
---|
296 | | - if (rfkill_get_wifi_power_state(&wifi_power)) { |
---|
297 | | - LOG("%s: cannot get wifi power state!\n", __func__); |
---|
298 | | - return -1; |
---|
299 | | - } |
---|
300 | | - } |
---|
301 | 291 | |
---|
302 | 292 | DBG("%s: toggle = %s\n", __func__, toggle ? "true" : "false"); |
---|
303 | 293 | |
---|
.. | .. |
---|
323 | 313 | gpio_direction_output(poweron->io, |
---|
324 | 314 | poweron->enable); |
---|
325 | 315 | msleep(20); |
---|
326 | | - if (gpio_is_valid(wake_host->io)) |
---|
327 | | - gpio_direction_input(wake_host->io); |
---|
328 | 316 | } |
---|
329 | 317 | } |
---|
330 | 318 | |
---|
.. | .. |
---|
335 | 323 | msleep(20); |
---|
336 | 324 | gpio_direction_output(reset->io, reset->enable); |
---|
337 | 325 | } |
---|
| 326 | + } |
---|
| 327 | + |
---|
| 328 | + if (gpio_is_valid(wake_host->io)) { |
---|
| 329 | + LOG("%s: set bt wake_host input!\n", __func__); |
---|
| 330 | + gpio_direction_input(wake_host->io); |
---|
338 | 331 | } |
---|
339 | 332 | |
---|
340 | 333 | if (pinctrl && gpio_is_valid(rts->io)) { |
---|
.. | .. |
---|
369 | 362 | } |
---|
370 | 363 | } |
---|
371 | 364 | if (toggle) { |
---|
| 365 | + if (rfkill_get_wifi_power_state(&wifi_power)) { |
---|
| 366 | + LOG("%s: cannot get wifi power state!\n", __func__); |
---|
| 367 | + return -EPERM; |
---|
| 368 | + } |
---|
372 | 369 | if (!wifi_power) { |
---|
373 | 370 | LOG("%s: bt will set vbat to low\n", __func__); |
---|
374 | 371 | rfkill_set_wifi_bt_power(0); |
---|
.. | .. |
---|
410 | 407 | if (gpio_is_valid(wake_host_irq->gpio.io) && bt_power_state) { |
---|
411 | 408 | DBG("enable irq for bt wakeup host\n"); |
---|
412 | 409 | enable_irq(wake_host_irq->irq); |
---|
| 410 | + enable_irq_wake(wake_host_irq->irq); |
---|
413 | 411 | } |
---|
414 | 412 | |
---|
415 | 413 | #ifdef CONFIG_RFKILL_RESET |
---|
.. | .. |
---|
439 | 437 | if (gpio_is_valid(wake_host_irq->gpio.io) && bt_power_state) { |
---|
440 | 438 | LOG("** disable irq\n"); |
---|
441 | 439 | disable_irq(wake_host_irq->irq); |
---|
| 440 | + disable_irq_wake(wake_host_irq->irq); |
---|
442 | 441 | } |
---|
443 | 442 | |
---|
444 | 443 | if (rfkill->pdata->pinctrl && gpio_is_valid(rts->io)) { |
---|