]> Git Repo - J-u-boot.git/blame - drivers/nvme/nvme-uclass.c
Merge tag 'u-boot-imx-master-20250127' of https://gitlab.denx.de/u-boot/custodians...
[J-u-boot.git] / drivers / nvme / nvme-uclass.c
CommitLineData
83d290c5 1// SPDX-License-Identifier: GPL-2.0+
982388ea
ZZ
2/*
3 * Copyright (C) 2017 NXP Semiconductors
4 * Copyright (C) 2017 Bin Meng <[email protected]>
982388ea
ZZ
5 */
6
b953ec2b
PD
7#define LOG_CATEGORY UCLASS_NVME
8
758c706c 9#include <bootdev.h>
982388ea 10#include <dm.h>
758c706c
SG
11#include <init.h>
12#include <log.h>
13#include <nvme.h>
14
15static int nvme_bootdev_bind(struct udevice *dev)
16{
17 struct bootdev_uc_plat *ucp = dev_get_uclass_plat(dev);
18
eacc2611 19 ucp->prio = BOOTDEVP_4_SCAN_FAST;
758c706c
SG
20
21 return 0;
22}
23
24static int nvme_bootdev_hunt(struct bootdev_hunter *info, bool show)
25{
26 int ret;
27
28 /* init PCI first since this is often used to provide NVMe */
29 if (IS_ENABLED(CONFIG_PCI)) {
30 ret = pci_init();
31 if (ret)
32 log_warning("Failed to init PCI (%dE)\n", ret);
33 }
34
35 ret = nvme_scan_namespace();
36 if (ret)
37 return log_msg_ret("scan", ret);
38
39 return 0;
40}
982388ea
ZZ
41
42UCLASS_DRIVER(nvme) = {
43 .name = "nvme",
44 .id = UCLASS_NVME,
982388ea 45};
758c706c
SG
46
47struct bootdev_ops nvme_bootdev_ops = {
48};
49
50static const struct udevice_id nvme_bootdev_ids[] = {
51 { .compatible = "u-boot,bootdev-nvme" },
52 { }
53};
54
55U_BOOT_DRIVER(nvme_bootdev) = {
56 .name = "nvme_bootdev",
57 .id = UCLASS_BOOTDEV,
58 .ops = &nvme_bootdev_ops,
59 .bind = nvme_bootdev_bind,
60 .of_match = nvme_bootdev_ids,
61};
62
63BOOTDEV_HUNTER(nvme_bootdev_hunter) = {
eacc2611 64 .prio = BOOTDEVP_4_SCAN_FAST,
758c706c
SG
65 .uclass = UCLASS_NVME,
66 .hunt = nvme_bootdev_hunt,
67 .drv = DM_DRIVER_REF(nvme_bootdev),
68};
This page took 0.195077 seconds and 4 git commands to generate.