@ -30,6 +30,7 @@
# include "net2big_v2.h"
# include "../common/common.h"
# include "../common/cpld-gpio-bus.h"
DECLARE_GLOBAL_DATA_PTR ;
@ -61,18 +62,18 @@ int board_early_init_f(void)
MPP24_GPIO , /* USB mode select */
MPP26_GPIO , /* USB device vbus */
MPP28_GPIO , /* USB enable host vbus */
MPP29_GPIO , /* GPIO extension ALE */
MPP29_GPIO , /* CPLD GPIO bus ALE */
MPP34_GPIO , /* Rear Push button 0=on 1=off */
MPP35_GPIO , /* Inhibit switch power-off */
MPP36_GPIO , /* SATA HDD1 presence */
MPP37_GPIO , /* SATA HDD2 presence */
MPP40_GPIO , /* eSATA presence */
MPP44_GPIO , /* GPIO extension (data 0) */
MPP45_GPIO , /* GPIO extension (data 1) */
MPP46_GPIO , /* GPIO extension (data 2) */
MPP47_GPIO , /* GPIO extension (addr 0) */
MPP48_GPIO , /* GPIO extension (addr 1) */
MPP49_GPIO , /* GPIO extension (addr 2) */
MPP44_GPIO , /* CPLD GPIO bus (data 0) */
MPP45_GPIO , /* CPLD GPIO bus (data 1) */
MPP46_GPIO , /* CPLD GPIO bus (data 2) */
MPP47_GPIO , /* CPLD GPIO bus (addr 0) */
MPP48_GPIO , /* CPLD GPIO bus (addr 1) */
MPP49_GPIO , /* CPLD GPIO bus (addr 2) */
0
} ;
@ -143,6 +144,89 @@ err:
static void init_fan ( void ) { }
# endif /* CONFIG_CMD_I2C && CONFIG_SYS_I2C_G762_ADDR */
# if defined(CONFIG_NET2BIG_V2) && defined(CONFIG_KIRKWOOD_GPIO)
/*
* CPLD GPIO bus :
*
* - address register : bit [ 0 - 2 ] - > GPIO [ 47 - 49 ]
* - data register : bit [ 0 - 2 ] - > GPIO [ 44 - 46 ]
* - enable register : GPIO 29
*/
static unsigned cpld_gpio_bus_addr [ ] = { 47 , 48 , 49 } ;
static unsigned cpld_gpio_bus_data [ ] = { 44 , 45 , 46 } ;
static struct cpld_gpio_bus cpld_gpio_bus = {
. addr = cpld_gpio_bus_addr ,
. num_addr = ARRAY_SIZE ( cpld_gpio_bus_addr ) ,
. data = cpld_gpio_bus_data ,
. num_data = ARRAY_SIZE ( cpld_gpio_bus_data ) ,
. enable = 29 ,
} ;
/*
* LEDs configuration :
*
* The LEDs are controlled by a CPLD and can be configured through
* the CPLD GPIO bus .
*
* Address register selection :
*
* addr | register
* - - - - - - - - - - - - - - - - - - - - - - - - - - - -
* 0 | front LED
* 1 | front LED brightness
* 2 | SATA LED brightness
* 3 | SATA0 LED
* 4 | SATA1 LED
* 5 | SATA2 LED
* 6 | SATA3 LED
* 7 | SATA4 LED
*
* Data register configuration :
*
* data | LED brightness
* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
* 0 | min ( off )
* - | -
* 7 | max
*
* data | front LED mode
* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
* 0 | fix off
* 1 | fix blue on
* 2 | fix red on
* 3 | blink blue on = 1 sec and blue off = 1 sec
* 4 | blink red on = 1 sec and red off = 1 sec
* 5 | blink blue on = 2.5 sec and red on = 0.5 sec
* 6 | blink blue on = 1 sec and red on = 1 sec
* 7 | blink blue on = 0.5 sec and blue off = 2.5 sec
*
* data | SATA LED mode
* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
* 0 | fix off
* 1 | SATA activity blink
* 2 | fix red on
* 3 | blink blue on = 1 sec and blue off = 1 sec
* 4 | blink red on = 1 sec and red off = 1 sec
* 5 | blink blue on = 2.5 sec and red on = 0.5 sec
* 6 | blink blue on = 1 sec and red on = 1 sec
* 7 | fix blue on
*/
static void init_leds ( void )
{
/* Enable the front blue LED */
cpld_gpio_bus_write ( & cpld_gpio_bus , 0 , 1 ) ;
cpld_gpio_bus_write ( & cpld_gpio_bus , 1 , 3 ) ;
/* Configure SATA LEDs to blink in relation with the SATA activity */
cpld_gpio_bus_write ( & cpld_gpio_bus , 3 , 1 ) ;
cpld_gpio_bus_write ( & cpld_gpio_bus , 4 , 1 ) ;
cpld_gpio_bus_write ( & cpld_gpio_bus , 2 , 3 ) ;
}
# else
static void init_leds ( void ) { }
# endif /* CONFIG_NET2BIG_V2 && CONFIG_KIRKWOOD_GPIO */
int misc_init_r ( void )
{
init_fan ( ) ;
@ -153,6 +237,8 @@ int misc_init_r(void)
eth_setenv_enetaddr ( " ethaddr " , mac ) ;
}
# endif
init_leds ( ) ;
return 0 ;
}
# endif /* CONFIG_MISC_INIT_R */