summaryrefslogtreecommitdiff
path: root/arch/mips/mach-octeon/include/mach
diff options
context:
space:
mode:
authorAaron Williams <awilliams@marvell.com>2020-08-20 08:22:03 +0300
committerDaniel Schwierzeck <daniel.schwierzeck@gmail.com>2020-10-07 21:25:58 +0300
commite602dd5238454c4b6c5b01dc83fbfd802de52095 (patch)
tree41693c8bff8fbd2499b28201f3fdca809b24391c /arch/mips/mach-octeon/include/mach
parent4b43e7e210ae95c6841751ae42a5a45d5c03212b (diff)
downloadu-boot-e602dd5238454c4b6c5b01dc83fbfd802de52095.tar.xz
mips: octeon: Add bootoctlinux command
Octeon needs a platform specific cmd to boot the Linux kernel, as specific parameters need to be passed and special handling for the multiple cores (SMP) is needed. Co-developed-by: Stefan Roese <sr@denx.de> Signed-off-by: Aaron Williams <awilliams@marvell.com> Signed-off-by: Stefan Roese <sr@denx.de> [use gd->ram_base instead of gd->bd->bi_memstart] Signed-off-by: Daniel Schwierzeck <daniel.schwierzeck@gmail.com>
Diffstat (limited to 'arch/mips/mach-octeon/include/mach')
-rw-r--r--arch/mips/mach-octeon/include/mach/bootoct_cmd.h54
1 files changed, 54 insertions, 0 deletions
diff --git a/arch/mips/mach-octeon/include/mach/bootoct_cmd.h b/arch/mips/mach-octeon/include/mach/bootoct_cmd.h
new file mode 100644
index 0000000000..657698ba54
--- /dev/null
+++ b/arch/mips/mach-octeon/include/mach/bootoct_cmd.h
@@ -0,0 +1,54 @@
+/* SPDX-License-Identifier: GPL-2.0 */
+/*
+ * Copyright (C) 2020 Marvell International Ltd.
+ */
+
+#ifndef __BOOTOCT_CMD_H__
+#define __BOOTOCT_CMD_H__
+
+#include "cvmx-coremask.h"
+
+enum octeon_boot_cmd_type {
+ BOOTOCT,
+ BOOTOCTLINUX,
+ BOOTOCTELF
+};
+
+/** Structure to contain results of command line argument parsing */
+struct octeon_boot_args {
+ struct cvmx_coremask coremask; /** Parsed coremask */
+ int num_cores[CVMX_MAX_NODES]; /** number of cores */
+ int num_skipped[CVMX_MAX_NODES];/** number of skipped cores */
+ const char *app_name; /** Application name */
+ const char *named_block; /** Named block to load Linux into */
+ u32 stack_size; /** stack size */
+ u32 heap_size; /** heap size */
+ u32 boot_flags; /** boot flags */
+ int node_mask; /** Node mask to use */
+ int console_uart; /** serial console number */
+ bool forceboot; /** force booting if core 0 not set */
+ bool coremask_set; /** set if coremask was set */
+ bool num_cores_set; /** Set if num_cores was set */
+ bool num_skipped_set; /** Set if num_skipped was set */
+ /** Set if endbootargs parameter was passed. */
+ bool endbootargs;
+};
+
+/**
+ * Parse command line arguments
+ *
+ * @param argc number of arguments
+ * @param[in] argv array of argument strings
+ * @param cmd command type
+ * @param[out] boot_args parsed values
+ *
+ * @return number of arguments parsed
+ */
+int octeon_parse_bootopts(int argc, char *const argv[],
+ enum octeon_boot_cmd_type cmd,
+ struct octeon_boot_args *boot_args);
+
+void nmi_bootvector(void);
+extern u64 nmi_handler_para[];
+
+#endif /* __BOOTOCT_CMD_H__ */