Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit a532bbed authored by Tomas Winkler's avatar Tomas Winkler Committed by Greg Kroah-Hartman
Browse files

mei: add function to check write queues



The driver needs to check whether the write
queue idle before entering power gating

Signed-off-by: default avatarTomas Winkler <tomas.winkler@intel.com>
Signed-off-by: default avatarAlexander Usyskin <alexander.usyskin@intel.com>
Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
parent ba9cdd0e
Loading
Loading
Loading
Loading
+21 −0
Original line number Original line Diff line number Diff line
@@ -303,7 +303,28 @@ void mei_stop(struct mei_device *dev)
}
}
EXPORT_SYMBOL_GPL(mei_stop);
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)
void mei_device_init(struct mei_device *dev)
{
{
+2 −0
Original line number Original line Diff line number Diff line
@@ -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_hbuf_acquire(struct mei_device *dev);


bool mei_write_is_idle(struct mei_device *dev);

#if IS_ENABLED(CONFIG_DEBUG_FS)
#if IS_ENABLED(CONFIG_DEBUG_FS)
int mei_dbgfs_register(struct mei_device *dev, const char *name);
int mei_dbgfs_register(struct mei_device *dev, const char *name);
void mei_dbgfs_deregister(struct mei_device *dev);
void mei_dbgfs_deregister(struct mei_device *dev);