From mboxrd@z Thu Jan 1 00:00:00 1970 From: Lukasz Majewski Date: Fri, 20 Dec 2019 12:48:10 +0100 Subject: [PATCH] cmd: spi: Permit setting bus frequency In-Reply-To: <20191220114457.3235630-1-marex@denx.de> References: <20191220114457.3235630-1-marex@denx.de> Message-ID: <20191220124810.6d68a50f@jawa> List-Id: MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit To: u-boot@lists.denx.de On Fri, 20 Dec 2019 12:44:57 +0100 Marek Vasut wrote: > The 'sspi' command hard-coded 1 MHz bus frequency for all > transmissions. Allow changing that at runtime by specifying '@freq' > bus frequency in Hz. > > Signed-off-by: Marek Vasut > Cc: Tom Rini > --- > cmd/spi.c | 14 ++++++++++---- > 1 file changed, 10 insertions(+), 4 deletions(-) > > diff --git a/cmd/spi.c b/cmd/spi.c > index 75226fd368..bfa185b6ae 100644 > --- a/cmd/spi.c > +++ b/cmd/spi.c > @@ -28,6 +28,7 @@ > static unsigned int bus; > static unsigned int cs; > static unsigned int mode; > +static unsigned int freq; > static int bitlen; > static uchar dout[MAX_SPI_BYTES]; > static uchar din[MAX_SPI_BYTES]; > @@ -45,12 +46,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, freq, 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, freq, mode); > if (!slave) { > printf("Invalid device %d:%d\n", bus, cs); > return -EINVAL; > @@ -106,6 +107,8 @@ int do_spi (cmd_tbl_t *cmdtp, int flag, int argc, > char * const argv[]) > * We use the last specified parameters, unless new ones are > * entered. > */ > + if (freq == 0) > + freq = 1000000; > > if ((flag & CMD_FLAG_REPEAT) == 0) > { > @@ -119,7 +122,9 @@ int do_spi (cmd_tbl_t *cmdtp, int flag, int argc, > char * const argv[]) bus = CONFIG_DEFAULT_SPI_BUS; > } > if (*cp == '.') > - mode = simple_strtoul(cp+1, NULL, > 10); > + mode = simple_strtoul(cp+1, &cp, 10); > + if (*cp == '@') > + freq = simple_strtoul(cp+1, &cp, 10); > } > if (argc >= 3) > bitlen = simple_strtoul(argv[2], NULL, 10); > @@ -159,10 +164,11 @@ int do_spi (cmd_tbl_t *cmdtp, int flag, int > argc, char * const argv[]) U_BOOT_CMD( > sspi, 5, 1, do_spi, > "SPI utility command", > - "[:][.] - Send and receive > bits\n" > + "[:][.][@] - Send and > receive bits\n" " - Identifies the SPI bus\n" > " - Identifies the chip select\n" > " Lukasz Majewski - Identifies the > SPI mode to use\n" > + " - Identifies the SPI bus frequency in Hz\n" > " - Number of bits to send (base 10)\n" > " - Hexadecimal string that gets sent" > ); Reviewed-by: Lukasz Majewski Best regards, Lukasz Majewski -- DENX Software Engineering GmbH, Managing Director: Wolfgang Denk HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany Phone: (+49)-8142-66989-59 Fax: (+49)-8142-66989-80 Email: lukma at denx.de -------------- next part -------------- A non-text attachment was scrubbed... Name: not available Type: application/pgp-signature Size: 488 bytes Desc: OpenPGP digital signature URL: