162306a36Sopenharmony_ci/* SPDX-License-Identifier: GPL-2.0-or-later */
262306a36Sopenharmony_ci/*
362306a36Sopenharmony_ci * (C) Copyright 2004, 2005 Cavium Networks
462306a36Sopenharmony_ci */
562306a36Sopenharmony_ci
662306a36Sopenharmony_ci#ifndef __OCTEON_BOOT_H__
762306a36Sopenharmony_ci#define __OCTEON_BOOT_H__
862306a36Sopenharmony_ci
962306a36Sopenharmony_ci#include <linux/types.h>
1062306a36Sopenharmony_ci
1162306a36Sopenharmony_cistruct boot_init_vector {
1262306a36Sopenharmony_ci	/* First stage address - in ram instead of flash */
1362306a36Sopenharmony_ci	uint64_t code_addr;
1462306a36Sopenharmony_ci	/* Setup code for application, NOT application entry point */
1562306a36Sopenharmony_ci	uint32_t app_start_func_addr;
1662306a36Sopenharmony_ci	/* k0 is used for global data - needs to be passed to other cores */
1762306a36Sopenharmony_ci	uint32_t k0_val;
1862306a36Sopenharmony_ci	/* Address of boot info block structure */
1962306a36Sopenharmony_ci	uint64_t boot_info_addr;
2062306a36Sopenharmony_ci	uint32_t flags;		/* flags */
2162306a36Sopenharmony_ci	uint32_t pad;
2262306a36Sopenharmony_ci};
2362306a36Sopenharmony_ci
2462306a36Sopenharmony_ci/* similar to bootloader's linux_app_boot_info but without global data */
2562306a36Sopenharmony_cistruct linux_app_boot_info {
2662306a36Sopenharmony_ci#ifdef __BIG_ENDIAN_BITFIELD
2762306a36Sopenharmony_ci	uint32_t labi_signature;
2862306a36Sopenharmony_ci	uint32_t start_core0_addr;
2962306a36Sopenharmony_ci	uint32_t avail_coremask;
3062306a36Sopenharmony_ci	uint32_t pci_console_active;
3162306a36Sopenharmony_ci	uint32_t icache_prefetch_disable;
3262306a36Sopenharmony_ci	uint32_t padding;
3362306a36Sopenharmony_ci	uint64_t InitTLBStart_addr;
3462306a36Sopenharmony_ci	uint32_t start_app_addr;
3562306a36Sopenharmony_ci	uint32_t cur_exception_base;
3662306a36Sopenharmony_ci	uint32_t no_mark_private_data;
3762306a36Sopenharmony_ci	uint32_t compact_flash_common_base_addr;
3862306a36Sopenharmony_ci	uint32_t compact_flash_attribute_base_addr;
3962306a36Sopenharmony_ci	uint32_t led_display_base_addr;
4062306a36Sopenharmony_ci#else
4162306a36Sopenharmony_ci	uint32_t start_core0_addr;
4262306a36Sopenharmony_ci	uint32_t labi_signature;
4362306a36Sopenharmony_ci
4462306a36Sopenharmony_ci	uint32_t pci_console_active;
4562306a36Sopenharmony_ci	uint32_t avail_coremask;
4662306a36Sopenharmony_ci
4762306a36Sopenharmony_ci	uint32_t padding;
4862306a36Sopenharmony_ci	uint32_t icache_prefetch_disable;
4962306a36Sopenharmony_ci
5062306a36Sopenharmony_ci	uint64_t InitTLBStart_addr;
5162306a36Sopenharmony_ci
5262306a36Sopenharmony_ci	uint32_t cur_exception_base;
5362306a36Sopenharmony_ci	uint32_t start_app_addr;
5462306a36Sopenharmony_ci
5562306a36Sopenharmony_ci	uint32_t compact_flash_common_base_addr;
5662306a36Sopenharmony_ci	uint32_t no_mark_private_data;
5762306a36Sopenharmony_ci
5862306a36Sopenharmony_ci	uint32_t led_display_base_addr;
5962306a36Sopenharmony_ci	uint32_t compact_flash_attribute_base_addr;
6062306a36Sopenharmony_ci#endif
6162306a36Sopenharmony_ci};
6262306a36Sopenharmony_ci
6362306a36Sopenharmony_ci/* If not to copy a lot of bootloader's structures
6462306a36Sopenharmony_ci   here is only offset of requested member */
6562306a36Sopenharmony_ci#define AVAIL_COREMASK_OFFSET_IN_LINUX_APP_BOOT_BLOCK	 0x765c
6662306a36Sopenharmony_ci
6762306a36Sopenharmony_ci/* hardcoded in bootloader */
6862306a36Sopenharmony_ci#define	 LABI_ADDR_IN_BOOTLOADER			 0x700
6962306a36Sopenharmony_ci
7062306a36Sopenharmony_ci#define LINUX_APP_BOOT_BLOCK_NAME "linux-app-boot"
7162306a36Sopenharmony_ci
7262306a36Sopenharmony_ci#define LABI_SIGNATURE 0xAABBCC01
7362306a36Sopenharmony_ci
7462306a36Sopenharmony_ci/*  from uboot-headers/octeon_mem_map.h */
7562306a36Sopenharmony_ci#define EXCEPTION_BASE_INCR	(4 * 1024)
7662306a36Sopenharmony_ci			       /* Increment size for exception base addresses (4k minimum) */
7762306a36Sopenharmony_ci#define EXCEPTION_BASE_BASE	0
7862306a36Sopenharmony_ci#define BOOTLOADER_PRIV_DATA_BASE	(EXCEPTION_BASE_BASE + 0x800)
7962306a36Sopenharmony_ci#define BOOTLOADER_BOOT_VECTOR		(BOOTLOADER_PRIV_DATA_BASE)
8062306a36Sopenharmony_ci
8162306a36Sopenharmony_ci#endif /* __OCTEON_BOOT_H__ */
82