All of lore.kernel.org
 help / color / mirror / Atom feed
From: Philipp Tomsich <philipp.tomsich@theobroma-systems.com>
To: u-boot@lists.denx.de
Subject: [U-Boot] [PATCH v1] cmd: sspi: Add an additional argument to set the bus frequency
Date: Fri, 17 Feb 2017 18:27:28 +0100	[thread overview]
Message-ID: <1487352448-937-1-git-send-email-philipp.tomsich@theobroma-systems.com> (raw)

Signed-off-by: Philipp Tomsich <philipp.tomsich@theobroma-systems.com>
---
 cmd/spi.c | 18 +++++++++++-------
 1 file changed, 11 insertions(+), 7 deletions(-)

diff --git a/cmd/spi.c b/cmd/spi.c
index f16ef9a..b495b87 100644
--- a/cmd/spi.c
+++ b/cmd/spi.c
@@ -36,51 +36,52 @@
 static unsigned int	bus;
 static unsigned int	cs;
 static unsigned int	mode;
+static unsigned int     hz;
 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;
 
 #ifdef CONFIG_DM_SPI
 	char name[30], *str;
 	struct udevice *dev;
 
 	snprintf(name, sizeof(name), "generic_%d:%d", bus, 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;
 	}
 #endif
 
 	ret = spi_claim_bus(slave);
 	if (ret)
 		goto done;
 	ret = spi_xfer(slave, bitlen, dout, din,
 		       SPI_XFER_BEGIN | SPI_XFER_END);
 #ifndef CONFIG_DM_SPI
 	/* We don't get an error code in this case */
 	if (ret)
 		ret = -EIO;
 #endif
 	if (ret) {
 		printf("Error %d during SPI transaction\n", ret);
 	} else {
 		int j;
 
 		for (j = 0; j < ((bitlen + 7) / 8); j++)
 			printf("%02X", din[j]);
 		printf("\n");
 	}
@@ -107,70 +108,73 @@ done:
 int do_spi (cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
 {
 	char  *cp = 0;
 	uchar tmp;
 	int   j;
 
 	/*
 	 * We use the last specified parameters, unless new ones are
 	 * entered.
 	 */
 
 	if ((flag & CMD_FLAG_REPEAT) == 0)
 	{
 		if (argc >= 2) {
 			mode = CONFIG_DEFAULT_SPI_MODE;
 			bus = simple_strtoul(argv[1], &cp, 10);
 			if (*cp == ':') {
 				cs = simple_strtoul(cp+1, &cp, 10);
 			} else {
 				cs = bus;
 				bus = CONFIG_DEFAULT_SPI_BUS;
 			}
 			if (*cp == '.')
 				mode = simple_strtoul(cp+1, NULL, 10);
 		}
 		if (argc >= 3)
 			bitlen = simple_strtoul(argv[2], NULL, 10);
 		if (argc >= 4) {
 			cp = argv[3];
 			for(j = 0; *cp; j++, cp++) {
 				tmp = *cp - '0';
 				if(tmp > 9)
 					tmp -= ('A' - '0') - 10;
 				if(tmp > 15)
 					tmp -= ('a' - 'A');
 				if(tmp > 15) {
 					printf("Hex conversion error on %c\n", *cp);
 					return 1;
 				}
 				if((j % 2) == 0)
 					dout[j / 2] = (tmp << 4);
 				else
 					dout[j / 2] |= tmp;
 			}
 		}
+		if (argc >= 5)
+			hz = simple_strtoul(argv[4], NULL, 10);
 	}
 
 	if ((bitlen < 0) || (bitlen >  (MAX_SPI_BYTES * 8))) {
 		printf("Invalid bitlen %d\n", bitlen);
 		return 1;
 	}
 
-	if (do_spi_xfer(bus, cs))
+	if (do_spi_xfer(bus, cs, hz))
 		return 1;
 
 	return 0;
 }
 
 /***************************************************/
 
 U_BOOT_CMD(
-	sspi,	5,	1,	do_spi,
+	sspi,	6,	1,	do_spi,
 	"SPI utility command",
-	"[<bus>:]<cs>[.<mode>] <bit_len> <dout> - Send and receive bits\n"
+	"[<bus>:]<cs>[.<mode>] <bit_len> <dout> [<hz>] - Send and receive bits\n"
 	"<bus>     - Identifies the SPI bus\n"
 	"<cs>      - Identifies the chip select\n"
 	"<mode>    - Identifies the SPI mode to use\n"
 	"<bit_len> - Number of bits to send (base 10)\n"
-	"<dout>    - Hexadecimal string that gets sent"
+	"<dout>    - Hexadecimal string that gets sent\n"
+	"[<clk>]   - Bus clock in Hz"
 );
-- 
1.9.1

             reply	other threads:[~2017-02-17 17:27 UTC|newest]

Thread overview: 5+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2017-02-17 17:27 Philipp Tomsich [this message]
2017-02-17 17:36 ` [U-Boot] [PATCH v1] cmd: sspi: Add an additional argument to set the bus frequency Tom Rini
2017-02-17 18:10   ` [U-Boot] [PATCH v2] " Philipp Tomsich
2017-02-17 22:56     ` Tom Rini
2017-02-25  8:54     ` Jagan Teki

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1487352448-937-1-git-send-email-philipp.tomsich@theobroma-systems.com \
    --to=philipp.tomsich@theobroma-systems.com \
    --cc=u-boot@lists.denx.de \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.