Implement functionality to check the current boot device (a device where the SoC ROM code is loading the bootloaders from). The boot device order can be changed using the SW1 DIP switch on the E850-96 board (which controls XOM SoC lines), as stated in [1]. The boot device information is requested from EL3 software using the corresponding SMC call, which in turn reads it from iRAM memory, which was written by the ROM code. New routines decode that data and allow the user to check the current boot device, boot order, etc. That API can be used further to implement different code flows depending on the current boot device, e.g.: - on eMMC boot: obtain the firmware binaries from eMMC - on USB boot: download the firmware over USB instead No functional change; this patch only adds new functionality but it's not used yet. [1] doc/board/samsung/e850-96.rst Signed-off-by: Sam Protsenko <semen.protsenko@linaro.org> Signed-off-by: Minkyu Kang <mk7.kang@samsung.com>
24 lines
399 B
C
24 lines
399 B
C
/* SPDX-License-Identifier: GPL-2.0+ */
|
|
/*
|
|
* Copyright (c) 2025 Linaro Ltd.
|
|
* Sam Protsenko <semen.protsenko@linaro.org>
|
|
*/
|
|
|
|
#ifndef __E850_96_BOOTDEV_H
|
|
#define __E850_96_BOOTDEV_H
|
|
|
|
#include <stdbool.h>
|
|
|
|
enum bootdev {
|
|
BOOTDEV_ERROR,
|
|
BOOTDEV_SD,
|
|
BOOTDEV_EMMC,
|
|
BOOTDEV_USB,
|
|
BOOTDEV_UFS,
|
|
};
|
|
|
|
enum bootdev bootdev_get_current(void);
|
|
bool bootdev_is_usb(void);
|
|
|
|
#endif /* __E850_96_BOOTDEV_H */
|