summaryrefslogtreecommitdiff
path: root/lib/vbexport/boot_device.h
diff options
context:
space:
mode:
Diffstat (limited to 'lib/vbexport/boot_device.h')
-rw-r--r--lib/vbexport/boot_device.h75
1 files changed, 75 insertions, 0 deletions
diff --git a/lib/vbexport/boot_device.h b/lib/vbexport/boot_device.h
new file mode 100644
index 00000000000..f32fe1a6ec7
--- /dev/null
+++ b/lib/vbexport/boot_device.h
@@ -0,0 +1,75 @@
+/*
+ * Copyright (c) 2011 The Chromium OS Authors. All rights reserved.
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ *
+ * Alternatively, this software may be distributed under the terms of the
+ * GNU General Public License ("GPL") version 2 as published by the Free
+ * Software Foundation.
+ */
+
+/*
+ * This is an interface that we can boot from. It provides a function to start
+ * up the peripheral and also one to scan for available devices attached to
+ * this peripheral.
+ */
+struct boot_interface {
+ const char *name;
+ int type; /* IF_TYPE... from part.h */
+
+ /**
+ * Start the peripheral interface, so we are ready to scan for
+ * devices. This function can return 0 if it knows that there is
+ * no need to scan. If it returns 1 or more, then a scan will
+ * started.
+ *
+ * @param flags Flags for this disk: VB_DISK_FLAG_...
+ * @return 0 if no devices, >=1 if we have devices, -1 on error
+ */
+ int (*start)(uint32_t flags);
+
+ /**
+ * Scan this peripheral for available devices
+ *
+ * @param desc Array to put available devices into
+ * @param max_devs Maximum number of devices to return
+ * @param flags Flags for this disk: VB_DISK_FLAG_...
+ * @return number of devices found, or -1 on error
+ */
+ int (*scan)(block_dev_desc_t **desc, int max_devs, uint32_t flags);
+};
+
+/**
+ * Register a new boot interface.
+ *
+ * @param iface The interface to register
+ * @return 0 if ok, -1 on error
+ */
+int boot_device_register_interface(struct boot_interface *iface);
+
+/**
+ * Checks if a given device matches the provided disk_flags.
+ *
+ * @param dev Device to check
+ * @param disk_flags Disk flags which must be present for this device
+ * @param flags Returns calculated flags for this device
+ * @return 1 if the device matches, 0 if not
+ */
+int boot_device_matches(const block_dev_desc_t *dev, uint32_t disk_flags,
+ uint32_t *flags);
+
+/**
+ * Probe functions for available interfaces
+ *
+ * @return 0 if ok, -1 on error
+ */
+int boot_device_usb_probe(void);
+int boot_device_mmc_probe(void);
+int boot_device_ide_probe(void);
+
+/**
+ * Register all the available boot devices.
+ *
+ * @return 0 if ok, -1 on error
+ */
+int boot_device_init(void);