[U-Boot] [PATCH v1 2/2] blackfin: bf609: add softswitch config command
Sonic Zhang
sonic.adi at gmail.com
Sat May 11 16:50:23 CEST 2013
Hi Tom
On Wed, Feb 27, 2013 at 4:37 PM, Sonic Zhang <sonic.adi at gmail.com> wrote:
> From: Bob Liu <lliubbo at gmail.com>
>
> Add softswitch_output command for bf609-ezkit to enable softswitches.
>
> Signed-off-by: Bob Liu <lliubbo at gmail.com>
> Signed-off-by: Sonic Zhang <sonic.zhang at 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
More information about the U-Boot
mailing list