"Das U-Boot" Source Tree
at master 69 lines 1.5 kB view raw
1// SPDX-License-Identifier: GPL-2.0+ 2/* 3 * Bootmethod for sandbox testing 4 * 5 * Copyright 2021 Google LLC 6 * Written by Simon Glass <sjg@chromium.org> 7 */ 8 9#define LOG_CATEGORY UCLASS_BOOTSTD 10 11#include <bootdev.h> 12#include <bootflow.h> 13#include <bootmeth.h> 14#include <dm.h> 15 16static int sandbox_check(struct udevice *dev, struct bootflow_iter *iter) 17{ 18 return 0; 19} 20 21static int sandbox_read_bootflow(struct udevice *dev, struct bootflow *bflow) 22{ 23 /* pretend we are ready */ 24 bflow->state = BOOTFLOWST_READY; 25 26 return 0; 27} 28 29static int sandbox_read_file(struct udevice *dev, struct bootflow *bflow, 30 const char *file_path, ulong addr, 31 enum bootflow_img_t type, ulong *sizep) 32{ 33 return -ENOSYS; 34} 35 36static int sandbox_boot(struct udevice *dev, struct bootflow *bflow) 37{ 38 /* always fail: see bootflow_iter_disable() */ 39 return -ENOTSUPP; 40} 41 42static int sandbox_bootmeth_bind(struct udevice *dev) 43{ 44 struct bootmeth_uc_plat *plat = dev_get_uclass_plat(dev); 45 46 plat->desc = "Sandbox boot for testing"; 47 48 return 0; 49} 50 51static struct bootmeth_ops sandbox_bootmeth_ops = { 52 .check = sandbox_check, 53 .read_bootflow = sandbox_read_bootflow, 54 .read_file = sandbox_read_file, 55 .boot = sandbox_boot, 56}; 57 58static const struct udevice_id sandbox_bootmeth_ids[] = { 59 { .compatible = "u-boot,sandbox-bootmeth" }, 60 { } 61}; 62 63U_BOOT_DRIVER(bootmeth_sandbox) = { 64 .name = "bootmeth_sandbox", 65 .id = UCLASS_BOOTMETH, 66 .of_match = sandbox_bootmeth_ids, 67 .ops = &sandbox_bootmeth_ops, 68 .bind = sandbox_bootmeth_bind, 69};