Эх сурвалжийг харах

Merge tag 'signed-rpi-next' of git://github.com/agraf/u-boot

Patch queue for rpi - 2018-04-06

Highlights this time around:

  - Support for new RPi3 B+ model
  - Fix for some SD cards on newer RPi firmware
Tom Rini 7 жил өмнө
parent
commit
6074c3879c

+ 2 - 1
arch/arm/mach-bcm283x/include/mach/msg.h

@@ -18,9 +18,10 @@ int bcm2835_power_on_module(u32 module);
 /**
  * bcm2835_get_mmc_clock() - get the frequency of the MMC clock
  *
+ * @clock_id: ID of clock to get frequency for
  * @return clock frequency, or -ve on error
  */
-int bcm2835_get_mmc_clock(void);
+int bcm2835_get_mmc_clock(u32 clock_id);
 
 /**
  * bcm2835_get_video_size() - get the current display size

+ 2 - 2
arch/arm/mach-bcm283x/msg.c

@@ -65,7 +65,7 @@ int bcm2835_power_on_module(u32 module)
 	return 0;
 }
 
-int bcm2835_get_mmc_clock(void)
+int bcm2835_get_mmc_clock(u32 clock_id)
 {
 	ALLOC_CACHE_ALIGN_BUFFER(struct msg_get_clock_rate, msg_clk, 1);
 	int ret;
@@ -76,7 +76,7 @@ int bcm2835_get_mmc_clock(void)
 
 	BCM2835_MBOX_INIT_HDR(msg_clk);
 	BCM2835_MBOX_INIT_TAG(&msg_clk->get_clock_rate, GET_CLOCK_RATE);
-	msg_clk->get_clock_rate.body.req.clock_id = BCM2835_MBOX_CLOCK_ID_EMMC;
+	msg_clk->get_clock_rate.body.req.clock_id = clock_id;
 
 	ret = bcm2835_mbox_call_prop(BCM2835_MBOX_PROP_CHAN, &msg_clk->hdr);
 	if (ret) {

+ 35 - 0
board/raspberrypi/rpi/rpi.c

@@ -91,11 +91,36 @@ static const struct rpi_model rpi_model_unknown = {
 };
 
 static const struct rpi_model rpi_models_new_scheme[] = {
+	[0x0] = {
+		"Model A",
+		DTB_DIR "bcm2835-rpi-a.dtb",
+		false,
+	},
+	[0x1] = {
+		"Model B",
+		DTB_DIR "bcm2835-rpi-b.dtb",
+		true,
+	},
+	[0x2] = {
+		"Model A+",
+		DTB_DIR "bcm2835-rpi-a-plus.dtb",
+		false,
+	},
+	[0x3] = {
+		"Model B+",
+		DTB_DIR "bcm2835-rpi-b-plus.dtb",
+		true,
+	},
 	[0x4] = {
 		"2 Model B",
 		DTB_DIR "bcm2836-rpi-2-b.dtb",
 		true,
 	},
+	[0x6] = {
+		"Compute Module",
+		DTB_DIR "bcm2835-rpi-cm.dtb",
+		false,
+	},
 	[0x8] = {
 		"3 Model B",
 		DTB_DIR "bcm2837-rpi-3-b.dtb",
@@ -106,11 +131,21 @@ static const struct rpi_model rpi_models_new_scheme[] = {
 		DTB_DIR "bcm2835-rpi-zero.dtb",
 		false,
 	},
+	[0xA] = {
+		"Compute Module 3",
+		DTB_DIR "bcm2837-rpi-cm3.dtb",
+		false,
+	},
 	[0xC] = {
 		"Zero W",
 		DTB_DIR "bcm2835-rpi-zero-w.dtb",
 		false,
 	},
+	[0xD] = {
+		"3 Model B+",
+		DTB_DIR "bcm2837-rpi-3-b-plus.dtb",
+		true,
+	},
 };
 
 static const struct rpi_model rpi_models_old_scheme[] = {

+ 1 - 0
configs/rpi_0_w_defconfig

@@ -34,3 +34,4 @@ CONFIG_SYS_WHITE_ON_BLACK=y
 CONFIG_CONSOLE_SCROLL_LINES=10
 CONFIG_PHYS_TO_BUS=y
 CONFIG_OF_LIBFDT_OVERLAY=y
+# CONFIG_REQUIRE_SERIAL_CONSOLE is not set

+ 1 - 0
configs/rpi_2_defconfig

@@ -34,3 +34,4 @@ CONFIG_SYS_WHITE_ON_BLACK=y
 CONFIG_CONSOLE_SCROLL_LINES=10
 CONFIG_PHYS_TO_BUS=y
 CONFIG_OF_LIBFDT_OVERLAY=y
+# CONFIG_REQUIRE_SERIAL_CONSOLE is not set

+ 2 - 0
configs/rpi_3_32b_defconfig

@@ -36,3 +36,5 @@ CONFIG_SYS_WHITE_ON_BLACK=y
 CONFIG_CONSOLE_SCROLL_LINES=10
 CONFIG_PHYS_TO_BUS=y
 CONFIG_OF_LIBFDT_OVERLAY=y
+CONFIG_PHYLIB=y
+CONFIG_USB_ETHER_LAN78XX=y

+ 2 - 0
configs/rpi_3_defconfig

@@ -36,3 +36,5 @@ CONFIG_SYS_WHITE_ON_BLACK=y
 CONFIG_CONSOLE_SCROLL_LINES=10
 CONFIG_PHYS_TO_BUS=y
 CONFIG_OF_LIBFDT_OVERLAY=y
+CONFIG_PHYLIB=y
+CONFIG_USB_ETHER_LAN78XX=y

+ 1 - 0
configs/rpi_defconfig

@@ -34,3 +34,4 @@ CONFIG_SYS_WHITE_ON_BLACK=y
 CONFIG_CONSOLE_SCROLL_LINES=10
 CONFIG_PHYS_TO_BUS=y
 CONFIG_OF_LIBFDT_OVERLAY=y
+# CONFIG_REQUIRE_SERIAL_CONSOLE is not set

+ 1 - 1
drivers/mmc/bcm2835_sdhci.c

@@ -183,7 +183,7 @@ static int bcm2835_sdhci_probe(struct udevice *dev)
 	if (base == FDT_ADDR_T_NONE)
 		return -EINVAL;
 
-	ret = bcm2835_get_mmc_clock();
+	ret = bcm2835_get_mmc_clock(BCM2835_MBOX_CLOCK_ID_EMMC);
 	if (ret < 0) {
 		debug("%s: Failed to set MMC clock (err=%d)\n", __func__, ret);
 		return ret;

+ 2 - 1
drivers/mmc/bcm2835_sdhost.c

@@ -35,6 +35,7 @@
 #include <dm.h>
 #include <mmc.h>
 #include <asm/arch/msg.h>
+#include <asm/arch/mbox.h>
 #include <asm/unaligned.h>
 #include <linux/compat.h>
 #include <linux/io.h>
@@ -941,7 +942,7 @@ static int bcm2835_probe(struct udevice *dev)
 	if (!host->ioaddr)
 		return -ENOMEM;
 
-	host->max_clk = bcm2835_get_mmc_clock();
+	host->max_clk = bcm2835_get_mmc_clock(BCM2835_MBOX_CLOCK_ID_CORE);
 
 	bcm2835_add_host(host);