Home | History | Annotate | Line # | Download | only in cavium
      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 
     15 struct 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 
     48 struct 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 
     95 extern struct octeon_btdesc octeon_btdesc;
     96 extern 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 
    118 struct 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 
    149 struct 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