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 <kettenis@openbsd.org>
Reviewed-by: Simon Glass <sjg@chromium.org>
Tested on: Macbook Air M1
Tested-by: Simon Glass <sjg@chromium.org>
This commit is contained in:
Mark Kettenis 2022-01-22 20:38:16 +01:00 committed by Tom Rini
parent 19d9dad39c
commit ca99a17e02
2 changed files with 19 additions and 0 deletions

View File

@ -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);
}

View File

@ -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__ */