Patchwork [U-Boot,v1,2/2] blackfin: bf609: add softswitch config command

login
register
mail settings
Submitter Sonic Zhang
Date Feb. 27, 2013, 8:37 a.m.
Message ID <1361954276-9657-2-git-send-email-sonic.adi@gmail.com>
Download mbox | patch
Permalink /patch/223551/
State Accepted
Delegated to: Sonic Zhang
Headers show

Comments

Sonic Zhang - Feb. 27, 2013, 8:37 a.m.
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
Sonic Zhang - May 11, 2013, 2:50 p.m.
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
Tom Rini - May 13, 2013, 9:46 p.m.
On Sat, May 11, 2013 at 10:50:23PM +0800, Sonic Zhang wrote:
> 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?

Yes, thanks.  And it looks fine, aside from not updating the README.

Patch

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