mirror of
https://github.com/AsahiLinux/u-boot
synced 2024-11-10 15:14:43 +00:00
gpio: Drop sx151x driver
This driver is not used in U-Boot. Drop it and its associated CONFIG options. Signed-off-by: Simon Glass <sjg@chromium.org> Reviewed-by: Bin Meng <bmeng.cn@gmail.com> Reviewed-by: Philipp Tomsich <philipp.tomsich@theobroma-systems.com>
This commit is contained in:
parent
00805d7ad8
commit
1c27a4c949
4 changed files with 0 additions and 263 deletions
|
@ -45,7 +45,6 @@ obj-$(CONFIG_BCM2835_GPIO) += bcm2835_gpio.o
|
||||||
obj-$(CONFIG_XILINX_GPIO) += xilinx_gpio.o
|
obj-$(CONFIG_XILINX_GPIO) += xilinx_gpio.o
|
||||||
obj-$(CONFIG_ADI_GPIO2) += adi_gpio2.o
|
obj-$(CONFIG_ADI_GPIO2) += adi_gpio2.o
|
||||||
obj-$(CONFIG_TCA642X) += tca642x.o
|
obj-$(CONFIG_TCA642X) += tca642x.o
|
||||||
oby-$(CONFIG_SX151X) += sx151x.o
|
|
||||||
obj-$(CONFIG_SUNXI_GPIO) += sunxi_gpio.o
|
obj-$(CONFIG_SUNXI_GPIO) += sunxi_gpio.o
|
||||||
obj-$(CONFIG_LPC32XX_GPIO) += lpc32xx_gpio.o
|
obj-$(CONFIG_LPC32XX_GPIO) += lpc32xx_gpio.o
|
||||||
obj-$(CONFIG_STM32_GPIO) += stm32_gpio.o
|
obj-$(CONFIG_STM32_GPIO) += stm32_gpio.o
|
||||||
|
|
|
@ -1,242 +0,0 @@
|
||||||
/*
|
|
||||||
* (C) Copyright 2013
|
|
||||||
* Viktar Palstsiuk, Promwad, viktar.palstsiuk@promwad.com
|
|
||||||
*
|
|
||||||
* SPDX-License-Identifier: GPL-2.0+
|
|
||||||
*/
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Driver for Semtech SX151x SPI GPIO Expanders
|
|
||||||
*/
|
|
||||||
|
|
||||||
#include <common.h>
|
|
||||||
#include <spi.h>
|
|
||||||
#include <sx151x.h>
|
|
||||||
|
|
||||||
#ifndef CONFIG_SX151X_SPI_BUS
|
|
||||||
#define CONFIG_SX151X_SPI_BUS 0
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/*
|
|
||||||
* The SX151x registers
|
|
||||||
*/
|
|
||||||
|
|
||||||
#ifdef CONFIG_SX151X_GPIO_COUNT_8
|
|
||||||
/* 8bit: SX1511 */
|
|
||||||
#define SX151X_REG_DIR 0x07
|
|
||||||
#define SX151X_REG_DATA 0x08
|
|
||||||
#else
|
|
||||||
/* 16bit: SX1512 */
|
|
||||||
#define SX151X_REG_DIR 0x0F
|
|
||||||
#define SX151X_REG_DATA 0x11
|
|
||||||
#endif
|
|
||||||
#define SX151X_REG_RESET 0x7D
|
|
||||||
|
|
||||||
static int sx151x_spi_write(int chip, unsigned char reg, unsigned char val)
|
|
||||||
{
|
|
||||||
struct spi_slave *slave;
|
|
||||||
unsigned char buf[2];
|
|
||||||
int ret;
|
|
||||||
|
|
||||||
slave = spi_setup_slave(CONFIG_SX151X_SPI_BUS, chip, 1000000,
|
|
||||||
SPI_MODE_0);
|
|
||||||
if (!slave)
|
|
||||||
return 0;
|
|
||||||
|
|
||||||
spi_claim_bus(slave);
|
|
||||||
|
|
||||||
buf[0] = reg;
|
|
||||||
buf[1] = val;
|
|
||||||
|
|
||||||
ret = spi_xfer(slave, 16, buf, NULL, SPI_XFER_BEGIN | SPI_XFER_END);
|
|
||||||
if (ret < 0)
|
|
||||||
printf("spi%d.%d write fail: can't write %02x to %02x: %d\n",
|
|
||||||
CONFIG_SX151X_SPI_BUS, chip, val, reg, ret);
|
|
||||||
else
|
|
||||||
printf("spi%d.%d write 0x%02x to register 0x%02x\n",
|
|
||||||
CONFIG_SX151X_SPI_BUS, chip, val, reg);
|
|
||||||
spi_release_bus(slave);
|
|
||||||
spi_free_slave(slave);
|
|
||||||
|
|
||||||
return ret;
|
|
||||||
}
|
|
||||||
|
|
||||||
static int sx151x_spi_read(int chip, unsigned char reg)
|
|
||||||
{
|
|
||||||
struct spi_slave *slave;
|
|
||||||
int ret;
|
|
||||||
|
|
||||||
slave = spi_setup_slave(CONFIG_SX151X_SPI_BUS, chip, 1000000,
|
|
||||||
SPI_MODE_0);
|
|
||||||
if (!slave)
|
|
||||||
return 0;
|
|
||||||
|
|
||||||
spi_claim_bus(slave);
|
|
||||||
|
|
||||||
ret = spi_w8r8(slave, reg | 0x80);
|
|
||||||
if (ret < 0)
|
|
||||||
printf("spi%d.%d read fail: can't read %02x: %d\n",
|
|
||||||
CONFIG_SX151X_SPI_BUS, chip, reg, ret);
|
|
||||||
else
|
|
||||||
printf("spi%d.%d read register 0x%02x: 0x%02x\n",
|
|
||||||
CONFIG_SX151X_SPI_BUS, chip, reg, ret);
|
|
||||||
|
|
||||||
spi_release_bus(slave);
|
|
||||||
spi_free_slave(slave);
|
|
||||||
|
|
||||||
return ret;
|
|
||||||
}
|
|
||||||
|
|
||||||
static inline void sx151x_find_cfg(int gpio, unsigned char *reg, unsigned char *mask)
|
|
||||||
{
|
|
||||||
*reg -= gpio / 8;
|
|
||||||
*mask = 1 << (gpio % 8);
|
|
||||||
}
|
|
||||||
|
|
||||||
static int sx151x_write_cfg(int chip, unsigned char gpio, unsigned char reg, int val)
|
|
||||||
{
|
|
||||||
unsigned char mask;
|
|
||||||
unsigned char data;
|
|
||||||
int ret;
|
|
||||||
|
|
||||||
sx151x_find_cfg(gpio, ®, &mask);
|
|
||||||
ret = sx151x_spi_read(chip, reg);
|
|
||||||
if (ret < 0)
|
|
||||||
return ret;
|
|
||||||
else
|
|
||||||
data = ret;
|
|
||||||
data &= ~mask;
|
|
||||||
data |= (val << (gpio % 8)) & mask;
|
|
||||||
return sx151x_spi_write(chip, reg, data);
|
|
||||||
}
|
|
||||||
|
|
||||||
int sx151x_get_value(int chip, int gpio)
|
|
||||||
{
|
|
||||||
unsigned char reg = SX151X_REG_DATA;
|
|
||||||
unsigned char mask;
|
|
||||||
int ret;
|
|
||||||
|
|
||||||
sx151x_find_cfg(gpio, ®, &mask);
|
|
||||||
ret = sx151x_spi_read(chip, reg);
|
|
||||||
if (ret >= 0)
|
|
||||||
ret = (ret & mask) != 0 ? 1 : 0;
|
|
||||||
|
|
||||||
return ret;
|
|
||||||
}
|
|
||||||
|
|
||||||
int sx151x_set_value(int chip, int gpio, int val)
|
|
||||||
{
|
|
||||||
return sx151x_write_cfg(chip, gpio, SX151X_REG_DATA, (val ? 1 : 0));
|
|
||||||
}
|
|
||||||
|
|
||||||
int sx151x_direction_input(int chip, int gpio)
|
|
||||||
{
|
|
||||||
return sx151x_write_cfg(chip, gpio, SX151X_REG_DIR, 1);
|
|
||||||
}
|
|
||||||
|
|
||||||
int sx151x_direction_output(int chip, int gpio)
|
|
||||||
{
|
|
||||||
return sx151x_write_cfg(chip, gpio, SX151X_REG_DIR, 0);
|
|
||||||
}
|
|
||||||
|
|
||||||
int sx151x_reset(int chip)
|
|
||||||
{
|
|
||||||
int err;
|
|
||||||
|
|
||||||
err = sx151x_spi_write(chip, SX151X_REG_RESET, 0x12);
|
|
||||||
if (err < 0)
|
|
||||||
return err;
|
|
||||||
|
|
||||||
err = sx151x_spi_write(chip, SX151X_REG_RESET, 0x34);
|
|
||||||
return err;
|
|
||||||
}
|
|
||||||
|
|
||||||
#ifdef CONFIG_CMD_SX151X
|
|
||||||
|
|
||||||
int do_sx151x(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
|
|
||||||
{
|
|
||||||
int ret = CMD_RET_USAGE, chip = 0, gpio = 0, val = 0;
|
|
||||||
|
|
||||||
if (argc < 3)
|
|
||||||
return CMD_RET_USAGE;
|
|
||||||
|
|
||||||
/* arg2 used as chip number */
|
|
||||||
chip = simple_strtoul(argv[2], NULL, 10);
|
|
||||||
|
|
||||||
if (strcmp(argv[1], "reset") == 0) {
|
|
||||||
ret = sx151x_reset(chip);
|
|
||||||
if (!ret) {
|
|
||||||
printf("Device at spi%d.%d was reset\n",
|
|
||||||
CONFIG_SX151X_SPI_BUS, chip);
|
|
||||||
}
|
|
||||||
return ret;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (argc < 4)
|
|
||||||
return CMD_RET_USAGE;
|
|
||||||
|
|
||||||
/* arg3 used as gpio number */
|
|
||||||
gpio = simple_strtoul(argv[3], NULL, 10);
|
|
||||||
|
|
||||||
if (strcmp(argv[1], "get") == 0) {
|
|
||||||
ret = sx151x_get_value(chip, gpio);
|
|
||||||
if (ret < 0)
|
|
||||||
printf("Failed to get value at spi%d.%d gpio %d\n",
|
|
||||||
CONFIG_SX151X_SPI_BUS, chip, gpio);
|
|
||||||
else {
|
|
||||||
printf("Value at spi%d.%d gpio %d is %d\n",
|
|
||||||
CONFIG_SX151X_SPI_BUS, chip, gpio, ret);
|
|
||||||
ret = 0;
|
|
||||||
}
|
|
||||||
return ret;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (argc < 5)
|
|
||||||
return CMD_RET_USAGE;
|
|
||||||
|
|
||||||
/* arg4 used as value or direction */
|
|
||||||
val = simple_strtoul(argv[4], NULL, 10);
|
|
||||||
|
|
||||||
if (strcmp(argv[1], "set") == 0) {
|
|
||||||
ret = sx151x_set_value(chip, gpio, val);
|
|
||||||
if (ret < 0)
|
|
||||||
printf("Failed to set value at spi%d.%d gpio %d\n",
|
|
||||||
CONFIG_SX151X_SPI_BUS, chip, gpio);
|
|
||||||
else
|
|
||||||
printf("New value at spi%d.%d gpio %d is %d\n",
|
|
||||||
CONFIG_SX151X_SPI_BUS, chip, gpio, val);
|
|
||||||
return ret;
|
|
||||||
} else if (strcmp(argv[1], "dir") == 0) {
|
|
||||||
if (val == 0)
|
|
||||||
ret = sx151x_direction_output(chip, gpio);
|
|
||||||
else
|
|
||||||
ret = sx151x_direction_input(chip, gpio);
|
|
||||||
|
|
||||||
if (ret < 0)
|
|
||||||
printf("Failed to set direction of spi%d.%d gpio %d\n",
|
|
||||||
CONFIG_SX151X_SPI_BUS, chip, gpio);
|
|
||||||
else
|
|
||||||
printf("New direction of spi%d.%d gpio %d is %d\n",
|
|
||||||
CONFIG_SX151X_SPI_BUS, chip, gpio, val);
|
|
||||||
return ret;
|
|
||||||
}
|
|
||||||
|
|
||||||
printf("Please see usage\n");
|
|
||||||
|
|
||||||
return ret;
|
|
||||||
}
|
|
||||||
|
|
||||||
U_BOOT_CMD(
|
|
||||||
sx151x, 5, 1, do_sx151x,
|
|
||||||
"sx151x gpio access",
|
|
||||||
"dir chip gpio 0|1\n"
|
|
||||||
" - set gpio direction (0 for output, 1 for input)\n"
|
|
||||||
"sx151x get chip gpio\n"
|
|
||||||
" - get gpio value\n"
|
|
||||||
"sx151x set chip gpio 0|1\n"
|
|
||||||
" - set gpio value\n"
|
|
||||||
"sx151x reset chip\n"
|
|
||||||
" - reset chip"
|
|
||||||
);
|
|
||||||
|
|
||||||
#endif /* CONFIG_CMD_SX151X */
|
|
|
@ -1,17 +0,0 @@
|
||||||
/*
|
|
||||||
* (C) Copyright 2013
|
|
||||||
* Viktar Palstsiuk, Promwad, viktar.palstsiuk@promwad.com
|
|
||||||
*
|
|
||||||
* SPDX-License-Identifier: GPL-2.0+
|
|
||||||
*/
|
|
||||||
|
|
||||||
#ifndef __SX151X_H_
|
|
||||||
#define __SX151X_H_
|
|
||||||
|
|
||||||
int sx151x_get_value(int chip, int gpio);
|
|
||||||
int sx151x_set_value(int chip, int gpio, int val);
|
|
||||||
int sx151x_direction_input(int chip, int gpio);
|
|
||||||
int sx151x_direction_output(int chip, int gpio);
|
|
||||||
int sx151x_reset(int chip);
|
|
||||||
|
|
||||||
#endif /* __SX151X_H_ */
|
|
|
@ -293,7 +293,6 @@ CONFIG_CM922T_XA10
|
||||||
CONFIG_CMDLINE_EDITING
|
CONFIG_CMDLINE_EDITING
|
||||||
CONFIG_CMDLINE_PS_SUPPORT
|
CONFIG_CMDLINE_PS_SUPPORT
|
||||||
CONFIG_CMDLINE_TAG
|
CONFIG_CMDLINE_TAG
|
||||||
CONFIG_CMD_SX151X
|
|
||||||
CONFIG_CMD_TCA642X
|
CONFIG_CMD_TCA642X
|
||||||
CONFIG_CMD_TERMINAL
|
CONFIG_CMD_TERMINAL
|
||||||
CONFIG_CMD_TFTP
|
CONFIG_CMD_TFTP
|
||||||
|
@ -2335,8 +2334,6 @@ CONFIG_SUPPORT_EMMC_RPMB
|
||||||
CONFIG_SUPPORT_RAW_INITRD
|
CONFIG_SUPPORT_RAW_INITRD
|
||||||
CONFIG_SUPPORT_VFAT
|
CONFIG_SUPPORT_VFAT
|
||||||
CONFIG_SUVD3
|
CONFIG_SUVD3
|
||||||
CONFIG_SX151X_GPIO_COUNT_8
|
|
||||||
CONFIG_SX151X_SPI_BUS
|
|
||||||
CONFIG_SXNI855T
|
CONFIG_SXNI855T
|
||||||
CONFIG_SYSCOUNTER_TIMER
|
CONFIG_SYSCOUNTER_TIMER
|
||||||
CONFIG_SYSFLAGS_ADDR
|
CONFIG_SYSFLAGS_ADDR
|
||||||
|
|
Loading…
Reference in a new issue