Home | History | Annotate | Line # | Download | only in cavium
      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