Skip to contentSkip to conversation

spi/pl022: disable the PL022 block when unused

PATCH New Linus Walleij 3 participants 3 messages Oct 17, 2011 – Oct 18, 2011

Subsystems (2)
lore
Share & tools
lore
#0 lore raw

PATCH 2/3 spi/pl022: disable the PL022 block when unused

From: Virupax Sadashivpetimath <[email protected]>

Make sure we clear the enable bit when the block is not used. This will save some energy in certain hardware versions.

---
 drivers/spi/spi-pl022.c |    7 ++++++-
 1 files changed, 6 insertions(+), 1 deletions(-)
drivers/spi/spi-pl022.c +6 -1
index 91700bb..0a1d8ed 100644
@@ -513,7 +513,12 @@ static void giveback(struct pl022 *pl022)
 	msg->state = NULL;
 	if (msg->complete)
 		msg->complete(msg->context);
-	/* This message is completed, so let's turn off the clocks & power */
+
+	/* disable the SPI/SSP operation */
+	writew((readw(SSP_CR1(pl022->virtbase)) &
+		(~SSP_CR1_MASK_SSE)), SSP_CR1(pl022->virtbase));
+
+	/* This message is completed, so let's turn off the clock! */
 	clk_disable(pl022->clk);
 	amba_pclk_disable(pl022->adev);
 	amba_vcore_disable(pl022->adev);
Signature · 1 line
1.7.3.2
#1 lore raw

PATCH 2/3 spi/pl022: disable the PL022 block when unused

Quoted 19 lines · Linus WALLEIJ

From: Virupax Sadashivpetimath <[email protected]>

Make sure we clear the enable bit when the block is not used. This will save some energy in certain hardware versions.

---
 drivers/spi/spi-pl022.c |    7 ++++++-
 1 files changed, 6 insertions(+), 1 deletions(-)
drivers/spi/spi-pl022.c +0 -0
index 91700bb..0a1d8ed 100644
@@ -513,7 +513,12 @@ static void giveback(struct pl022 *pl022)
 	msg->state = NULL;
 	if (msg->complete)
 		msg->complete(msg->context);

drivers/spi/spi-pl022.c static void giveback(struct pl022 *pl022) · line 524

Quoted 10 lines
drivers/spi/spi-pl022.c +6 -1
-	/* This message is completed, so let's turn off the clocks & power */
+
+	/* disable the SPI/SSP operation */
+	writew((readw(SSP_CR1(pl022->virtbase)) &
+		(~SSP_CR1_MASK_SSE)), SSP_CR1(pl022->virtbase));
+
+	/* This message is completed, so let's turn off the clock! */
 	clk_disable(pl022->clk);
 	amba_pclk_disable(pl022->adev);
 	amba_vcore_disable(pl022->adev);
Signature · 1 line
viresh
#2 lore raw

PATCH 2/3 spi/pl022: disable the PL022 block when unused

Quoted 24 lines · Viresh Kumar
Quoted 23 lines · Linus WALLEIJ

From: Virupax Sadashivpetimath <[email protected]>

Make sure we clear the enable bit when the block is not used. This will save some energy in certain hardware versions.

---
 drivers/spi/spi-pl022.c |    7 ++++++-
 1 files changed, 6 insertions(+), 1 deletions(-)
drivers/spi/spi-pl022.c +3 -1
index 91700bb..0a1d8ed 100644
@@ -513,7 +513,12 @@ static void giveback(struct pl022 *pl022)
 	msg->state = NULL;
 	if (msg->complete)
 		msg->complete(msg->context);
-	/* This message is completed, so let's turn off the clocks & power */
+
+	/* disable the SPI/SSP operation */
+	writew((readw(SSP_CR1(pl022->virtbase)) &
Quoted 8 lines

drivers/spi/spi-pl022.c static void giveback(struct pl022 *pl022) · line 524

Quoted 6 lines
drivers/spi/spi-pl022.c +3 -0
+		(~SSP_CR1_MASK_SSE)), SSP_CR1(pl022->virtbase));
+
+	/* This message is completed, so let's turn off the clock! */
 	clk_disable(pl022->clk);
 	amba_pclk_disable(pl022->adev);
 	amba_vcore_disable(pl022->adev);

Note that I have some changes around here in my amba branch (which are dependent on other changes I have for the primecell runtime pm.)