USB: OTG: Use work_queue in set_vbus for TWL6030 transciever
authorMoiz Sonasath <m-sonasath@ti.com>
Mon, 27 Jun 2011 15:01:01 +0000 (10:01 -0500)
committerGreg Kroah-Hartman <gregkh@suse.de>
Fri, 1 Jul 2011 21:45:43 +0000 (14:45 -0700)
commit5bf54506b036412e05e6ea0f000d627d775e7afc
treee53b4a3129ea59396f513a647b2e0d7e7358f82c
parent28f75f4db1e5ea1366375b2a6c40d66659e0e7ec
USB: OTG: Use work_queue in set_vbus for TWL6030 transciever

With this commit: cccad6d4b103e53fb3d1fc1467f654ecb572d047
usb: otg: notifier: switch to atomic notifier

Following dumps are observed on attach/detach for MUSB HOST
mode and on a detach for MUSB Device mode.

BUG: sleeping function called from invalid context at kernel/mutex.c:85
where, the source is:
twl6030_usb_irq
->atomic_notifier_call_chain
 ->musb_otg_notifications
  ->twl6030_set_vbus
   ->twl_i2c_write_u8
    ->mutex_lock

This patch moves the i2c writes in set_vbus function to a
work-queue thereby avoiding I2C writes in atomic context.

Tested HOST and Device mode functionality on OMAP4460

Signed-off-by: Moiz Sonasath <m-sonasath@ti.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
drivers/usb/otg/twl6030-usb.c