On 04:08-20130801, Bill Huang wrote: > On Wed, 2013-07-31 at 19:57 +0800, Nishanth Menon wrote: > > > > If you notice the reference code I send, atleast on TWL6035/37 variants > > of Palmas, USB IRQ unmask is mandatory for power on with USB cable - > > example usage scenario: extremely low battery, device powered off, plug > > in usb cable to restart charging - you'd like to initiate charging logic > > in bootloader, but that wont work if the device does not do OFF-ON > > transition with usb cable plugged in for vbus. > > > Why do we need to add Palmas USB_IRQ unmask logic in shutdown? Does that > mean for all platform using Palmas has to unmask USB IRQ (including > those do not power vbus through Palmas)? Can't we just have a simple > shutdown function but have the VBus programming been done in USB driver > or maybe platform driver since it is platform specific control? we dont have a irq cleanup, irq handling is done in palmas-mfd. Further, Why would USB driver care about vbus supply needs in complete power off - it is the job of palmas driver? Further, palmas-mfd shutdown handler(currently missing) if probably cleansup things: mfd_remove_devices(palmas->dev); palmas_irq_exit(palmas); shutdown sequence becomes complicated further esp if things are cleanedup in shutdown (Dummy patch[1]). All I am saying is this: shutdown should allow powerup functionality to work as well, how we do that is upto us - I personally found it a little easier to keep the IRQ unmask in shutdown easier to deal with, but other options might be possible as well. [1] diff --git a/drivers/mfd/palmas.c b/drivers/mfd/palmas.c index e4d1c70..6998863 100644 --- a/drivers/mfd/palmas.c +++ b/drivers/mfd/palmas.c @@ -447,6 +447,11 @@ static int palmas_i2c_remove(struct i2c_client *i2c) return 0; } +static void palmas_i2c_shutdown(struct i2c_client *i2c) +{ + palmas_i2c_remove(i2c); +} + static const struct i2c_device_id palmas_i2c_id[] = { { "palmas", }, { "twl6035", }, @@ -464,6 +469,7 @@ static struct i2c_driver palmas_i2c_driver = { }, .probe = palmas_i2c_probe, .remove = palmas_i2c_remove, + .shutdown = palmas_i2c_shutdown, .id_table = palmas_i2c_id, }; -- Regards, Nishanth Menon -- To unsubscribe from this list: send the line "unsubscribe linux-doc" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html