diff mbox

[U-Boot] ARM: rpi: fix RPi1 board rev detection for warranty bit

Message ID 1427173225-17040-1-git-send-email-swarren@wwwdotorg.org
State Accepted
Delegated to: Tom Rini
Headers show

Commit Message

Stephen Warren March 24, 2015, 5 a.m. UTC
Apparently the firmware's board rev response includes both the board
revision and some other data even on the RPi1. In particular, the
"warranty bit" is bit 24. We need to mask that out when looking up the
board ID.

Signed-off-by: Stephen Warren <swarren@wwwdotorg.org>
---
 board/raspberrypi/rpi/rpi.c | 7 +++++++
 1 file changed, 7 insertions(+)

Comments

Tom Rini March 24, 2015, 8:29 p.m. UTC | #1
On Mon, Mar 23, 2015 at 11:00:25PM -0600, Stephen Warren wrote:

> Apparently the firmware's board rev response includes both the board
> revision and some other data even on the RPi1. In particular, the
> "warranty bit" is bit 24. We need to mask that out when looking up the
> board ID.
> 
> Signed-off-by: Stephen Warren <swarren@wwwdotorg.org>

Applied to u-boot/master, thanks!
diff mbox

Patch

diff --git a/board/raspberrypi/rpi/rpi.c b/board/raspberrypi/rpi/rpi.c
index 50a699bb9e0c..a105953541be 100644
--- a/board/raspberrypi/rpi/rpi.c
+++ b/board/raspberrypi/rpi/rpi.c
@@ -278,10 +278,17 @@  static void get_board_rev(void)
 	 * https://github.com/pimoroni/RPi.version/blob/master/RPi/version.py
 	 * http://www.raspberrypi.org/forums/viewtopic.php?f=63&t=99293&p=690282
 	 * (a few posts down)
+	 *
+	 * For the RPi 1, bit 24 is the "warranty bit", so we mask off just the
+	 * lower byte to use as the board rev:
+	 * http://www.raspberrypi.org/forums/viewtopic.php?f=63&t=98367&start=250
+	 * http://www.raspberrypi.org/forums/viewtopic.php?f=31&t=20594
 	 */
 	rpi_board_rev = msg->get_board_rev.body.resp.rev;
 	if (rpi_board_rev & 0x800000)
 		rpi_board_rev = (rpi_board_rev >> 4) & 0xff;
+	else
+		rpi_board_rev &= 0xff;
 	if (rpi_board_rev >= ARRAY_SIZE(models)) {
 		printf("RPI: Board rev %u outside known range\n",
 		       rpi_board_rev);