Files
2025-05-04 13:11:59 +08:00

126 lines
3.2 KiB
C

/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __ASM_MACH_LOONGSON64_BOOT_PARAM_H_
#define __ASM_MACH_LOONGSON64_BOOT_PARAM_H_
#ifdef CONFIG_VT
#include <linux/screen_info.h>
#endif
#define ADDRESS_TYPE_SYSRAM 1
#define ADDRESS_TYPE_RESERVED 2
#define ADDRESS_TYPE_ACPI 3
#define ADDRESS_TYPE_NVS 4
#define ADDRESS_TYPE_PMEM 5
#define EFI_RUNTIME_MAP_START 100
#define LOONGSON3_BOOT_MEM_MAP_MAX 128
#define LOONGSON_EFIBOOT_SIGNATURE "BPI"
#define LOONGSON_MEM_SIGNATURE "MEM"
#define LOONGSON_VBIOS_SIGNATURE "VBIOS"
#define LOONGSON_SCREENINFO_SIGNATURE "SINFO"
/* Values for Version BPI */
enum bpi_version {
BPI_VERSION_V1 = 1000, /* Signature="BPI01000" */
BPI_VERSION_V2 = 1001, /* Signature="BPI01001" */
BPI_VERSION_V3 = 1002, /* Signature="BPI01002" */
};
/* Flags in bootparamsinterface */
#define BPI_FLAGS_UEFI_SUPPORTED BIT(0)
#define BPI_FLAGS_SOC_CPU BIT(1)
struct _extention_list_hdr {
u64 signature;
u32 length;
u8 revision;
u8 checksum;
u64 next_offset;
} __packed;
struct boot_params {
u64 signature; /* {"B", "P", "I", "0", "1", ... } */
void *systemtable;
u64 extlist_offset;
u64 flags;
} __packed;
struct loongsonlist_mem_map_legacy {
struct _extention_list_hdr header; /* {"M", "E", "M"} */
u8 map_count;
struct loongson_mem_map {
u32 mem_type;
u64 mem_start;
u64 mem_size;
} __packed map[LOONGSON3_BOOT_MEM_MAP_MAX];
} __packed;
struct loongsonlist_mem_map {
struct _extention_list_hdr header; /* {"M", "E", "M"} */
u8 map_count;
u32 desc_version;
struct efi_mmap {
u32 mem_type;
u32 padding;
u64 mem_start;
u64 mem_vaddr;
u64 mem_size;
u64 attribute;
} __packed map[LOONGSON3_BOOT_MEM_MAP_MAX];
} __packed;
struct loongsonlist_vbios {
struct _extention_list_hdr header; /* {"V", "B", "I", "O", "S"} */
u64 vbios_addr;
} __packed;
struct loongsonlist_screeninfo{
struct _extention_list_hdr header; /* {"S", "I", "N", "F", "O"} */
struct screen_info si;
} __packed;
// struct loongson_board_info {
// int bios_size;
// char *bios_vendor;
// char *bios_version;
// char *bios_release_date;
// char *board_name;
// char *board_vendor;
// };
// struct loongson_system_configuration {
// int bpi_ver;
// int nr_cpus;
// int nr_nodes;
// int nr_io_pics;
// int boot_cpu_id;
// int cores_per_node;
// int cores_per_package;
// char *cpuname;
// u64 suspend_addr;
// u64 vgabios_addr;
// int is_soc_cpu;
// };
extern void *loongson_fdt_blob;
extern u32 __dtb_loongson3_ls7a_begin[];
extern u32 __dtb_ls2k500_mini_dp_begin[];
extern u32 __dtb_ls2k500_dayu400_mb_begin[];
extern u32 __dtb_ls2k1000_jl_mb_begin[];
extern u32 __dtb_ls2k1000_dp_begin[];
extern u32 __dtb_ls2k1000_dp_i2s_begin[];
extern u32 __dtb_ls2p500_gbkpjm0_v10_begin[];
extern u32 __dtb_ls2k300_mini_dp_begin[];
extern u32 __dtb_ls2k300_vanguard_pi_begin[];
extern u32 __dtb_ls2k300_gongkong_gbkpgk0_begin[];
extern u32 __dtb_ls2k300_alientek_begin[];
extern u32 __dtb_ls2k300_99pi_wifi_begin[];
extern u32 __dtb_ls2k300_99pi_tf_begin[];
extern char __dtb_start[];
extern struct boot_params *efi_bp;
extern struct loongson_board_info b_info;
extern struct loongsonlist_mem_map *loongson_mem_map;
extern struct loongson_system_configuration loongson_sysconf;
#endif