[U-Boot] [PATCH] sh_spi: Add 4 chip select signals supporting
Nobuhiro Iwamatsu
iwamatsu at nigauri.org
Wed Mar 21 03:56:01 CET 2012
Applied. Thanks,
Nobuhiro
2012/3/6 Shimoda, Yoshihiro <yoshihiro.shimoda.uh at renesas.com>:
> The module has 4 chip select signals. This patch supports it.
>
> Signed-off-by: Yoshihiro Shimoda <yoshihiro.shimoda.uh at renesas.com>
> ---
> drivers/spi/sh_spi.c | 19 ++++++++++++++++---
> drivers/spi/sh_spi.h | 4 +++-
> 2 files changed, 19 insertions(+), 4 deletions(-)
>
> diff --git a/drivers/spi/sh_spi.c b/drivers/spi/sh_spi.c
> index 78c7f1a..e944b23 100644
> --- a/drivers/spi/sh_spi.c
> +++ b/drivers/spi/sh_spi.c
> @@ -1,7 +1,7 @@
> /*
> * 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
> * 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,
> 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);
> /* CR3 init */
> sh_spi_write(0x00, &ss->regs->cr3);
> + sh_spi_set_cs(ss, cs);
>
> 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)
> {
> - /* This driver supports "bus = 0" and "cs = 0" only. */
> - if (!bus && !cs)
> + if (!bus && cs < SH_SPI_NUM_CS)
> return 1;
> else
> return 0;
> diff --git a/drivers/spi/sh_spi.h b/drivers/spi/sh_spi.h
> index dd8f937..96b4b68 100644
> --- a/drivers/spi/sh_spi.h
> +++ b/drivers/spi/sh_spi.h
> @@ -60,10 +60,12 @@ struct sh_spi_regs {
> #define SH_SPI_TBFI 0x40
> #define SH_SPI_RBEI 0x20
> #define SH_SPI_RBFI 0x10
> +#define SH_SPI_SSS1 0x08
> #define SH_SPI_WPABRT 0x04
> -#define SH_SPI_SSS 0x01
> +#define SH_SPI_SSS0 0x01
>
> #define SH_SPI_FIFO_SIZE 32
> +#define SH_SPI_NUM_CS 4
>
> struct sh_spi {
> struct spi_slave slave;
> --
> 1.7.1
>
> _______________________________________________
> U-Boot mailing list
> U-Boot at lists.denx.de
> http://lists.denx.de/mailman/listinfo/u-boot
--
Nobuhiro Iwamatsu
iwamatsu at {nigauri.org / debian.org}
GPG ID: 40AD1FA6
More information about the U-Boot
mailing list