diff options
| -rw-r--r-- | README | 1 | ||||
| -rw-r--r-- | arch/blackfin/include/asm/soft_switch.h | 18 | ||||
| -rw-r--r-- | board/bf609-ezkit/soft_switch.c | 11 | ||||
| -rw-r--r-- | board/bf609-ezkit/soft_switch.h | 25 | ||||
| -rw-r--r-- | common/Makefile | 1 | ||||
| -rw-r--r-- | common/cmd_softswitch.c | 41 | ||||
| -rw-r--r-- | include/configs/bf609-ezkit.h | 1 | 
7 files changed, 80 insertions, 18 deletions
| @@ -898,6 +898,7 @@ The following options need to be configured:  		CONFIG_CMD_SF		* Read/write/erase SPI NOR flash  		CONFIG_CMD_SHA1SUM	  print sha1 memory digest  					  (requires CONFIG_CMD_MEMORY) +		CONFIG_CMD_SOFTSWITCH	* Soft switch setting command for BF60x  		CONFIG_CMD_SOURCE	  "source" command Support  		CONFIG_CMD_SPI		* SPI serial bus support  		CONFIG_CMD_TFTPSRV	* TFTP transfer in server mode diff --git a/arch/blackfin/include/asm/soft_switch.h b/arch/blackfin/include/asm/soft_switch.h new file mode 100644 index 000000000..ff8e44d8b --- /dev/null +++ b/arch/blackfin/include/asm/soft_switch.h @@ -0,0 +1,18 @@ +/* + * U-boot - main board file + * + * Copyright (c) 2008-2012 Analog Devices Inc. + * + * Licensed under the GPL-2 or later. + */ + +#ifndef __SOFT_SWITCH_H__ +#define __SOFT_SWITCH_H__ + +#define IO_PORT_A              0 +#define IO_PORT_B              1 +#define IO_PORT_INPUT          0 +#define IO_PORT_OUTPUT         1 + +int config_switch_bit(int num, int port, int bit, int dir, uchar value); +#endif diff --git a/board/bf609-ezkit/soft_switch.c b/board/bf609-ezkit/soft_switch.c index 2e1404fa0..e0c8d93fe 100644 --- a/board/bf609-ezkit/soft_switch.c +++ b/board/bf609-ezkit/soft_switch.c @@ -12,14 +12,6 @@  #include <i2c.h>  #include "soft_switch.h" -#define SWITCH_ADDR     0x21 - -#define NUM_SWITCH      3 -#define IODIRA          0x0 -#define IODIRB          0x1 -#define OLATA           0x14 -#define OLATB           0x15 -  struct switch_config {  	uchar dir0; /* IODIRA */  	uchar dir1; /* IODIRB */ @@ -126,9 +118,8 @@ static int setup_soft_switch(int addr, struct switch_config *config)  	return i2c_write(addr, IODIRB, 1, &config->dir1, 1);  } -int config_switch_bit(int num, int port, int bit, int dir, uchar value) +int config_switch_bit(int addr, int port, int bit, int dir, uchar value)  { -	int addr = SWITCH_ADDR + num;  	int ret, data_reg, dir_reg;  	uchar tmp; diff --git a/board/bf609-ezkit/soft_switch.h b/board/bf609-ezkit/soft_switch.h index 8da0e44dd..d147fe137 100644 --- a/board/bf609-ezkit/soft_switch.h +++ b/board/bf609-ezkit/soft_switch.h @@ -6,8 +6,10 @@   * Licensed under the GPL-2 or later.   */ -#ifndef __SOFT_SWITCH_H__ -#define __SOFT_SWITCH_H__ +#ifndef __BOARD_SOFT_SWITCH_H__ +#define __BOARD_SOFT_SWITCH_H__ + +#include <asm/soft_switch.h>  /* switch 0 port A */  #define CAN_EN                 0x1 @@ -61,11 +63,18 @@  #define PD3_SPI0MOSI_EN        0x1  #define PD4_SPI0CK_EN          0x2 -#define IO_PORT_A              0 -#define IO_PORT_B              1 -#define IO_PORT_INPUT          0 -#define IO_PORT_OUTPUT         1 +#ifdef CONFIG_BFIN_BOARD_VERSION_1_0 +#define SWITCH_ADDR     0x21 +#else +#define SWITCH_ADDR     0x20 +#endif + +#define NUM_SWITCH      3 +#define IODIRA          0x0 +#define IODIRB          0x1 +#define OLATA           0x14 +#define OLATB           0x15 -int config_switch_bit(int num, int port, int bit, int dir, uchar value);  int setup_board_switches(void); -#endif + +#endif /* __BOARD_SOFT_SWITCH_H__ */ diff --git a/common/Makefile b/common/Makefile index 0e0fff1ff..0429a3c51 100644 --- a/common/Makefile +++ b/common/Makefile @@ -164,6 +164,7 @@ COBJS-$(CONFIG_CMD_SF) += cmd_sf.o  COBJS-$(CONFIG_CMD_SCSI) += cmd_scsi.o  COBJS-$(CONFIG_CMD_SHA1SUM) += cmd_sha1sum.o  COBJS-$(CONFIG_CMD_SETEXPR) += cmd_setexpr.o +COBJS-$(CONFIG_CMD_SOFTSWITCH) += cmd_softswitch.o  COBJS-$(CONFIG_CMD_SPI) += cmd_spi.o  COBJS-$(CONFIG_CMD_SPIBOOTLDR) += cmd_spibootldr.o  COBJS-$(CONFIG_CMD_STRINGS) += cmd_strings.o diff --git a/common/cmd_softswitch.c b/common/cmd_softswitch.c new file mode 100644 index 000000000..f75d92677 --- /dev/null +++ b/common/cmd_softswitch.c @@ -0,0 +1,41 @@ +/* + * cmd_softswitch.c - set the softswitch for bf60x + * + * Copyright (c) 2012 Analog Devices Inc. + * + * Licensed under the GPL-2 or later. + */ + +#include <common.h> +#include <command.h> +#include <asm/blackfin.h> +#include <asm/soft_switch.h> + +int do_softswitch(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[]) +{ +	int switchaddr, value, pin, port; + +	if (argc != 5) +		return CMD_RET_USAGE; + +	if (strcmp(argv[2], "GPA") == 0) +		port = IO_PORT_A; +	else if (strcmp(argv[2], "GPB") == 0) +		port = IO_PORT_B; +	else +		return CMD_RET_USAGE; + +	switchaddr = simple_strtoul(argv[1], NULL, 16); +	pin = simple_strtoul(argv[3], NULL, 16); +	value = simple_strtoul(argv[4], NULL, 16); + +	config_switch_bit(switchaddr, port, (1 << pin), IO_PORT_OUTPUT, value); + +	return 0; +} + +U_BOOT_CMD( +	softswitch_output, 5, 1, do_softswitch, +	"switchaddr GPA/GPB pin_offset value", +	"" +); diff --git a/include/configs/bf609-ezkit.h b/include/configs/bf609-ezkit.h index 8b90129f2..f0ac86b8a 100644 --- a/include/configs/bf609-ezkit.h +++ b/include/configs/bf609-ezkit.h @@ -144,6 +144,7 @@  #define CONFIG_UART_CONSOLE	0  #define CONFIG_CMD_MEMORY +#define CONFIG_CMD_SOFTSWITCH  #define CONFIG_SYS_MEMTEST_END (CONFIG_STACKBASE - 20*1024*1024 + 4)  #define CONFIG_BFIN_SOFT_SWITCH |