瀏覽代碼

ARM: rpi: fix RPi1 board rev detection for warranty bit

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>
Stephen Warren 10 年之前
父節點
當前提交
95b4f112f5
共有 1 個文件被更改,包括 7 次插入0 次删除
  1. 7 0
      board/raspberrypi/rpi/rpi.c

+ 7 - 0
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);