All of lore.kernel.org
 help / color / mirror / Atom feed
From: Mario Six <mario.six@gdsys.cc>
To: u-boot@lists.denx.de
Subject: [U-Boot] [PATCH 07/19] spi: mpc8xxx: Use IO accessors
Date: Tue, 10 Apr 2018 13:01:36 +0200	[thread overview]
Message-ID: <21452766369bdaa404fd0003f04ae7e212fa780b.1523355172.git.mario.six@gdsys.cc> (raw)
In-Reply-To: <cover.1523355172.git.mario.six@gdsys.cc>

Accesses to the register map are currently done by directly reading and
writing the structure.

Switch to the appropriate IO accessors instead.

Signed-off-by: Mario Six <mario.six@gdsys.cc>
---
 drivers/spi/mpc8xxx_spi.c | 38 +++++++++++++++++++-------------------
 1 file changed, 19 insertions(+), 19 deletions(-)

diff --git a/drivers/spi/mpc8xxx_spi.c b/drivers/spi/mpc8xxx_spi.c
index bd2857ce1a..b5546aa502 100644
--- a/drivers/spi/mpc8xxx_spi.c
+++ b/drivers/spi/mpc8xxx_spi.c
@@ -59,21 +59,21 @@ void spi_free_slave(struct spi_slave *slave)
 
 void spi_init(void)
 {
-	volatile spi8xxx_t *spi = &((immap_t *) (CONFIG_SYS_IMMR))->spi;
+	spi8xxx_t *spi = &((immap_t *)(CONFIG_SYS_IMMR))->spi;
 
 	/*
 	 * SPI pins on the MPC83xx are not muxed, so all we do is initialize
 	 * some registers
 	 */
-	spi->mode = SPI_MODE_REV | SPI_MODE_MS | SPI_MODE_EN;
+	out_be32(&spi->mode, SPI_MODE_REV | SPI_MODE_MS | SPI_MODE_EN);
 	/* Use SYSCLK / 8 (16.67MHz typ.) */
-	spi->mode = (spi->mode & 0xfff0ffff) | BIT(16);
+	clrsetbits_be32(&spi->mode, 0x000f0000, BIT(16));
 	/* Clear all SPI events */
-	spi->event = 0xffffffff;
+	setbits_be32(&spi->event, 0xffffffff);
 	/* Mask  all SPI interrupts */
-	spi->mask = 0x00000000;
+	clrbits_be32(&spi->mask, 0xffffffff);
 	/* LST bit doesn't do anything, so disregard */
-	spi->com = 0;
+	out_be32(&spi->com, 0);
 }
 
 int spi_claim_bus(struct spi_slave *slave)
@@ -88,7 +88,7 @@ void spi_release_bus(struct spi_slave *slave)
 int spi_xfer(struct spi_slave *slave, uint bitlen, const void *dout, void *din,
 	     ulong flags)
 {
-	volatile spi8xxx_t *spi = &((immap_t *) (CONFIG_SYS_IMMR))->spi;
+	spi8xxx_t *spi = &((immap_t *)(CONFIG_SYS_IMMR))->spi;
 	uint tmpdout, tmpdin, event;
 	int num_blks = DIV_ROUND_UP(bitlen, 32);
 	int tm, is_read = 0;
@@ -101,7 +101,7 @@ int spi_xfer(struct spi_slave *slave, uint bitlen, const void *dout, void *din,
 		spi_cs_activate(slave);
 
 	/* Clear all SPI events */
-	spi->event = 0xffffffff;
+	setbits_be32(&spi->event, 0xffffffff);
 
 	/* Handle data in 32-bit chunks */
 	while (num_blks--) {
@@ -119,26 +119,26 @@ int spi_xfer(struct spi_slave *slave, uint bitlen, const void *dout, void *din,
 		 * len > 16               0
 		 */
 
-		spi->mode &= ~SPI_MODE_EN;
+		clrbits_be32(&spi->mode, SPI_MODE_EN);
 
 		if (bitlen <= 16) {
 			if (bitlen <= 4)
-				spi->mode = (spi->mode & 0xff0fffff) |
-					    (3 << 20);
+				clrsetbits_be32(&spi->mode, 0x00f00000,
+						(3 << 20));
 			else
-				spi->mode = (spi->mode & 0xff0fffff) |
-					    ((bitlen - 1) << 20);
+				clrsetbits_be32(&spi->mode, 0x00f00000,
+						((bitlen - 1) << 20));
 		} else {
-			spi->mode = (spi->mode & 0xff0fffff);
+			clrbits_be32(&spi->mode, 0x00f00000);
 			/* Set up the next iteration if sending > 32 bits */
 			bitlen -= 32;
 			dout += 4;
 		}
 
-		spi->mode |= SPI_MODE_EN;
+		setbits_be32(&spi->mode, SPI_MODE_EN);
 
 		/* Write the data out */
-		spi->tx = tmpdout;
+		out_be32(&spi->tx, tmpdout);
 
 		debug("*** %s: ... %08x written\n", __func__, tmpdout);
 
@@ -148,10 +148,10 @@ int spi_xfer(struct spi_slave *slave, uint bitlen, const void *dout, void *din,
 		 * The NE event must be read and cleared first
 		 */
 		for (tm = 0, is_read = 0; tm < SPI_TIMEOUT; ++tm) {
-			event = spi->event;
+			event = in_be32(&spi->event);
 			if (event & SPI_EV_NE) {
-				tmpdin = spi->rx;
-				spi->event |= SPI_EV_NE;
+				tmpdin = in_be32(&spi->rx);
+				setbits_be32(&spi->event, SPI_EV_NE);
 				is_read = 1;
 
 				*(u32 *)din = (tmpdin << (32 - char_size));
-- 
2.11.0

  parent reply	other threads:[~2018-04-10 11:01 UTC|newest]

Thread overview: 24+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2018-04-10 11:01 [U-Boot] [PATCH 00/19] spi: mpc8xxx: DM conversion Mario Six
2018-04-10 11:01 ` [U-Boot] [PATCH 01/19] spi: mpc8xxx: Use short type names Mario Six
2018-04-10 11:01 ` [U-Boot] [PATCH 02/19] spi: mpc8xxx: Fix comments Mario Six
2018-04-10 11:01 ` [U-Boot] [PATCH 03/19] spi: mpc8xxx: Rename camel-case variables Mario Six
2018-04-10 11:01 ` [U-Boot] [PATCH 04/19] spi: mpc8xxx: Fix space after cast Mario Six
2018-04-10 11:01 ` [U-Boot] [PATCH 05/19] spi: mpc8xxx: Fix function names in strings Mario Six
2018-04-10 11:01 ` [U-Boot] [PATCH 06/19] spi: mpc8xxx: Replace defines with enums Mario Six
2018-04-10 11:01 ` Mario Six [this message]
2018-04-10 11:01 ` [U-Boot] [PATCH 08/19] spi: mpc8xxx: Simplify if Mario Six
2018-04-10 11:01 ` [U-Boot] [PATCH 09/19] spi: mpc8xxx: Get rid of is_read Mario Six
2018-04-10 11:01 ` [U-Boot] [PATCH 10/19] spi: mpc8xxx: Simplify logic a bit Mario Six
2018-04-10 11:01 ` [U-Boot] [PATCH 11/19] spi: mpc8xxx: Reduce scope of loop variables Mario Six
2018-04-10 11:01 ` [U-Boot] [PATCH 12/19] spi: mpc8xxx: Make code more readable Mario Six
2018-04-10 11:01 ` [U-Boot] [PATCH 13/19] spi: mpc8xxx: Rename variable Mario Six
2018-04-10 11:01 ` [U-Boot] [PATCH 14/19] spi: mpc8xxx: Document LEN setting better Mario Six
2018-04-10 11:01 ` [U-Boot] [PATCH 15/19] spi: mpc8xxx: Re-order transfer setup Mario Six
2018-04-10 11:01 ` [U-Boot] [PATCH 16/19] spi: mpc8xxx: Fix if check Mario Six
2018-04-10 11:01 ` [U-Boot] [PATCH 17/19] spi: mpc8xxx: Use get_timer Mario Six
2018-04-10 11:01 ` [U-Boot] [PATCH 18/19] spi: mpc8xxx: Prepare DM conversion Mario Six
2018-04-10 11:01 ` [U-Boot] [PATCH 19/19] spi: mpc8xxx: Add DM support Mario Six
2018-04-19 11:32   ` Jagan Teki
2018-04-19 11:45     ` Mario Six
2018-04-19 11:48       ` Jagan Teki
2018-04-19 11:51         ` Mario Six

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=21452766369bdaa404fd0003f04ae7e212fa780b.1523355172.git.mario.six@gdsys.cc \
    --to=mario.six@gdsys.cc \
    --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.