diff options
| author | Huber, Andreas <Andreas.Huber@keymile.com> | 2011-05-02 22:56:54 +0000 | 
|---|---|---|
| committer | Wolfgang Denk <wd@denx.de> | 2011-05-10 22:48:45 +0200 | 
| commit | f30c62bbe8988a8341970cbb7e14bb7a99abb157 (patch) | |
| tree | 13134f96cb17a2d67a19d21df5cbc271dd620dd7 | |
| parent | 0278236c38a7fcde95dadc493b26ad612e88ac05 (diff) | |
| download | olio-uboot-2014.01-f30c62bbe8988a8341970cbb7e14bb7a99abb157.tar.xz olio-uboot-2014.01-f30c62bbe8988a8341970cbb7e14bb7a99abb157.zip | |
powerpc/km82xx: rework DIP switch detection
Introduce a struct for the BFTICU FPGA to increase the readability of
the code. And the define CONFIG_SYS_BFTICU_BASE was removed because
the CONFIG_SYS_FPGA_BASE is already the base value for BFTICU registers.
Signed-off-by: Andreas Huber <andreas.huber@keymile.com>
Signed-off-by: Holger Brunck <holger.brunck@keymile.com>
Signed-off-by: Valentin Longchamp <valentin.longchamp@keymile.com>
Acked-by: Heiko Schocher <hs@denx.de>
cc: Wolfgang Denk <wd@denx.de>
cc: Detlev Zundel <dzu@denx.de>
| -rw-r--r-- | board/keymile/common/common.h | 79 | ||||
| -rw-r--r-- | board/keymile/km82xx/km82xx.c | 11 | ||||
| -rw-r--r-- | include/configs/mgcoge.h | 3 | 
3 files changed, 84 insertions, 9 deletions
| diff --git a/board/keymile/common/common.h b/board/keymile/common/common.h index 14768c99b..6ce992ac3 100644 --- a/board/keymile/common/common.h +++ b/board/keymile/common/common.h @@ -39,6 +39,85 @@ struct km_bec_fpga {  	unsigned char	pgy_eth;  }; +#define BFTICU_DIPSWITCH_MASK   0x0f + +/* + * BFTICU FPGA iomap + * BFTICU is used on mgcoge and mgocge3ne + */ +struct bfticu_iomap { +	u8	xi_ena;		/* General defect enable */ +	u8	pack1[3]; +	u8	en_csn; +	u8	pack2; +	u8	safe_mem; +	u8	pack3; +	u8	id; +	u8	pack4; +	u8	rev; +	u8	build; +	u8	p_frc; +	u8	p_msk; +	u8	pack5[2]; +	u8	xg_int; +	u8	pack6[15]; +	u8	s_conf; +	u8	pack7; +	u8	dmx_conf12; +	u8	pack8; +	u8	s_clkslv; +	u8	pack9[11]; +	u8	d_conf; +	u8	d_mask_ca; +	u8	d_pll_del; +	u8	pack10[16]; +	u8	t_conf_ca; +	u8	t_mask_ca; +	u8	pack11[13]; +	u8	m_def0; +	u8	m_def1; +	u8	m_def2; +	u8	m_def3; +	u8	m_def4; +	u8	m_def5; +	u8	m_def_trap0; +	u8	m_def_trap1; +	u8	m_def_trap2; +	u8	m_def_trap3; +	u8	m_def_trap4; +	u8	m_def_trap5; +	u8	m_mask_def0; +	u8	m_mask_def1; +	u8	m_mask_def2; +	u8	m_mask_def3; +	u8	m_mask_def4; +	u8	m_mask_def5; +	u8	m_def_mask0; +	u8	m_def_mask1; +	u8	m_def_mask2; +	u8	m_def_mask3; +	u8	m_def_mask4; +	u8	m_def_mask5; +	u8	m_def_pri; +	u8	pack12[11]; +	u8	hw_status; +	u8	pack13; +	u8	hw_control1; +	u8	hw_control2; +	u8	hw_control3; +	u8	pack14[7]; +	u8	led_on;		/* Leds */ +	u8	pack15; +	u8	sfp_control;	/* SFP modules */ +	u8	pack16; +	u8	alarm_control;	/* Alarm output */ +	u8	pack17; +	u8	icps;		/* ICN clock pulse shaping */ +	u8	mswitch;	/* Read mode switch */ +	u8	pack18[6]; +	u8	pb_dbug; +}; +  #if !defined(CONFIG_PIGGY_MAC_ADRESS_OFFSET)  #define CONFIG_PIGGY_MAC_ADRESS_OFFSET	0  #endif diff --git a/board/keymile/km82xx/km82xx.c b/board/keymile/km82xx/km82xx.c index 6c511a6ea..01c0bfd29 100644 --- a/board/keymile/km82xx/km82xx.c +++ b/board/keymile/km82xx/km82xx.c @@ -296,15 +296,14 @@ int checkboard(void)  	return 0;  } -#define DIPSWITCH_OFFSET 0x89 -#define DIPSWITCH_MASK   0x0f -  int last_stage_init(void)  { +	struct bfticu_iomap *base = +		(struct bfticu_iomap *)CONFIG_SYS_FPGA_BASE;  	u8 dip_switch; -	/* Dip switch */ -	dip_switch = readb(CONFIG_SYS_BFTICU_BASE + DIPSWITCH_OFFSET); -	dip_switch &= DIPSWITCH_MASK; + +	dip_switch = in_8(&base->mswitch); +	dip_switch &= BFTICU_DIPSWITCH_MASK;  	/* dip switch 'full reset' or 'db erase' */  	if (dip_switch & 0x1 || dip_switch & 0x2) {  		/* start bootloader */ diff --git a/include/configs/mgcoge.h b/include/configs/mgcoge.h index dcde76c86..3d2ee2490 100644 --- a/include/configs/mgcoge.h +++ b/include/configs/mgcoge.h @@ -61,7 +61,4 @@  /* include further common stuff for all keymile 82xx boards */  #include "km82xx-common.h" -/* bfticu address */ -#define CONFIG_SYS_BFTICU_BASE          0x40000000 -  #endif /* __CONFIG_H */ |