On Wed, 23 Mar 2011 00:57:35 +0800 Kristen Carlson Accardi <[email protected]> wrote:
> On Mon, 21 Mar 2011 08:53:16 +0800 > Feng Tang <[email protected]> wrote: > > > Hi Kristen, > > > > On Sat, 19 Mar 2011 05:04:38 +0800 > > Kristen Carlson Accardi <[email protected]> wrote: > > > > > On Thu, 17 Mar 2011 14:32:42 +0800 > > > Feng Tang <[email protected]> wrote: > > > > > > > Hi Kristen, > > > > > > > > For the logical part about where should we add runtime_put/get > > > > hook, could you try the following patch? > > > > > > > <snip> transfer_list); > > > > @@ -670,6 +672,11 @@ static int dw_spi_transfer(struct > > > > spi_device *spi, struct spi_message *msg) return -ESHUTDOWN; > > > > } > > > > > > > > + spin_unlock_irqrestore(&dws->lock, flags); > > > > + /* make sure the HW is up */ > > > > + pm_runtime_get_sync(dws->parent_dev); > > > > + spin_lock_irqsave(&dws->lock, flags); > > > > + > > > > msg->actual_length = 0; > > > > msg->status = -EINPROGRESS; > > > > msg->state = START_STATE; > > > > > > > > use pm_runtime_get_sync will make sure the driver/HW is up > > > > and ready for the spi_message. > > > > > > Hi Feng, > > > I think that dw_spi_transfer can be called from interrupt context, > > > and my understanding is the pm_runtime_get_sync may sleep (because > > > it has to schedule a resume). I am thinking we'll have to > > > manually call pm_runtime_get_noresume and manually resume if we > > > are shutdown. > > > > Good point. But my understanding is, for a spi device (like > > max3110), if the dw_spi_transfer is called in interrupt context, > > then the device itself should be in runtime running mode. And the > > dw_spi controller as its parent, shouldn't be in runtime suspended > > at this time, and pm_runtime_get_sync() will simple return without > > going to sleep, and is safe to be called. > > Parents can be suspended independently of children. Yes, it could. But we better consider the case here, and can't simply set parent>dev->power.ignore_children to 1. The general system suspend/resume(S3/S4) need to consider the children/parent consideration, and I think it applies to runtime PM too. Thanks, Feng _______________________________________________ MeeGo-kernel mailing list [email protected] http://lists.meego.com/listinfo/meego-kernel
