1/* $NetBSD: octeon_uboot.h,v 1.3 2020/06/20 02:01:56 simonb Exp $ */ 2 3#ifndef _EVBMIPS_OCTEON_UBOOT_H_ 4#define _EVBMIPS_OCTEON_UBOOT_H_ 5 6#define OCTEON_BTDESC_ARGV_MAX 64 7#define OCTEON_BTDESC_SERIAL_LEN 20 8#define OCTEON_BTDESC_DEP2_LEN 6 9 10#define OCTEON_BTINFO_PADDR_OFFSET 392 11#define OCTEON_BTINFO_SERIAL_LEN 20 12#define OCTEON_BTINFO_MAJOR_VERSION 1 13#define OCTEON_BTINFO_MINOR_VERSION 2 14 15struct octeon_btdesc { 16 uint32_t obt_desc_ver; 17 uint32_t obt_desc_size; 18 uint64_t obt_stack_top; /* deprecated */ 19 uint64_t obt_heap_start; 20 uint64_t obt_heap_end; 21 uint64_t obt_deprecated17; 22 uint64_t obt_deprecated16; 23 uint32_t obt_deprecated18; 24 uint32_t obt_deprecated15; 25 uint32_t obt_deprecated14; 26 uint32_t obt_argc; 27 uint32_t obt_argv[OCTEON_BTDESC_ARGV_MAX]; 28 uint32_t obt_flags; /* deprecated */ 29 uint32_t obt_core_mask; /* deprecated */ 30 uint32_t obt_dram_size; /* deprecated */ 31 uint32_t obt_phy_mem_desc_addr; /* deprecated */ 32 uint32_t obt_debugger_flag_addr; 33 uint32_t obt_eclock; 34 uint32_t obt_deprecated10; 35 uint32_t obt_deprecated9; 36 uint16_t obt_deprecated8; 37 uint8_t obt_deprecated7; 38 uint8_t obt_deprecated6; 39 uint16_t obt_deprecated5; 40 uint8_t obt_deprecated4; 41 uint8_t obt_deprecated3; 42 uint8_t obt_deprecated2[OCTEON_BTDESC_SERIAL_LEN]; 43 uint8_t obt_deprecated1[OCTEON_BTDESC_DEP2_LEN]; 44 uint8_t obt_deprecated0; 45 uint64_t obt_boot_info_addr; 46}; 47 48struct octeon_btinfo { 49 uint32_t obt_major_version; 50 uint32_t obt_minor_version; 51 52 uint64_t obt_stack_top; 53 uint64_t obt_heap_base; 54 uint64_t obt_heap_end; 55 uint64_t obt_desc_vaddr; 56 57 uint32_t obt_ebase_addr; 58 uint32_t obt_stack_size; 59 uint32_t obt_flags; 60 uint32_t obt_core_mask; /* deprecated in v4 */ 61 uint32_t obt_dram_size; /* in MB */ 62 uint32_t obt_phy_mem_desc_addr; 63 uint32_t obt_dbg_flags_base_addr; 64 uint32_t obt_eclock_hz; /* CPU clock speed */ 65 uint32_t obt_dclock_hz; /* DRAM clock speed */ 66 uint32_t obt_reserved0; 67 68 uint16_t obt_board_type; 69 uint8_t obt_board_rev_major; 70 uint8_t obt_board_rev_minor; 71 uint16_t obt_reserved1; 72 uint8_t obt_reserved2; 73 uint8_t obt_reserved3; 74 char obt_board_serial_number[OCTEON_BTINFO_SERIAL_LEN]; 75 76 uint8_t obt_mac_addr_base[6]; 77 uint8_t obt_mac_addr_count; 78 79 /* version minor 1 or newer */ 80 uint64_t obt_cf_common_base_addr; /* paddr */ 81 uint64_t obt_cf_attr_base_addr; /* paddr */ 82 uint64_t obt_led_display_base_addr; /* deprecated */ 83 84 /* version minor 2 or newer */ 85 uint32_t obt_dfa_ref_clock_hz; /* DFA ref clock */ 86 uint32_t obt_config_flags; 87 88 /* version minor 3 or newer */ 89 uint64_t obt_fdt_addr; /* FDT structure */ 90 91 /* version minor 4 or newer */ 92 uint64_t obt_ext_core_mask; /* 64-bit core mask */ 93}; 94 95extern struct octeon_btdesc octeon_btdesc; 96extern struct octeon_btinfo octeon_btinfo; 97 98#define OCTEON_SUPPORTED_DESCRIPTOR_VERSION 7 99 100/* obt_board_type */ 101#define BOARD_TYPE_UBIQUITI_E100 20002 102#define BOARD_TYPE_UBIQUITI_E120 20004 103#define BOARD_TYPE_UBIQUITI_E200 20003 104#define BOARD_TYPE_UBIQUITI_E220 20005 105#define BOARD_TYPE_UBIQUITI_E220 20005 106#define BOARD_TYPE_UBIQUITI_E1000 20010 107#define BOARD_TYPE_UBIQUITI_E300 20300 108 109/* obt_config_flags */ 110#define CONFIG_FLAGS_PCI_HOST __BIT(0) 111#define CONFIG_FLAGS_PCI_TARGET __BIT(1) 112#define CONFIG_FLAGS_DEBUG __BIT(2) 113#define CONFIG_FLAGS_NO_MAGIC __BIT(3) 114#define CONFIG_FLAGS_OVERSIZE_TLB_MAPPING __BIT(4) 115#define CONFIG_FLAGS_BREAK __BIT(5) 116 117 118struct octeon_bootmem_desc { 119#if BYTE_ORDER == BIG_ENDIAN 120 uint32_t bmd_lock; 121 uint32_t bmd_flags; 122 uint64_t bmd_head_addr; 123 124 uint32_t bmd_major_version; 125 uint32_t bmd_minor_version; 126 uint64_t bmd_app_data_addr; 127 uint64_t bmd_app_data_size; 128 129 uint32_t bmd_named_block_num_blocks; 130 uint32_t bmd_named_block_name_len; 131 uint64_t bmd_named_block_array_addr; 132#endif 133#if BYTE_ORDER == LITTLE_ENDIAN 134 uint32_t bmd_flags; 135 uint32_t bmd_lock; 136 uint64_t bmd_head_addr; 137 138 uint32_t bmd_minor_version; 139 uint32_t bmd_major_version; 140 uint64_t bmd_app_data_addr; 141 uint64_t bmd_app_data_size; 142 143 uint32_t bmd_named_block_name_len; 144 uint32_t bmd_named_block_num_blocks; 145 uint64_t bmd_named_block_array_addr; 146#endif 147}; 148 149struct octeon_bootmem_block_header { 150 uint64_t bbh_next_block_addr; 151 uint64_t bbh_size; 152}; 153 154#endif /* _EVBMIPS_OCTEON_UBOOT_H_ */ 155