mirror of
https://github.com/Stichting-MINIX-Research-Foundation/u-boot.git
synced 2025-09-11 05:02:26 -04:00
sh_spi: Add 4 chip select signals supporting
The module has 4 chip select signals. This patch supports it. Signed-off-by: Yoshihiro Shimoda <yoshihiro.shimoda.uh@renesas.com> Signed-off-by: Nobuhiro Iwamatsu <iwamatsu@nigauri.org>
This commit is contained in:
parent
566f63d5cf
commit
c1d4ad9417
@ -1,7 +1,7 @@
|
|||||||
/*
|
/*
|
||||||
* SH SPI driver
|
* SH SPI driver
|
||||||
*
|
*
|
||||||
* Copyright (C) 2011 Renesas Solutions Corp.
|
* Copyright (C) 2011-2012 Renesas Solutions Corp.
|
||||||
*
|
*
|
||||||
* This program is free software; you can redistribute it and/or modify
|
* This program is free software; you can redistribute it and/or modify
|
||||||
* it under the terms of the GNU General Public License as published by
|
* it under the terms of the GNU General Public License as published by
|
||||||
@ -82,6 +82,19 @@ void spi_init(void)
|
|||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void sh_spi_set_cs(struct sh_spi *ss, unsigned int cs)
|
||||||
|
{
|
||||||
|
unsigned long val = 0;
|
||||||
|
|
||||||
|
if (cs & 0x01)
|
||||||
|
val |= SH_SPI_SSS0;
|
||||||
|
if (cs & 0x02)
|
||||||
|
val |= SH_SPI_SSS1;
|
||||||
|
|
||||||
|
sh_spi_clear_bit(SH_SPI_SSS0 | SH_SPI_SSS1, &ss->regs->cr4);
|
||||||
|
sh_spi_set_bit(val, &ss->regs->cr4);
|
||||||
|
}
|
||||||
|
|
||||||
struct spi_slave *spi_setup_slave(unsigned int bus, unsigned int cs,
|
struct spi_slave *spi_setup_slave(unsigned int bus, unsigned int cs,
|
||||||
unsigned int max_hz, unsigned int mode)
|
unsigned int max_hz, unsigned int mode)
|
||||||
{
|
{
|
||||||
@ -104,6 +117,7 @@ struct spi_slave *spi_setup_slave(unsigned int bus, unsigned int cs,
|
|||||||
sh_spi_write(0x00, &ss->regs->cr1);
|
sh_spi_write(0x00, &ss->regs->cr1);
|
||||||
/* CR3 init */
|
/* CR3 init */
|
||||||
sh_spi_write(0x00, &ss->regs->cr3);
|
sh_spi_write(0x00, &ss->regs->cr3);
|
||||||
|
sh_spi_set_cs(ss, cs);
|
||||||
|
|
||||||
clear_fifo(ss);
|
clear_fifo(ss);
|
||||||
|
|
||||||
@ -242,8 +256,7 @@ int spi_xfer(struct spi_slave *slave, unsigned int bitlen, const void *dout,
|
|||||||
|
|
||||||
int spi_cs_is_valid(unsigned int bus, unsigned int cs)
|
int spi_cs_is_valid(unsigned int bus, unsigned int cs)
|
||||||
{
|
{
|
||||||
/* This driver supports "bus = 0" and "cs = 0" only. */
|
if (!bus && cs < SH_SPI_NUM_CS)
|
||||||
if (!bus && !cs)
|
|
||||||
return 1;
|
return 1;
|
||||||
else
|
else
|
||||||
return 0;
|
return 0;
|
||||||
|
@ -60,10 +60,12 @@ struct sh_spi_regs {
|
|||||||
#define SH_SPI_TBFI 0x40
|
#define SH_SPI_TBFI 0x40
|
||||||
#define SH_SPI_RBEI 0x20
|
#define SH_SPI_RBEI 0x20
|
||||||
#define SH_SPI_RBFI 0x10
|
#define SH_SPI_RBFI 0x10
|
||||||
|
#define SH_SPI_SSS1 0x08
|
||||||
#define SH_SPI_WPABRT 0x04
|
#define SH_SPI_WPABRT 0x04
|
||||||
#define SH_SPI_SSS 0x01
|
#define SH_SPI_SSS0 0x01
|
||||||
|
|
||||||
#define SH_SPI_FIFO_SIZE 32
|
#define SH_SPI_FIFO_SIZE 32
|
||||||
|
#define SH_SPI_NUM_CS 4
|
||||||
|
|
||||||
struct sh_spi {
|
struct sh_spi {
|
||||||
struct spi_slave slave;
|
struct spi_slave slave;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user