
Hi Tom
On Wed, Feb 27, 2013 at 4:37 PM, Sonic Zhang sonic.adi@gmail.com wrote:
From: Bob Liu lliubbo@gmail.com
Add softswitch_output command for bf609-ezkit to enable softswitches.
Signed-off-by: Bob Liu lliubbo@gmail.com Signed-off-by: Sonic Zhang sonic.zhang@analog.com
arch/blackfin/include/asm/soft_switch.h | 18 +++++++++++++ board/bf609-ezkit/soft_switch.c | 11 +------- board/bf609-ezkit/soft_switch.h | 25 +++++++++++++------ common/Makefile | 1 + common/cmd_softswitch.c | 41 +++++++++++++++++++++++++++++++ include/configs/bf609-ezkit.h | 1 + 6 files changed, 79 insertions(+), 18 deletions(-) create mode 100644 arch/blackfin/include/asm/soft_switch.h create mode 100644 common/cmd_softswitch.c
diff --git a/arch/blackfin/include/asm/soft_switch.h b/arch/blackfin/include/asm/soft_switch.h new file mode 100644 index 0000000..ff8e44d --- /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 2e1404f..e0c8d93 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 8da0e44..d147fe1 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 54fcc81..80fee78 100644 --- a/common/Makefile +++ b/common/Makefile @@ -157,6 +157,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 0000000..f75d926 --- /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 8b90129..f0ac86b 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
1.7.0.4
This is the patch that include "CONFIG_CMD_SOFTSWITCH". Is this what you think that I forgot to post before?
Regards,
Sonic