diff options
Diffstat (limited to 'target/linux/adm5120/files/arch/mips/include/asm/mach-adm5120/prom')
6 files changed, 443 insertions, 0 deletions
diff --git a/target/linux/adm5120/files/arch/mips/include/asm/mach-adm5120/prom/admboot.h b/target/linux/adm5120/files/arch/mips/include/asm/mach-adm5120/prom/admboot.h new file mode 100644 index 000000000..fa42bf714 --- /dev/null +++ b/target/linux/adm5120/files/arch/mips/include/asm/mach-adm5120/prom/admboot.h @@ -0,0 +1,17 @@ +/* + *  ADMBoot specific definitions + * + *  Copyright (C) 2008 Gabor Juhos <juhosg@openwrt.org> + * + *  This program is free software; you can redistribute it and/or modify it + *  under the terms of the GNU General Public License version 2 as published + *  by the Free Software Foundation. + * + */ + +#ifndef _ADMBOOT_H +#define _ADMBOOT_H + +extern int admboot_get_mac_base(u32 offset, u32 len, u8 *mac) __init; + +#endif /* _ADMBOOT_H */ diff --git a/target/linux/adm5120/files/arch/mips/include/asm/mach-adm5120/prom/cfe.h b/target/linux/adm5120/files/arch/mips/include/asm/mach-adm5120/prom/cfe.h new file mode 100644 index 000000000..0cb3eee70 --- /dev/null +++ b/target/linux/adm5120/files/arch/mips/include/asm/mach-adm5120/prom/cfe.h @@ -0,0 +1,18 @@ +/* + *  Broadcom's CFE definitions + * + *  Copyright (C) 2006-2008 Gabor Juhos <juhosg@openwrt.org> + * + *  This program is free software; you can redistribute it and/or modify it + *  under the terms of the GNU General Public License version 2 as published + *  by the Free Software Foundation. + * + */ + +#ifndef _PROM_CFE_H_ +#define _PROM_CFE_H_ + +extern int cfe_present(void) __init; +extern char *cfe_getenv(char *); + +#endif /*_PROM_CFE_H_*/ diff --git a/target/linux/adm5120/files/arch/mips/include/asm/mach-adm5120/prom/generic.h b/target/linux/adm5120/files/arch/mips/include/asm/mach-adm5120/prom/generic.h new file mode 100644 index 000000000..778df2467 --- /dev/null +++ b/target/linux/adm5120/files/arch/mips/include/asm/mach-adm5120/prom/generic.h @@ -0,0 +1,18 @@ +/* + *  Generic prom definitions + * + *  Copyright (C) 2006-2008 Gabor Juhos <juhosg@openwrt.org> + * + *  This program is free software; you can redistribute it and/or modify it + *  under the terms of the GNU General Public License version 2 as published + *  by the Free Software Foundation. + * + */ + +#ifndef _PROM_GENERIC_H_ +#define _PROM_GENERIC_H_ + +extern int generic_prom_present(void) __init; +extern char *generic_prom_getenv(char *); + +#endif /*_PROM_GENERIC_H_*/ diff --git a/target/linux/adm5120/files/arch/mips/include/asm/mach-adm5120/prom/myloader.h b/target/linux/adm5120/files/arch/mips/include/asm/mach-adm5120/prom/myloader.h new file mode 100644 index 000000000..ea8db81ed --- /dev/null +++ b/target/linux/adm5120/files/arch/mips/include/asm/mach-adm5120/prom/myloader.h @@ -0,0 +1,179 @@ +/* + *  Compex's MyLoader specific definitions + * + *  Copyright (C) 2006-2008 Gabor Juhos <juhosg@openwrt.org> + * + *  This program is free software; you can redistribute it and/or modify it + *  under the terms of the GNU General Public License version 2 as published + *  by the Free Software Foundation. + * + */ + +#ifndef _MYLOADER_H_ +#define _MYLOADER_H_ + +/* + * Firmware file format: + * + *	<header> + *	[<block descriptor 0>] + *	... + *	[<block descriptor n>] + *	<null block descriptor> + *	[<block data 0>] + *	... + *	[<block data n>] + * + * + */ + +/* Myloader specific magic numbers */ +#define MYLO_MAGIC_FIRMWARE	0x4C594D00 +#define MYLO_MAGIC_20021103	0x20021103 +#define MYLO_MAGIC_20021107	0x20021107 + +#define MYLO_MAGIC_SYS_PARAMS	MYLO_MAGIC_20021107 +#define MYLO_MAGIC_PARTITIONS	MYLO_MAGIC_20021103 +#define MYLO_MAGIC_BOARD_PARAMS	MYLO_MAGIC_20021103 + +/* + * Addresses of the data structures provided by MyLoader + */ +#define MYLO_MIPS_SYS_PARAMS	0x80000800	/* System Parameters */ +#define MYLO_MIPS_BOARD_PARAMS	0x80000A00	/* Board Parameters */ +#define MYLO_MIPS_PARTITIONS	0x80000C00	/* Partition Table */ +#define MYLO_MIPS_BOOT_PARAMS	0x80000E00	/* Boot Parameters */ + +/* Vendor ID's (seems to be same as the PCI vendor ID's) */ +#define VENID_COMPEX		0x11F6 + +/* Devices based on the ADM5120 */ +#define DEVID_COMPEX_NP27G	0x0078 +#define DEVID_COMPEX_NP28G	0x044C +#define DEVID_COMPEX_NP28GHS	0x044E +#define DEVID_COMPEX_WP54Gv1C	0x0514 +#define DEVID_COMPEX_WP54G	0x0515 +#define DEVID_COMPEX_WP54AG	0x0546 +#define DEVID_COMPEX_WPP54AG	0x0550 +#define DEVID_COMPEX_WPP54G	0x0555 + +/* Devices based on the IXP422 */ +#define DEVID_COMPEX_WP18	0x047E +#define DEVID_COMPEX_NP18A	0x0489 + +/* Other devices */ +#define DEVID_COMPEX_NP26G8M	0x03E8 +#define DEVID_COMPEX_NP26G16M	0x03E9 + +struct mylo_fw_header { +	uint32_t	magic;	/* must be MYLO_MAGIC_FIRMWARE */ +	uint32_t	crc;	/* CRC of the whole firmware */ +	uint32_t	res0;	/* unknown/unused */ +	uint32_t	res1;	/* unknown/unused */ +	uint16_t	vid;	/* vendor ID */ +	uint16_t	did;	/* device ID */ +	uint16_t	svid;	/* sub vendor ID */ +	uint16_t	sdid;	/* sub device ID */ +	uint32_t	rev;	/* device revision */ +	uint32_t	fwhi;	/* FIXME: firmware version high? */ +	uint32_t	fwlo;	/* FIXME: firmware version low? */ +	uint32_t	flags;	/* firmware flags */ +}; + +#define FW_FLAG_BOARD_PARAMS_WP	0x01 /* board parameters are write protected */ +#define FW_FLAG_BOOT_SECTOR_WE	0x02 /* enable of write boot sectors (below 64K) */ + +struct mylo_fw_blockdesc { +	uint32_t	type;	/* block type */ +	uint32_t	addr;	/* relative address to flash start */ +	uint32_t	dlen;	/* size of block data in bytes */ +	uint32_t	blen;	/* total size of block in bytes */ +}; + +#define FW_DESC_TYPE_UNUSED	0 +#define FW_DESC_TYPE_USED	1 + +struct mylo_partition { +	uint16_t	flags;	/* partition flags */ +	uint16_t	type;	/* type of the partition */ +	uint32_t	addr;	/* relative address of the partition from the +				   flash start */ +	uint32_t	size;	/* size of the partition in bytes */ +	uint32_t	param;	/* if this is the active partition, the +				   MyLoader load code to this address */ +}; + +#define PARTITION_FLAG_ACTIVE	0x8000 /* this is the active partition, +					* MyLoader loads firmware from here */ +#define PARTITION_FLAG_ISRAM	0x2000 /* FIXME: this is a RAM partition? */ +#define PARTIIION_FLAG_RAMLOAD	0x1000 /* FIXME: load this partition into the RAM? */ +#define PARTITION_FLAG_PRELOAD	0x0800 /* the partition data preloaded to RAM +					* before decompression */ +#define PARTITION_FLAG_HAVEHDR  0x0002 /* the partition data have a header */ + +#define PARTITION_TYPE_FREE	0 +#define PARTITION_TYPE_USED	1 + +#define MYLO_MAX_PARTITIONS	8	/* maximum number of partitions in the +					   partition table */ + +struct mylo_partition_table { +	uint32_t	magic;	/* must be MYLO_MAGIC_PARTITIONS */ +	uint32_t	res0;	/* unknown/unused */ +	uint32_t	res1;	/* unknown/unused */ +	uint32_t 	res2;	/* unknown/unused */ +	struct mylo_partition partitions[MYLO_MAX_PARTITIONS]; +}; + +struct mylo_partition_header { +	uint32_t	len;	/* length of the partition data */ +	uint32_t	crc;	/* CRC value of the partition data */ +}; + +struct mylo_system_params { +	uint32_t	magic;	/* must be MYLO_MAGIC_SYS_PARAMS */ +	uint32_t	res0; +	uint32_t	res1; +	uint32_t	mylo_ver; +	uint16_t	vid;	/* Vendor ID */ +	uint16_t	did;	/* Device ID */ +	uint16_t	svid;	/* Sub Vendor ID */ +	uint16_t	sdid;	/* Sub Device ID */ +	uint32_t	rev;	/* device revision */ +	uint32_t	fwhi; +	uint32_t	fwlo; +	uint32_t	tftp_addr; +	uint32_t	prog_start; +	uint32_t	flash_size;	/* Size of boot FLASH in bytes */ +	uint32_t	dram_size;	/* Size of onboard RAM in bytes */ +}; + + +struct mylo_eth_addr { +	uint8_t	mac[6]; +	uint8_t	csum[2]; +}; + +#define MYLO_ETHADDR_COUNT	8	/* maximum number of ethernet address +					   in the board parameters */ + +struct mylo_board_params { +	uint32_t	magic;	/* must be MYLO_MAGIC_BOARD_PARAMS */ +	uint32_t	res0; +	uint32_t	res1; +	uint32_t	res2; +	struct mylo_eth_addr addr[MYLO_ETHADDR_COUNT]; +}; + +struct myloader_info { +	u32	vid; +	u32	did; +	u32	svid; +	u32	sdid; +	uint8_t macs[MYLO_ETHADDR_COUNT][6]; +}; + +extern struct myloader_info myloader_info; +extern int myloader_present(void) __init; + +#endif /* _MYLOADER_H_*/ diff --git a/target/linux/adm5120/files/arch/mips/include/asm/mach-adm5120/prom/routerboot.h b/target/linux/adm5120/files/arch/mips/include/asm/mach-adm5120/prom/routerboot.h new file mode 100644 index 000000000..d5ad513d5 --- /dev/null +++ b/target/linux/adm5120/files/arch/mips/include/asm/mach-adm5120/prom/routerboot.h @@ -0,0 +1,125 @@ +/* + *  Mikrotik's RouterBOOT definitions + * + *  Copyright (C) 2007-2008 Gabor Juhos <juhosg@openwrt.org> + * + *  This program is free software; you can redistribute it and/or modify it + *  under the terms of the GNU General Public License version 2 as published + *  by the Free Software Foundation. + * + */ + +#ifndef _ROUTERBOOT_H +#define _ROUTERBOOT_H + +#define RB_MAC_SIZE		6 + +struct rb_bios_settings { +	u32	hs_offs; /* hard settings offset */ +	u32	hs_size; /* hard settings size */ +	u32	fw_offs; /* firmware offset */ +	u32	ss_offs; /* soft settings offset */ +	u32	ss_size; /* soft settings size */ +}; + +struct rb_hard_settings { +	char	*name;		/* board name */ +	char	*bios_ver;	/* BIOS version */ +	u32	mem_size;	/* memory size in bytes */ +	u32	mac_count;	/* number of mac addresses */ +	u8	*mac_base;	/* mac address base */ +}; + +/* + * Magic numbers + */ +#define RB_MAGIC_HARD	0x64726148 /* "Hard" */ +#define RB_MAGIC_SOFT	0x74666F53 /* "Soft" */ +#define RB_MAGIC_DAWN	0x6E776144 /* "Dawn" */ + +#define RB_ID_TERMINATOR	0 + +/* + * ID values for Hardware settings + */ +#define RB_ID_HARD_01		1 +#define RB_ID_HARD_02		2 +#define RB_ID_FLASH_INFO	3 +#define RB_ID_MAC_ADDRESS_PACK	4 +#define RB_ID_BOARD_NAME	5 +#define RB_ID_BIOS_VERSION	6 +#define RB_ID_HARD_07		7 +#define RB_ID_SDRAM_TIMINGS	8 +#define RB_ID_DEVICE_TIMINGS	9 +#define RB_ID_SOFTWARE_ID	10 +#define RB_ID_SERIAL_NUMBER	11 +#define RB_ID_HARD_12		12 +#define RB_ID_MEMORY_SIZE	13 +#define RB_ID_MAC_ADDRESS_COUNT	14 + +/* + * ID values for Software settings + */ +#define RB_ID_UART_SPEED	1 +#define RB_ID_BOOT_DELAY	2 +#define RB_ID_BOOT_DEVICE	3 +#define RB_ID_BOOT_KEY		4 +#define RB_ID_CPU_MODE		5 +#define RB_ID_FW_VERSION	6 +#define RB_ID_SOFT_07		7 +#define RB_ID_SOFT_08		8 +#define RB_ID_BOOT_PROTOCOL	9 +#define RB_ID_SOFT_10		10 +#define RB_ID_SOFT_11		11 + +/* + * UART_SPEED values + */ +#define RB_UART_SPEED_115200	0 +#define RB_UART_SPEED_57600	1 +#define RB_UART_SPEED_38400	2 +#define RB_UART_SPEED_19200	3 +#define RB_UART_SPEED_9600	4 +#define RB_UART_SPEED_4800	5 +#define RB_UART_SPEED_2400	6 +#define RB_UART_SPEED_1200	7 + +/* + * BOOT_DELAY values + */ +#define RB_BOOT_DELAY_0SEC	0 +#define RB_BOOT_DELAY_1SEC	1 +#define RB_BOOT_DELAY_2SEC	2 + +/* + * BOOT_DEVICE values + */ +#define RB_BOOT_DEVICE_ETHER	0 +#define RB_BOOT_DEVICE_NANDETH	1 +#define RB_BOOT_DEVICE_ETHONCE	2 +#define RB_BOOT_DEVICE_NANDONLY	3 + +/* + * BOOT_KEY values + */ +#define RB_BOOT_KEY_ANY		0 +#define RB_BOOT_KEY_DEL		1 + +/* + * CPU_MODE values + */ +#define RB_CPU_MODE_POWERSAVE	0 +#define RB_CPU_MODE_REGULAR	1 + +/* + * BOOT_PROTOCOL values + */ +#define RB_BOOT_PROTOCOL_BOOTP	0 +#define RB_BOOT_PROTOCOL_DHCP	1 + +extern int routerboot_present(void) __init; +extern char *routerboot_get_boardname(void); + +extern struct rb_hard_settings rb_hs; + +#endif /* _ROUTERBOOT_H */ diff --git a/target/linux/adm5120/files/arch/mips/include/asm/mach-adm5120/prom/zynos.h b/target/linux/adm5120/files/arch/mips/include/asm/mach-adm5120/prom/zynos.h new file mode 100644 index 000000000..d1e3e5b94 --- /dev/null +++ b/target/linux/adm5120/files/arch/mips/include/asm/mach-adm5120/prom/zynos.h @@ -0,0 +1,86 @@ +/* + *  ZyNOS (ZyXEL's Networking OS) definitions + * + *  Copyright (C) 2007-2008 Gabor Juhos <juhosg@openwrt.org> + * + *  This program is free software; you can redistribute it and/or modify it + *  under the terms of the GNU General Public License version 2 as published + *  by the Free Software Foundation. + * + */ + +#ifndef _ZYNOS_H +#define _ZYNOS_H + +#define ZYNOS_NAME_LEN		32 +#define ZYNOS_FEAT_BYTES	22 +#define ZYNOS_MAC_LEN		6 + +struct zynos_board_info { +	unsigned char	vendor[ZYNOS_NAME_LEN]; +	unsigned char	product[ZYNOS_NAME_LEN]; +	u32		bootext_addr; +	u32		res0; +	u16		board_id; +	u8		res1[6]; +	u8		feat_other[ZYNOS_FEAT_BYTES]; +	u8		feat_main; +	u8		res2; +	u8		mac[ZYNOS_MAC_LEN]; +	u8		country; +	u8		dbgflag; +} __attribute__ ((packed)); + +/* + * Vendor IDs + */ +#define ZYNOS_VENDOR_ID_ZYXEL	0 +#define ZYNOS_VENDOR_ID_NETGEAR	1 +#define ZYNOS_VENDOR_ID_DLINK	2 +#define ZYNOS_VENDOR_ID_OTHER	3 +#define ZYNOS_VENDOR_ID_LUCENT	4 + +/* + * Vendor names + */ +#define ZYNOS_VENDOR_DLINK	"D-Link" +#define ZYNOS_VENDOR_LUCENT	"LUCENT" +#define ZYNOS_VENDOR_NETGEAR	"NetGear" +#define ZYNOS_VENDOR_ZYXEL	"ZyXEL" + +/* + * Board IDs (big-endian) + */ +#define ZYNOS_BOARD_ES2108	0x00F2	/* Ethernet Switch 2108 */ +#define ZYNOS_BOARD_ES2108F	0x01AF	/* Ethernet Switch 2108-F */ +#define ZYNOS_BOARD_ES2108G	0x00F3	/* Ethernet Switch 2108-G */ +#define ZYNOS_BOARD_ES2108LC	0x00FC	/* Ethernet Switch 2108-LC */ +#define ZYNOS_BOARD_ES2108PWR	0x00F4	/* Ethernet Switch 2108PWR */ +#define ZYNOS_BOARD_HS100	0x9FF1	/* HomeSafe 100/100W */ +#define ZYNOS_BOARD_P334	0x9FF5	/* Prestige 334 */ +#define ZYNOS_BOARD_P334U	0x9FDD	/* Prestige 334U */ +#define ZYNOS_BOARD_P334W	0x9FF3	/* Prestige 334W */ +#define ZYNOS_BOARD_P334WH	0x00E0	/* Prestige 334WH */ +#define ZYNOS_BOARD_P334WHD	0x00E1	/* Prestige 334WHD */ +#define ZYNOS_BOARD_P334WT	0x9FEF	/* Prestige 334WT */ +#define ZYNOS_BOARD_P334WT_ALT	0x9F02	/* Prestige 334WT alternative*/ +#define ZYNOS_BOARD_P335	0x9FED	/* Prestige 335/335WT */ +#define ZYNOS_BOARD_P335PLUS	0x0025	/* Prestige 335Plus */ +#define ZYNOS_BOARD_P335U	0x9FDC	/* Prestige 335U */ + +/* + * Some magic numbers (big-endian) + */ +#define ZYNOS_MAGIC_DBGAREA1	0x48646267	/* "Hdbg" */ +#define ZYNOS_MAGIC_DBGAREA2	0x61726561	/* "area" */ + +struct bootbase_info { +	u16		vendor_id; +	u16		board_id; +	u8		mac[6]; +}; + +extern struct bootbase_info bootbase_info; +extern int bootbase_present(void) __init; + +#endif /* _ZYNOS_H */  | 
