From f30c62bbe8988a8341970cbb7e14bb7a99abb157 Mon Sep 17 00:00:00 2001 From: "Huber, Andreas" Date: Mon, 2 May 2011 22:56:54 +0000 Subject: 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 Signed-off-by: Holger Brunck Signed-off-by: Valentin Longchamp Acked-by: Heiko Schocher cc: Wolfgang Denk cc: Detlev Zundel --- board/keymile/common/common.h | 79 +++++++++++++++++++++++++++++++++++++++++++ board/keymile/km82xx/km82xx.c | 11 +++--- 2 files changed, 84 insertions(+), 6 deletions(-) (limited to 'board/keymile') 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 */ -- cgit v1.2.3