mirror of
https://github.com/AsahiLinux/u-boot
synced 2024-11-10 15:14:43 +00:00
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>
This commit is contained in:
parent
e7b9aa96b1
commit
7d861d95a3
7 changed files with 81 additions and 19 deletions
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_SHA1SUM print sha1 memory digest
|
||||
(requires CONFIG_CMD_MEMORY)
|
||||
CONFIG_CMD_SOFTSWITCH * Soft switch setting command for BF60x
|
||||
CONFIG_CMD_SOURCE "source" command Support
|
||||
CONFIG_CMD_SPI * SPI serial bus support
|
||||
CONFIG_CMD_TFTPSRV * TFTP transfer in server mode
|
||||
|
|
18
arch/blackfin/include/asm/soft_switch.h
Normal file
18
arch/blackfin/include/asm/soft_switch.h
Normal file
|
@ -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 "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;
|
||||
|
||||
|
|
|
@ -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
|
||||
|
||||
int config_switch_bit(int num, int port, int bit, int dir, uchar value);
|
||||
int setup_board_switches(void);
|
||||
#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 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_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
|
||||
|
|
41
common/cmd_softswitch.c
Normal file
41
common/cmd_softswitch.c
Normal file
|
@ -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_CMD_MEMORY
|
||||
#define CONFIG_CMD_SOFTSWITCH
|
||||
|
||||
#define CONFIG_SYS_MEMTEST_END (CONFIG_STACKBASE - 20*1024*1024 + 4)
|
||||
#define CONFIG_BFIN_SOFT_SWITCH
|
||||
|
|
Loading…
Reference in a new issue