Ejemplo n.º 1
0
static int scsi_dev_type_resume(struct device *dev, int (*cb)(struct device *))
{
    int err = 0;

    if (cb)
        err = cb(dev);
    scsi_device_resume(to_scsi_device(dev));
    dev_dbg(dev, "scsi resume: %d\n", err);
    return err;
}
Ejemplo n.º 2
0
static int scsi_dev_type_resume(struct device *dev)
{
	struct device_driver *drv;
	int err = 0;

	drv = dev->driver;
	if (drv && drv->resume)
		err = drv->resume(dev);
	scsi_device_resume(to_scsi_device(dev));
	dev_dbg(dev, "scsi resume: %d\n", err);
	return err;
}
Ejemplo n.º 3
0
static int scsi_dev_type_suspend(struct device *dev, int (*cb)(struct device *))
{
    int err;

    err = scsi_device_quiesce(to_scsi_device(dev));
    if (err == 0) {
        if (cb) {
            err = cb(dev);
            if (err)
                scsi_device_resume(to_scsi_device(dev));
        }
    }
    dev_dbg(dev, "scsi suspend: %d\n", err);
    return err;
}
Ejemplo n.º 4
0
static int scsi_dev_type_resume(struct device *dev,
		int (*cb)(struct device *, const struct dev_pm_ops *))
{
	const struct dev_pm_ops *pm = dev->driver ? dev->driver->pm : NULL;
	int err = 0;

	err = cb(dev, pm);
	scsi_device_resume(to_scsi_device(dev));
	dev_dbg(dev, "scsi resume: %d\n", err);

	if (err == 0) {
		pm_runtime_disable(dev);
		pm_runtime_set_active(dev);
		pm_runtime_enable(dev);
	}

	return err;
}
Ejemplo n.º 5
0
static int scsi_dev_type_suspend(struct device *dev,
		int (*cb)(struct device *, const struct dev_pm_ops *))
{
	const struct dev_pm_ops *pm = dev->driver ? dev->driver->pm : NULL;
	int err;

	/* flush pending in-flight resume operations, suspend is synchronous */
	async_synchronize_full_domain(&scsi_sd_pm_domain);

	err = scsi_device_quiesce(to_scsi_device(dev));
	if (err == 0) {
		err = cb(dev, pm);
		if (err)
			scsi_device_resume(to_scsi_device(dev));
	}
	dev_dbg(dev, "scsi suspend: %d\n", err);
	return err;
}