[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