[U-Boot] [PATCH v2] cmd: sspi: Add an additional argument to set the bus frequency

Jagan Teki jagan at amarulasolutions.com
Sat Feb 25 08:54:10 UTC 2017


On Fri, Feb 17, 2017 at 11:40 PM, Philipp Tomsich
<philipp.tomsich at theobroma-systems.com> wrote:
> The spi command is rather useful for board verification, bring-up and
> software testing.  One use in our lab is the testing of the clock
> code, which requires the ability to send data at different SPI clocks.
>
> The changeset adds an additional (optional) positional argument to the
> 'spi' command that allows the selection of a SPI clock for
> communication (the previous default of 1MHz is retained, if the
> argument is omitted).
>
> Signed-off-by: Philipp Tomsich <philipp.tomsich at theobroma-systems.com>
> ---
>  cmd/spi.c | 20 +++++++++++++-------
>  1 file changed, 13 insertions(+), 7 deletions(-)
>
> diff --git a/cmd/spi.c b/cmd/spi.c
> index f16ef9a..1cd2ebc 100644
> --- a/cmd/spi.c
> +++ b/cmd/spi.c
> @@ -30,6 +30,8 @@
>  #   define CONFIG_DEFAULT_SPI_MODE     SPI_MODE_0
>  #endif
>
> +#define SSPI_DEFAULT_HZ  1000000
> +
>  /*
>   * Values from last command.
>   */
> @@ -40,7 +42,7 @@ static int            bitlen;
>  static uchar           dout[MAX_SPI_BYTES];
>  static uchar           din[MAX_SPI_BYTES];
>
> -static int do_spi_xfer(int bus, int cs)
> +static int do_spi_xfer(int bus, int cs, unsigned int hz)
>  {
>         struct spi_slave *slave;
>         int ret = 0;
> @@ -53,12 +55,12 @@ static int do_spi_xfer(int bus, int cs)
>         str = strdup(name);
>         if (!str)
>                 return -ENOMEM;
> -       ret = spi_get_bus_and_cs(bus, cs, 1000000, mode, "spi_generic_drv",
> +       ret = spi_get_bus_and_cs(bus, cs, hz, mode, "spi_generic_drv",
>                                  str, &dev, &slave);
>         if (ret)
>                 return ret;
>  #else
> -       slave = spi_setup_slave(bus, cs, 1000000, mode);
> +       slave = spi_setup_slave(bus, cs, hz, mode);
>         if (!slave) {
>                 printf("Invalid device %d:%d\n", bus, cs);
>                 return -EINVAL;
> @@ -109,6 +111,7 @@ int do_spi (cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
>         char  *cp = 0;
>         uchar tmp;
>         int   j;
> +       unsigned int hz = SSPI_DEFAULT_HZ;

Default value for DM_SPI is from DT, so assign 0 for DM_SPI.

thanks!
-- 
Jagan Teki
Senior Linux Kernel Engineer | Amarula Solutions
U-Boot, Linux | Upstream Maintainer
Hyderabad, India.


More information about the U-Boot mailing list