@ -20,59 +20,6 @@ static const struct socfpga_reset_manager *reset_manager_base =
static const struct socfpga_system_manager * sysmgr_regs =
( struct socfpga_system_manager * ) SOCFPGA_SYSMGR_ADDRESS ;
# define ECC_MASK (ALT_RSTMGR_PER0MODRST_EMACECC0_SET_MSK | \
ALT_RSTMGR_PER0MODRST_EMACECC1_SET_MSK | \
ALT_RSTMGR_PER0MODRST_EMACECC2_SET_MSK | \
ALT_RSTMGR_PER0MODRST_NANDECC_SET_MSK | \
ALT_RSTMGR_PER0MODRST_QSPIECC_SET_MSK | \
ALT_RSTMGR_PER0MODRST_SDMMCECC_SET_MSK )
static const u32 per0fpgamasks [ ] = {
ALT_RSTMGR_PER0MODRST_EMACECC0_SET_MSK |
ALT_RSTMGR_PER0MODRST_EMAC0_SET_MSK ,
ALT_RSTMGR_PER0MODRST_EMACECC1_SET_MSK |
ALT_RSTMGR_PER0MODRST_EMAC1_SET_MSK ,
ALT_RSTMGR_PER0MODRST_EMACECC2_SET_MSK |
ALT_RSTMGR_PER0MODRST_EMAC2_SET_MSK ,
0 , /* i2c0 per1mod */
0 , /* i2c1 per1mod */
0 , /* i2c0_emac */
0 , /* i2c1_emac */
0 , /* i2c2_emac */
ALT_RSTMGR_PER0MODRST_NANDECC_SET_MSK |
ALT_RSTMGR_PER0MODRST_NAND_SET_MSK ,
ALT_RSTMGR_PER0MODRST_QSPIECC_SET_MSK |
ALT_RSTMGR_PER0MODRST_QSPI_SET_MSK ,
ALT_RSTMGR_PER0MODRST_SDMMCECC_SET_MSK |
ALT_RSTMGR_PER0MODRST_SDMMC_SET_MSK ,
ALT_RSTMGR_PER0MODRST_SPIM0_SET_MSK ,
ALT_RSTMGR_PER0MODRST_SPIM1_SET_MSK ,
ALT_RSTMGR_PER0MODRST_SPIS0_SET_MSK ,
ALT_RSTMGR_PER0MODRST_SPIS1_SET_MSK ,
0 , /* uart0 per1mod */
0 , /* uart1 per1mod */
} ;
static const u32 per1fpgamasks [ ] = {
0 , /* emac0 per0mod */
0 , /* emac1 per0mod */
0 , /* emac2 per0mod */
ALT_RSTMGR_PER1MODRST_I2C0_SET_MSK ,
ALT_RSTMGR_PER1MODRST_I2C1_SET_MSK ,
ALT_RSTMGR_PER1MODRST_I2C2_SET_MSK , /* i2c0_emac */
ALT_RSTMGR_PER1MODRST_I2C3_SET_MSK , /* i2c1_emac */
ALT_RSTMGR_PER1MODRST_I2C4_SET_MSK , /* i2c2_emac */
0 , /* nand per0mod */
0 , /* qspi per0mod */
0 , /* sdmmc per0mod */
0 , /* spim0 per0mod */
0 , /* spim1 per0mod */
0 , /* spis0 per0mod */
0 , /* spis1 per0mod */
ALT_RSTMGR_PER1MODRST_UART0_SET_MSK ,
ALT_RSTMGR_PER1MODRST_UART1_SET_MSK ,
} ;
struct bridge_cfg {
int compat_id ;
u32 mask_noc ;
@ -127,56 +74,6 @@ void socfpga_reset_deassert_noc_ddr_scheduler(void)
ALT_RSTMGR_BRGMODRST_DDRSCH_SET_MSK ) ;
}
/* Check whether Watchdog in reset state? */
int socfpga_is_wdt_in_reset ( void )
{
u32 val ;
val = readl ( & reset_manager_base - > per1modrst ) ;
val & = ALT_RSTMGR_PER1MODRST_WD0_SET_MSK ;
/* return 0x1 if watchdog in reset */
return val ;
}
/* emacbase: base address of emac to enable/disable reset
* state : 0 - disable reset , ! 0 - enable reset
*/
void socfpga_emac_manage_reset ( ulong emacbase , u32 state )
{
ulong eccmask ;
ulong emacmask ;
switch ( emacbase ) {
case SOCFPGA_EMAC0_ADDRESS :
eccmask = ALT_RSTMGR_PER0MODRST_EMACECC0_SET_MSK ;
emacmask = ALT_RSTMGR_PER0MODRST_EMAC0_SET_MSK ;
break ;
case SOCFPGA_EMAC1_ADDRESS :
eccmask = ALT_RSTMGR_PER0MODRST_EMACECC1_SET_MSK ;
emacmask = ALT_RSTMGR_PER0MODRST_EMAC1_SET_MSK ;
break ;
case SOCFPGA_EMAC2_ADDRESS :
eccmask = ALT_RSTMGR_PER0MODRST_EMACECC2_SET_MSK ;
emacmask = ALT_RSTMGR_PER0MODRST_EMAC2_SET_MSK ;
break ;
default :
pr_err ( " emac base address unexpected! %lx " , emacbase ) ;
hang ( ) ;
break ;
}
if ( state ) {
/* Enable ECC OCP first */
setbits_le32 ( & reset_manager_base - > per0modrst , eccmask ) ;
setbits_le32 ( & reset_manager_base - > per0modrst , emacmask ) ;
} else {
/* Disable ECC OCP first */
clrbits_le32 ( & reset_manager_base - > per0modrst , emacmask ) ;
clrbits_le32 ( & reset_manager_base - > per0modrst , eccmask ) ;
}
}
static int get_bridge_init_val ( const void * blob , int compat_id )
{
int node ;
@ -213,26 +110,6 @@ int socfpga_reset_deassert_bridges_handoff(void)
false , 1000 , false ) ;
}
void socfpga_reset_assert_fpga_connected_peripherals ( void )
{
u32 mask0 = 0 ;
u32 mask1 = 0 ;
u32 fpga_pinux_addr = SOCFPGA_PINMUX_FPGA_INTERFACE_ADDRESS ;
int i ;
for ( i = 0 ; i < ARRAY_SIZE ( per1fpgamasks ) ; i + + ) {
if ( readl ( fpga_pinux_addr ) ) {
mask0 | = per0fpgamasks [ i ] ;
mask1 | = per1fpgamasks [ i ] ;
}
fpga_pinux_addr + = sizeof ( u32 ) ;
}
setbits_le32 ( & reset_manager_base - > per0modrst , mask0 & ECC_MASK ) ;
setbits_le32 ( & reset_manager_base - > per1modrst , mask1 ) ;
setbits_le32 ( & reset_manager_base - > per0modrst , mask0 ) ;
}
/* Release L4 OSC1 Watchdog Timer 0 from reset through reset manager */
void socfpga_reset_deassert_osc1wd0 ( void )
{