On Sat, Dec 18, 2010 at 03:59:50PM +0100, Rafael J. Wysocki wrote: > Second, the situation at hand is that the bus type implements dev_pm_ops, > but the driver doesn't. Now, pm_generic_suspend() is called with a struct > device pointer, so it would have to go back to dev->bus, find the > ->legacy_suspend() callback (as opposed to ->suspend(), which also is legacy, > but is called by the PM core instead). May I call that confusing? Well, the trouble is that the whole situation is already pretty confusing for what should be very simple buses, each one needs to write a bunch of not really bus specific code in order to get basic behaviour which allows the drivers to make use of runtime PM, requiring more thought and care per bus than I'd expect given that they've nothing really to contribute. This leads to the sort of random variations between buses that Rabin is reporting, and means that updates keep having to get done in multiple different places. The overall effect is that from the point of view of trying to use runtime PM in drivers which work with these simple buses everything feels like it's much harder work than it should be. Moving all the decision making out of the buses and into the PM core seems like a win here. -- To unsubscribe from this list: send the line "unsubscribe linux-i2c" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html