[U-Boot] [PATCH 04/25] dm: spi: Move cmd device code into its own function

Jagan Teki jagannadh.teki at gmail.com
Mon Aug 25 20:31:54 CEST 2014


On 15 July 2014 06:26, Simon Glass <sjg at chromium.org> wrote:
> In preparation for changing the error handling in this code for driver
> model, move it into its own function.
>
> Signed-off-by: Simon Glass <sjg at chromium.org>
> ---
>
>  common/cmd_spi.c | 53 ++++++++++++++++++++++++++++++++---------------------
>  1 file changed, 32 insertions(+), 21 deletions(-)
>

Reviewed-by: Jagannadha Sutradharudu Teki <jaganna at xilinx.com>

> diff --git a/common/cmd_spi.c b/common/cmd_spi.c
> index 3c8e913..be5709c 100644
> --- a/common/cmd_spi.c
> +++ b/common/cmd_spi.c
> @@ -11,6 +11,7 @@
>
>  #include <common.h>
>  #include <command.h>
> +#include <errno.h>
>  #include <spi.h>
>
>  /*-----------------------------------------------------------------------
> @@ -38,6 +39,35 @@ static int                   bitlen;
>  static uchar           dout[MAX_SPI_BYTES];
>  static uchar           din[MAX_SPI_BYTES];
>
> +static int do_spi_xfer(int bus, int cs)
> +{
> +       struct spi_slave *slave;
> +       int rcode = 0;
> +
> +       slave = spi_setup_slave(bus, cs, 1000000, mode);
> +       if (!slave) {
> +               printf("Invalid device %d:%d\n", bus, cs);
> +               return -EINVAL;
> +       }
> +
> +       spi_claim_bus(slave);
> +       if (spi_xfer(slave, bitlen, dout, din,
> +                    SPI_XFER_BEGIN | SPI_XFER_END) != 0) {
> +               printf("Error during SPI transaction\n");
> +               rcode = -EIO;
> +       } else {
> +               int j;
> +
> +               for (j = 0; j < ((bitlen + 7) / 8); j++)
> +                       printf("%02X", din[j]);
> +               printf("\n");
> +       }
> +       spi_release_bus(slave);
> +       spi_free_slave(slave);
> +
> +       return rcode;
> +}
> +
>  /*
>   * SPI read/write
>   *
> @@ -51,11 +81,9 @@ static uchar                 din[MAX_SPI_BYTES];
>
>  int do_spi (cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
>  {
> -       struct spi_slave *slave;
>         char  *cp = 0;
>         uchar tmp;
>         int   j;
> -       int   rcode = 0;
>
>         /*
>          * We use the last specified parameters, unless new ones are
> @@ -103,27 +131,10 @@ int do_spi (cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
>                 return 1;
>         }
>
> -       slave = spi_setup_slave(bus, cs, 1000000, mode);
> -       if (!slave) {
> -               printf("Invalid device %d:%d\n", bus, cs);
> +       if (do_spi_xfer(bus, cs))
>                 return 1;
> -       }
> -
> -       spi_claim_bus(slave);
> -       if(spi_xfer(slave, bitlen, dout, din,
> -                               SPI_XFER_BEGIN | SPI_XFER_END) != 0) {
> -               printf("Error during SPI transaction\n");
> -               rcode = 1;
> -       } else {
> -               for(j = 0; j < ((bitlen + 7) / 8); j++) {
> -                       printf("%02X", din[j]);
> -               }
> -               printf("\n");
> -       }
> -       spi_release_bus(slave);
> -       spi_free_slave(slave);
>
> -       return rcode;
> +       return 0;
>  }
>
>  /***************************************************/
> --
> 2.0.0.526.g5318336
>

thanks!
-- 
Jagan.


More information about the U-Boot mailing list