* [U-Boot] [PATCH v1 1/2] blackfin: bf609: implement soft switch
@ 2013-02-27 8:37 Sonic Zhang
2013-02-27 8:37 ` [U-Boot] [PATCH v1 2/2] blackfin: bf609: add softswitch config command Sonic Zhang
0 siblings, 1 reply; 4+ messages in thread
From: Sonic Zhang @ 2013-02-27 8:37 UTC (permalink / raw)
To: u-boot
From: Sonic Zhang <sonic.zhang@analog.com>
Set up soft switch pins properly in board init code.
Signed-off-by: Sonic Zhang <sonic.zhang@analog.com>
Signed-off-by: Scott Jiang <scott.jiang@analog.com>
Signed-off-by: Bob Liu <lliubbo@gmail.com>
---
board/bf609-ezkit/soft_switch.c | 180 +++++++++++++++++++++++++++++++++++++++
board/bf609-ezkit/soft_switch.h | 71 +++++++++++++++
2 files changed, 251 insertions(+), 0 deletions(-)
create mode 100644 board/bf609-ezkit/soft_switch.c
create mode 100644 board/bf609-ezkit/soft_switch.h
diff --git a/board/bf609-ezkit/soft_switch.c b/board/bf609-ezkit/soft_switch.c
new file mode 100644
index 0000000..2e1404f
--- /dev/null
+++ b/board/bf609-ezkit/soft_switch.c
@@ -0,0 +1,180 @@
+/*
+ * U-boot - main board file
+ *
+ * Copyright (c) 2008-2011 Analog Devices Inc.
+ *
+ * Licensed under the GPL-2 or later.
+ */
+
+#include <common.h>
+#include <asm/blackfin.h>
+#include <asm/io.h>
+#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 */
+ uchar value0; /* OLATA */
+ uchar value1; /* OLATB */
+};
+
+static struct switch_config switch_config_array[NUM_SWITCH] = {
+ {
+/*
+ U45 Port A U45 Port B
+
+ 7--------------- RMII_CLK_EN | 7--------------- ~TEMP_THERM_EN
+ | 6------------- ~CNT0ZM_EN | | 6------------- ~TEMP_IRQ_EN
+ | | 5----------- ~CNT0DG_EN | | | 5----------- ~UART0CTS_146_EN
+ | | | 4--------- ~CNT0UD_EN | | | | 4--------- ~UART0CTS_RST_EN
+ | | | | 3------- ~CAN0RX_EN | | | | | 3------- ~UART0CTS_RTS_LPBK
+ | | | | | 2----- ~CAN0_ERR_EN | | | | | | 2----- ~UART0CTS_EN
+ | | | | | | 1--- ~CAN_STB | | | | | | | 1--- ~UART0RX_EN
+ | | | | | | | 0- CAN_EN | | | | | | | | 0- ~UART0RTS_EN
+ | | | | | | | | | | | | | | | | |
+ O O O O O O O O | O O O O O O O O (I/O direction)
+ 1 0 0 0 0 0 1 1 | 1 1 1 1 1 0 0 0 (value being set)
+*/
+ .dir0 = 0x0, /* all output */
+ .dir1 = 0x0, /* all output */
+ .value0 = RMII_CLK_EN | CAN_STB | CAN_EN,
+ .value1 = TEMP_THERM_EN | TEMP_IRQ_EN | UART0CTS_146_EN
+ | UART0CTS_RST_EN | UART0CTS_RTS_LPBK,
+ },
+ {
+/*
+ U46 Port A U46 Port B
+
+ 7--------------- ~LED4_GPIO_EN | 7--------------- EMPTY
+ | 6------------- ~LED3_GPIO_EN | | 6------------- ~SPI0D3_EN
+ | | 5----------- ~LED2_GPIO_EN | | | 5----------- ~SPI0D2_EN
+ | | | 4--------- ~LED1_GPIO_EN | | | | 4--------- ~SPIFLASH_CS_EN
+ | | | | 3------- SMC0_LP0_EN | | | | | 3------- ~SD_WP_EN
+ | | | | | 2----- EMPTY | | | | | | 2----- ~SD_CD_EN
+ | | | | | | 1--- SMC0_EPPI2 | | | | | | | 1--- ~PUSHBUTTON2_EN
+ _LP1_SWITCH
+ | | | | | | | 0- OVERRIDE_SMC0 | | | | | | | | 0- ~PUSHBUTTON1_EN
+ _LP0_BOOT
+ | | | | | | | | | | | | | | | | |
+ O O O O O O O O | O O O O O O O O (I/O direction)
+ 0 0 0 0 0 X 0 1 | X 0 0 0 0 0 0 0 (value being set)
+*/
+ .dir0 = 0x0, /* all output */
+ .dir1 = 0x0, /* all output */
+#ifdef CONFIG_BFIN_LINKPORT
+ .value0 = OVERRIDE_SMC0_LP0_BOOT,
+#else
+ .value0 = SMC0_EPPI2_LP1_SWITCH,
+#endif
+ .value1 = 0x0,
+ },
+ {
+/*
+ U47 Port A U47 Port B
+
+ 7--------------- ~PD2_SPI0MISO | 7--------------- EMPTY
+ _EI3_EN
+ | 6------------- ~PD1_SPI0D3 | | 6------------- EMPTY
+ _EPPI1D17
+ _SPI0SEL2
+ _EI3_EN
+ | | 5----------- ~PD0_SPI0D2 | | | 5----------- EMPTY
+ _EPPI1D16
+ _SPI0SEL3
+ _EI3_EN
+ | | | 4--------- ~WAKE_PUSH | | | | 4--------- EMPTY
+ BUTTON_EN
+ | | | | 3------- ~ETHERNET_EN | | | | | 3------- EMPTY
+ | | | | | 2----- PHYAD0 | | | | | | 2----- EMPTY
+ | | | | | | 1--- PHY_PWR | | | | | | | 1--- ~PD4_SPI0CK_EI3_EN
+ _DWN_INT
+ | | | | | | | 0- ~PHYINT_EN | | | | | | | | 0- ~PD3_SPI0MOSI_EI3_EN
+ | | | | | | | | | | | | | | | | |
+ O O O O O I I O | O O O O O O O O (I/O direction)
+ 1 1 1 0 0 0 0 0 | X X X X X X 1 1 (value being set)
+*/
+ .dir0 = 0x6, /* bits 1 and 2 input, all others output */
+ .dir1 = 0x0, /* all output */
+ .value0 = PD1_SPI0D3_EN | PD0_SPI0D2_EN,
+ .value1 = 0,
+ },
+};
+
+static int setup_soft_switch(int addr, struct switch_config *config)
+{
+ int ret = 0;
+
+ ret = i2c_write(addr, OLATA, 1, &config->value0, 1);
+ if (ret)
+ return ret;
+ ret = i2c_write(addr, OLATB, 1, &config->value1, 1);
+ if (ret)
+ return ret;
+
+ ret = i2c_write(addr, IODIRA, 1, &config->dir0, 1);
+ if (ret)
+ return ret;
+ return i2c_write(addr, IODIRB, 1, &config->dir1, 1);
+}
+
+int config_switch_bit(int num, int port, int bit, int dir, uchar value)
+{
+ int addr = SWITCH_ADDR + num;
+ int ret, data_reg, dir_reg;
+ uchar tmp;
+
+ if (port == IO_PORT_A) {
+ data_reg = OLATA;
+ dir_reg = IODIRA;
+ } else {
+ data_reg = OLATB;
+ dir_reg = IODIRB;
+ }
+
+ if (dir == IO_PORT_INPUT) {
+ ret = i2c_read(addr, dir_reg, 1, &tmp, 1);
+ if (ret)
+ return ret;
+ tmp |= bit;
+ return i2c_write(addr, dir_reg, 1, &tmp, 1);
+ } else {
+ ret = i2c_read(addr, data_reg, 1, &tmp, 1);
+ if (ret)
+ return ret;
+ if (value)
+ tmp |= bit;
+ else
+ tmp &= ~bit;
+ ret = i2c_write(addr, data_reg, 1, &tmp, 1);
+ if (ret)
+ return ret;
+ ret = i2c_read(addr, dir_reg, 1, &tmp, 1);
+ if (ret)
+ return ret;
+ tmp &= ~bit;
+ return i2c_write(addr, dir_reg, 1, &tmp, 1);
+ }
+}
+
+int setup_board_switches(void)
+{
+ int ret;
+ int i;
+
+ for (i = 0; i < NUM_SWITCH; i++) {
+ ret = setup_soft_switch(SWITCH_ADDR + i,
+ &switch_config_array[i]);
+ if (ret)
+ return ret;
+ }
+ return 0;
+}
diff --git a/board/bf609-ezkit/soft_switch.h b/board/bf609-ezkit/soft_switch.h
new file mode 100644
index 0000000..8da0e44
--- /dev/null
+++ b/board/bf609-ezkit/soft_switch.h
@@ -0,0 +1,71 @@
+/*
+ * U-boot - main board file
+ *
+ * Copyright (c) 2008-2011 Analog Devices Inc.
+ *
+ * Licensed under the GPL-2 or later.
+ */
+
+#ifndef __SOFT_SWITCH_H__
+#define __SOFT_SWITCH_H__
+
+/* switch 0 port A */
+#define CAN_EN 0x1
+#define CAN_STB 0x2
+#define CAN0_ERR_EN 0x4
+#define CAN0RX_EN 0x8
+#define CNT0UD_EN 0x10
+#define CNT0DG_EN 0x20
+#define CNT0ZM_EN 0x40
+#define RMII_CLK_EN 0x80
+
+/* switch 0 port B */
+#define UART0RTS_EN 0x1
+#define UART0RX_EN 0x2
+#define UART0CTS_EN 0x4
+#define UART0CTS_RTS_LPBK 0x8
+#define UART0CTS_RST_EN 0x10
+#define UART0CTS_146_EN 0x20
+#define TEMP_IRQ_EN 0x40
+#define TEMP_THERM_EN 0x80
+
+/* switch 1 port A */
+#define OVERRIDE_SMC0_LP0_BOOT 0x1
+#define SMC0_EPPI2_LP1_SWITCH 0x2
+#define SMC0_LP0_EN 0x8
+#define LED1_GPIO_EN 0x10
+#define LED2_GPIO_EN 0x20
+#define LED3_GPIO_EN 0x40
+#define LED4_GPIO_EN 0x80
+
+/* switch 1 port B */
+#define PUSHBUTTON1_EN 0x1
+#define PUSHBUTTON2_EN 0x2
+#define SD_CD_EN 0x4
+#define SD_WP_EN 0x8
+#define SPIFLASH_CS_EN 0x10
+#define SPI0D2_EN 0x20
+#define SPI0D3_EN 0x40
+
+/* switch 2 port A */
+#define PHYINT_EN 0x1
+#define PHY_PWR_DWN_INT 0x2
+#define PHYAD0 0x4
+#define ETHERNET_EN 0x8
+#define WAKE_PUSHBUTTON_EN 0x10
+#define PD0_SPI0D2_EN 0x20
+#define PD1_SPI0D3_EN 0x40
+#define PD2_SPI0MISO_EN 0x80
+
+/* switch 2 port B */
+#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
+
+int config_switch_bit(int num, int port, int bit, int dir, uchar value);
+int setup_board_switches(void);
+#endif
--
1.7.0.4
^ permalink raw reply related [flat|nested] 4+ messages in thread
* [U-Boot] [PATCH v1 2/2] blackfin: bf609: add softswitch config command
2013-02-27 8:37 [U-Boot] [PATCH v1 1/2] blackfin: bf609: implement soft switch Sonic Zhang
@ 2013-02-27 8:37 ` Sonic Zhang
2013-05-11 14:50 ` Sonic Zhang
0 siblings, 1 reply; 4+ messages in thread
From: Sonic Zhang @ 2013-02-27 8:37 UTC (permalink / raw)
To: u-boot
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
^ permalink raw reply related [flat|nested] 4+ messages in thread
* [U-Boot] [PATCH v1 2/2] blackfin: bf609: add softswitch config command
2013-02-27 8:37 ` [U-Boot] [PATCH v1 2/2] blackfin: bf609: add softswitch config command Sonic Zhang
@ 2013-05-11 14:50 ` Sonic Zhang
2013-05-13 21:46 ` Tom Rini
0 siblings, 1 reply; 4+ messages in thread
From: Sonic Zhang @ 2013-05-11 14:50 UTC (permalink / raw)
To: u-boot
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
^ permalink raw reply [flat|nested] 4+ messages in thread
* [U-Boot] [PATCH v1 2/2] blackfin: bf609: add softswitch config command
2013-05-11 14:50 ` Sonic Zhang
@ 2013-05-13 21:46 ` Tom Rini
0 siblings, 0 replies; 4+ messages in thread
From: Tom Rini @ 2013-05-13 21:46 UTC (permalink / raw)
To: u-boot
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.
--
Tom
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 836 bytes
Desc: Digital signature
URL: <http://lists.denx.de/pipermail/u-boot/attachments/20130513/f16945e7/attachment.pgp>
^ permalink raw reply [flat|nested] 4+ messages in thread
end of thread, other threads:[~2013-05-13 21:46 UTC | newest]
Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2013-02-27 8:37 [U-Boot] [PATCH v1 1/2] blackfin: bf609: implement soft switch Sonic Zhang
2013-02-27 8:37 ` [U-Boot] [PATCH v1 2/2] blackfin: bf609: add softswitch config command Sonic Zhang
2013-05-11 14:50 ` Sonic Zhang
2013-05-13 21:46 ` Tom Rini
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox