blackfin: bf609: add softswitch config command
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>utp
parent
e7b9aa96b1
commit
7d861d95a3
1
README
1
README
|
@ -898,6 +898,7 @@ The following options need to be configured:
|
||||||
CONFIG_CMD_SF * Read/write/erase SPI NOR flash
|
CONFIG_CMD_SF * Read/write/erase SPI NOR flash
|
||||||
CONFIG_CMD_SHA1SUM print sha1 memory digest
|
CONFIG_CMD_SHA1SUM print sha1 memory digest
|
||||||
(requires CONFIG_CMD_MEMORY)
|
(requires CONFIG_CMD_MEMORY)
|
||||||
|
CONFIG_CMD_SOFTSWITCH * Soft switch setting command for BF60x
|
||||||
CONFIG_CMD_SOURCE "source" command Support
|
CONFIG_CMD_SOURCE "source" command Support
|
||||||
CONFIG_CMD_SPI * SPI serial bus support
|
CONFIG_CMD_SPI * SPI serial bus support
|
||||||
CONFIG_CMD_TFTPSRV * TFTP transfer in server mode
|
CONFIG_CMD_TFTPSRV * TFTP transfer in server mode
|
||||||
|
|
|
@ -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
|
|
@ -12,14 +12,6 @@
|
||||||
#include <i2c.h>
|
#include <i2c.h>
|
||||||
#include "soft_switch.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 {
|
struct switch_config {
|
||||||
uchar dir0; /* IODIRA */
|
uchar dir0; /* IODIRA */
|
||||||
uchar dir1; /* IODIRB */
|
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);
|
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;
|
int ret, data_reg, dir_reg;
|
||||||
uchar tmp;
|
uchar tmp;
|
||||||
|
|
||||||
|
|
|
@ -6,8 +6,10 @@
|
||||||
* Licensed under the GPL-2 or later.
|
* Licensed under the GPL-2 or later.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#ifndef __SOFT_SWITCH_H__
|
#ifndef __BOARD_SOFT_SWITCH_H__
|
||||||
#define __SOFT_SWITCH_H__
|
#define __BOARD_SOFT_SWITCH_H__
|
||||||
|
|
||||||
|
#include <asm/soft_switch.h>
|
||||||
|
|
||||||
/* switch 0 port A */
|
/* switch 0 port A */
|
||||||
#define CAN_EN 0x1
|
#define CAN_EN 0x1
|
||||||
|
@ -61,11 +63,18 @@
|
||||||
#define PD3_SPI0MOSI_EN 0x1
|
#define PD3_SPI0MOSI_EN 0x1
|
||||||
#define PD4_SPI0CK_EN 0x2
|
#define PD4_SPI0CK_EN 0x2
|
||||||
|
|
||||||
#define IO_PORT_A 0
|
#ifdef CONFIG_BFIN_BOARD_VERSION_1_0
|
||||||
#define IO_PORT_B 1
|
#define SWITCH_ADDR 0x21
|
||||||
#define IO_PORT_INPUT 0
|
#else
|
||||||
#define IO_PORT_OUTPUT 1
|
#define SWITCH_ADDR 0x20
|
||||||
|
|
||||||
int config_switch_bit(int num, int port, int bit, int dir, uchar value);
|
|
||||||
int setup_board_switches(void);
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#define NUM_SWITCH 3
|
||||||
|
#define IODIRA 0x0
|
||||||
|
#define IODIRB 0x1
|
||||||
|
#define OLATA 0x14
|
||||||
|
#define OLATB 0x15
|
||||||
|
|
||||||
|
int setup_board_switches(void);
|
||||||
|
|
||||||
|
#endif /* __BOARD_SOFT_SWITCH_H__ */
|
||||||
|
|
|
@ -164,6 +164,7 @@ COBJS-$(CONFIG_CMD_SF) += cmd_sf.o
|
||||||
COBJS-$(CONFIG_CMD_SCSI) += cmd_scsi.o
|
COBJS-$(CONFIG_CMD_SCSI) += cmd_scsi.o
|
||||||
COBJS-$(CONFIG_CMD_SHA1SUM) += cmd_sha1sum.o
|
COBJS-$(CONFIG_CMD_SHA1SUM) += cmd_sha1sum.o
|
||||||
COBJS-$(CONFIG_CMD_SETEXPR) += cmd_setexpr.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_SPI) += cmd_spi.o
|
||||||
COBJS-$(CONFIG_CMD_SPIBOOTLDR) += cmd_spibootldr.o
|
COBJS-$(CONFIG_CMD_SPIBOOTLDR) += cmd_spibootldr.o
|
||||||
COBJS-$(CONFIG_CMD_STRINGS) += cmd_strings.o
|
COBJS-$(CONFIG_CMD_STRINGS) += cmd_strings.o
|
||||||
|
|
|
@ -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",
|
||||||
|
""
|
||||||
|
);
|
|
@ -144,6 +144,7 @@
|
||||||
#define CONFIG_UART_CONSOLE 0
|
#define CONFIG_UART_CONSOLE 0
|
||||||
|
|
||||||
#define CONFIG_CMD_MEMORY
|
#define CONFIG_CMD_MEMORY
|
||||||
|
#define CONFIG_CMD_SOFTSWITCH
|
||||||
|
|
||||||
#define CONFIG_SYS_MEMTEST_END (CONFIG_STACKBASE - 20*1024*1024 + 4)
|
#define CONFIG_SYS_MEMTEST_END (CONFIG_STACKBASE - 20*1024*1024 + 4)
|
||||||
#define CONFIG_BFIN_SOFT_SWITCH
|
#define CONFIG_BFIN_SOFT_SWITCH
|
||||||
|
|
Loading…
Reference in New Issue