diff options
| author | Mark Kettenis <[email protected]> | 2022-01-22 20:38:16 +0100 |
|---|---|---|
| committer | Tom Rini <[email protected]> | 2022-02-10 16:44:23 -0500 |
| commit | ca99a17e02ab4f99b1455be349858d5a7aa7553c (patch) | |
| tree | d4e31a46d0642abcf85603c3bd818122181dd4ef | |
| parent | 19d9dad39c28a6e932ee2ec8361f42211613761d (diff) | |
nvme: Add shutdown function
Add a function to disable the NVMe controller. This will be used
to let the driver for the NVMe storage integrated on Apple SoCs
shutdown the NVMe controller such we can shutdown the NVMe
IOP controller in a clean way afterwards before handing control
to the OS.
Signed-off-by: Mark Kettenis <[email protected]>
Reviewed-by: Simon Glass <[email protected]>
Tested on: Macbook Air M1
Tested-by: Simon Glass <[email protected]>
| -rw-r--r-- | drivers/nvme/nvme.c | 7 | ||||
| -rw-r--r-- | drivers/nvme/nvme.h | 12 |
2 files changed, 19 insertions, 0 deletions
diff --git a/drivers/nvme/nvme.c b/drivers/nvme/nvme.c index e7cbf39c96a..1d56517e996 100644 --- a/drivers/nvme/nvme.c +++ b/drivers/nvme/nvme.c @@ -896,3 +896,10 @@ free_queue: free_nvme: return ret; } + +int nvme_shutdown(struct udevice *udev) +{ + struct nvme_dev *ndev = dev_get_priv(udev); + + return nvme_disable_ctrl(ndev); +} diff --git a/drivers/nvme/nvme.h b/drivers/nvme/nvme.h index bc6b79f8dd1..bc1d612dde4 100644 --- a/drivers/nvme/nvme.h +++ b/drivers/nvme/nvme.h @@ -691,6 +691,18 @@ struct nvme_ops { void (*complete_cmd)(struct nvme_queue *nvmeq, struct nvme_command *cmd); }; +/** + * nvme_init() - Initialize NVM Express device + * @udev: The NVM Express device + * Return: 0 if OK, -ve on error + */ int nvme_init(struct udevice *udev); +/** + * nvme_shutdown() - Shutdown NVM Express device + * @udev: The NVM Express device + * Return: 0 if OK, -ve on error + */ +int nvme_shutdown(struct udevice *udev); + #endif /* __DRIVER_NVME_H__ */ |
