lkml.org 
[lkml]   [2014]   [Mar]   [18]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[char-misc-next 07/13] mei: add function to check write queues
    Date
    The driver needs to check whether the write
    queue idle before entering power gating

    Signed-off-by: Tomas Winkler <tomas.winkler@intel.com>
    Signed-off-by: Alexander Usyskin <alexander.usyskin@intel.com>
    ---
    drivers/misc/mei/init.c | 21 +++++++++++++++++++++
    drivers/misc/mei/mei_dev.h | 2 ++
    2 files changed, 23 insertions(+)

    diff --git a/drivers/misc/mei/init.c b/drivers/misc/mei/init.c
    index 4b1eb37..abc5ea0 100644
    --- a/drivers/misc/mei/init.c
    +++ b/drivers/misc/mei/init.c
    @@ -303,7 +303,28 @@ void mei_stop(struct mei_device *dev)
    }
    EXPORT_SYMBOL_GPL(mei_stop);

    +/**
    + * mei_write_is_idle - check if the write queues are idle
    + *
    + * @dev: the device structure
    + *
    + * returns true of there is no pending write
    + */
    +bool mei_write_is_idle(struct mei_device *dev)
    +{
    + bool idle = (dev->dev_state == MEI_DEV_ENABLED &&
    + list_empty(&dev->ctrl_wr_list.list) &&
    + list_empty(&dev->write_list.list));

    + dev_dbg(&dev->pdev->dev, "write pg: is idle[%d] state=%s ctrl=%d write=%d\n",
    + idle,
    + mei_dev_state_str(dev->dev_state),
    + list_empty(&dev->ctrl_wr_list.list),
    + list_empty(&dev->write_list.list));
    +
    + return idle;
    +}
    +EXPORT_SYMBOL_GPL(mei_write_is_idle);

    void mei_device_init(struct mei_device *dev)
    {
    diff --git a/drivers/misc/mei/mei_dev.h b/drivers/misc/mei/mei_dev.h
    index bec6ade..fe76e5b 100644
    --- a/drivers/misc/mei/mei_dev.h
    +++ b/drivers/misc/mei/mei_dev.h
    @@ -680,6 +680,8 @@ static inline int mei_count_full_read_slots(struct mei_device *dev)

    bool mei_hbuf_acquire(struct mei_device *dev);

    +bool mei_write_is_idle(struct mei_device *dev);
    +
    #if IS_ENABLED(CONFIG_DEBUG_FS)
    int mei_dbgfs_register(struct mei_device *dev, const char *name);
    void mei_dbgfs_deregister(struct mei_device *dev);
    --
    1.8.5.3


    \
     
     \ /
      Last update: 2014-03-18 23:01    [W:4.492 / U:0.544 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site