Re: [PATCH v5 6/7] scsi: ufs: rockchip: initial support for UFS

Ulf Hansson
2024-11-12T14:55:14Z

[...]

> +
> +#ifdef CONFIG_PM_SLEEP
> +static int ufs_rockchip_system_suspend(struct device *dev)
> +{
> + struct ufs_hba *hba = dev_get_drvdata(dev);
> + struct ufs_rockchip_host *host = ufshcd_get_variant(hba);
> + int err;
> +
> + if (hba->spm_lvl < UFS_PM_LVL_5)
> + device_set_awake_path(dev);
> +
> + err = ufshcd_system_suspend(dev);
> + if (err) {
> + dev_err(hba->dev, "system susped failed %d\n", err);
> + return err;
> + }
> +
> + clk_disable_unprepare(host->ref_out_clk);

I am not sure that the host is always runtime resumed at this point,
or is there? If not, we need to call pm_runtime_get_sync() somewhere
here and a corresponding pm_runtime_put* in the ->suspend() callback.

Of course, if you could make use of pm_runtime_force_suspend|resume()
that would be even better, but then probably need some additional
re-work in the ufs-core layer first, to make this work, I think.

[...]

Kind regards
Uffe