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