uboot/drivers/usb/host/usb_bootdev.c
<<
>>
Prefs
   1// SPDX-License-Identifier: GPL-2.0+
   2/*
   3 * Bootdevice for USB
   4 *
   5 * Copyright 2021 Google LLC
   6 * Written by Simon Glass <sjg@chromium.org>
   7 */
   8
   9#include <common.h>
  10#include <bootdev.h>
  11#include <dm.h>
  12#include <usb.h>
  13
  14static int usb_bootdev_bind(struct udevice *dev)
  15{
  16        struct bootdev_uc_plat *ucp = dev_get_uclass_plat(dev);
  17
  18        ucp->prio = BOOTDEVP_5_SCAN_SLOW;
  19
  20        return 0;
  21}
  22
  23static int usb_bootdev_hunt(struct bootdev_hunter *info, bool show)
  24{
  25        if (usb_started)
  26                return 0;
  27
  28        return usb_init();
  29}
  30
  31struct bootdev_ops usb_bootdev_ops = {
  32};
  33
  34static const struct udevice_id usb_bootdev_ids[] = {
  35        { .compatible = "u-boot,bootdev-usb" },
  36        { }
  37};
  38
  39U_BOOT_DRIVER(usb_bootdev) = {
  40        .name           = "usb_bootdev",
  41        .id             = UCLASS_BOOTDEV,
  42        .ops            = &usb_bootdev_ops,
  43        .bind           = usb_bootdev_bind,
  44        .of_match       = usb_bootdev_ids,
  45};
  46
  47BOOTDEV_HUNTER(usb_bootdev_hunter) = {
  48        .prio           = BOOTDEVP_5_SCAN_SLOW,
  49        .uclass         = UCLASS_USB,
  50        .hunt           = usb_bootdev_hunt,
  51        .drv            = DM_DRIVER_REF(usb_bootdev),
  52};
  53