blob: ede452ba3061df7d111aa59594016f3b8d6e552d [file] [log] [blame]
Simon Glass15d320d2025-01-15 18:27:07 -07001// SPDX-License-Identifier: GPL-2.0
2/*
3 * Verified Boot for Embedded (VBE) common functions
4 *
5 * Copyright 2024 Google LLC
6 * Written by Simon Glass <sjg@chromium.org>
7 */
8
9#include <part.h>
10#include <vsprintf.h>
11#include "vbe_common.h"
12
13int vbe_get_blk(const char *storage, struct udevice **blkp)
14{
15 struct blk_desc *desc;
16 char devname[16];
17 const char *end;
18 int devnum;
19
20 /* First figure out the block device */
21 log_debug("storage=%s\n", storage);
22 devnum = trailing_strtoln_end(storage, NULL, &end);
23 if (devnum == -1)
24 return log_msg_ret("num", -ENODEV);
25 if (end - storage >= sizeof(devname))
26 return log_msg_ret("end", -E2BIG);
27 strlcpy(devname, storage, end - storage + 1);
28 log_debug("dev=%s, %x\n", devname, devnum);
29
30 desc = blk_get_dev(devname, devnum);
31 if (!desc)
32 return log_msg_ret("get", -ENXIO);
33 *blkp = desc->bdev;
34
35 return 0;
36}