mirror of
https://source.denx.de/u-boot/u-boot.git
synced 2026-05-05 04:36:13 +02:00
Merge tag 'rpi-2026.04-rc4' of https://source.denx.de/u-boot/custodians/u-boot-raspberrypi
Updates for RPi for 2026.04-rc4: - board/raspberrypi: add bcm2712d0-rpi-5-b for Raspberry Pi 5 - board/raspberrypi: add multi-FDT support - rpi: pass the Video Core logs DT parameter through - pinctrl: bcm283x: Fix GPIO pull state register values for BCM2711
This commit is contained in:
commit
eefb822fb5
@ -94,120 +94,128 @@ struct efi_capsule_update_info update_info = {
|
||||
*/
|
||||
struct rpi_model {
|
||||
const char *name;
|
||||
const char *fdtfile;
|
||||
const char * const *fdtfiles;
|
||||
size_t fdtcount;
|
||||
bool has_onboard_eth;
|
||||
};
|
||||
|
||||
#define FDTFILES(...) \
|
||||
(const char *[]){ __VA_ARGS__ }, \
|
||||
sizeof((const char *[]){ __VA_ARGS__ }) / sizeof(const char *)
|
||||
|
||||
static const struct rpi_model rpi_model_unknown = {
|
||||
"Unknown model",
|
||||
DTB_DIR "bcm283x-rpi-other.dtb",
|
||||
FDTFILES(DTB_DIR "bcm283x-rpi-other.dtb"),
|
||||
false,
|
||||
};
|
||||
|
||||
static const struct rpi_model rpi_models_new_scheme[] = {
|
||||
[0x0] = {
|
||||
"Model A",
|
||||
DTB_DIR "bcm2835-rpi-a.dtb",
|
||||
FDTFILES(DTB_DIR "bcm2835-rpi-a.dtb"),
|
||||
false,
|
||||
},
|
||||
[0x1] = {
|
||||
"Model B",
|
||||
DTB_DIR "bcm2835-rpi-b.dtb",
|
||||
FDTFILES(DTB_DIR "bcm2835-rpi-b.dtb"),
|
||||
true,
|
||||
},
|
||||
[0x2] = {
|
||||
"Model A+",
|
||||
DTB_DIR "bcm2835-rpi-a-plus.dtb",
|
||||
FDTFILES(DTB_DIR "bcm2835-rpi-a-plus.dtb"),
|
||||
false,
|
||||
},
|
||||
[0x3] = {
|
||||
"Model B+",
|
||||
DTB_DIR "bcm2835-rpi-b-plus.dtb",
|
||||
FDTFILES(DTB_DIR "bcm2835-rpi-b-plus.dtb"),
|
||||
true,
|
||||
},
|
||||
[0x4] = {
|
||||
"2 Model B",
|
||||
DTB_DIR "bcm2836-rpi-2-b.dtb",
|
||||
FDTFILES(DTB_DIR "bcm2836-rpi-2-b.dtb"),
|
||||
true,
|
||||
},
|
||||
[0x6] = {
|
||||
"Compute Module",
|
||||
DTB_DIR "bcm2835-rpi-cm.dtb",
|
||||
FDTFILES(DTB_DIR "bcm2835-rpi-cm.dtb"),
|
||||
false,
|
||||
},
|
||||
[0x8] = {
|
||||
"3 Model B",
|
||||
DTB_DIR "bcm2837-rpi-3-b.dtb",
|
||||
FDTFILES(DTB_DIR "bcm2837-rpi-3-b.dtb"),
|
||||
true,
|
||||
},
|
||||
[0x9] = {
|
||||
"Zero",
|
||||
DTB_DIR "bcm2835-rpi-zero.dtb",
|
||||
FDTFILES(DTB_DIR "bcm2835-rpi-zero.dtb"),
|
||||
false,
|
||||
},
|
||||
[0xA] = {
|
||||
"Compute Module 3",
|
||||
DTB_DIR "bcm2837-rpi-cm3.dtb",
|
||||
FDTFILES(DTB_DIR "bcm2837-rpi-cm3.dtb"),
|
||||
false,
|
||||
},
|
||||
[0xC] = {
|
||||
"Zero W",
|
||||
DTB_DIR "bcm2835-rpi-zero-w.dtb",
|
||||
FDTFILES(DTB_DIR "bcm2835-rpi-zero-w.dtb"),
|
||||
false,
|
||||
},
|
||||
[0xD] = {
|
||||
"3 Model B+",
|
||||
DTB_DIR "bcm2837-rpi-3-b-plus.dtb",
|
||||
FDTFILES(DTB_DIR "bcm2837-rpi-3-b-plus.dtb"),
|
||||
true,
|
||||
},
|
||||
[0xE] = {
|
||||
"3 Model A+",
|
||||
DTB_DIR "bcm2837-rpi-3-a-plus.dtb",
|
||||
FDTFILES(DTB_DIR "bcm2837-rpi-3-a-plus.dtb"),
|
||||
false,
|
||||
},
|
||||
[0x10] = {
|
||||
"Compute Module 3+",
|
||||
DTB_DIR "bcm2837-rpi-cm3.dtb",
|
||||
FDTFILES(DTB_DIR "bcm2837-rpi-cm3.dtb"),
|
||||
false,
|
||||
},
|
||||
[0x11] = {
|
||||
"4 Model B",
|
||||
DTB_DIR "bcm2711-rpi-4-b.dtb",
|
||||
FDTFILES(DTB_DIR "bcm2711-rpi-4-b.dtb"),
|
||||
true,
|
||||
},
|
||||
[0x12] = {
|
||||
"Zero 2 W",
|
||||
DTB_DIR "bcm2837-rpi-zero-2-w.dtb",
|
||||
FDTFILES(DTB_DIR "bcm2837-rpi-zero-2-w.dtb"),
|
||||
false,
|
||||
},
|
||||
[0x13] = {
|
||||
"400",
|
||||
DTB_DIR "bcm2711-rpi-400.dtb",
|
||||
FDTFILES(DTB_DIR "bcm2711-rpi-400.dtb"),
|
||||
true,
|
||||
},
|
||||
[0x14] = {
|
||||
"Compute Module 4",
|
||||
DTB_DIR "bcm2711-rpi-cm4.dtb",
|
||||
FDTFILES(DTB_DIR "bcm2711-rpi-cm4.dtb"),
|
||||
true,
|
||||
},
|
||||
[0x17] = {
|
||||
"5 Model B",
|
||||
DTB_DIR "bcm2712-rpi-5-b.dtb",
|
||||
FDTFILES(
|
||||
[0] = DTB_DIR "bcm2712-rpi-5-b.dtb",
|
||||
[1] = DTB_DIR "bcm2712d0-rpi-5-b.dtb"
|
||||
),
|
||||
true,
|
||||
},
|
||||
[0x18] = {
|
||||
"Compute Module 5",
|
||||
DTB_DIR "bcm2712-rpi-cm5-cm5io.dtb",
|
||||
FDTFILES(DTB_DIR "bcm2712-rpi-cm5-cm5io.dtb"),
|
||||
true,
|
||||
},
|
||||
[0x19] = {
|
||||
"500",
|
||||
DTB_DIR "bcm2712-rpi-500.dtb",
|
||||
FDTFILES(DTB_DIR "bcm2712-rpi-500.dtb"),
|
||||
true,
|
||||
},
|
||||
[0x1A] = {
|
||||
"Compute Module 5 Lite",
|
||||
DTB_DIR "bcm2712-rpi-cm5l-cm5io.dtb",
|
||||
FDTFILES(DTB_DIR "bcm2712-rpi-cm5l-cm5io.dtb"),
|
||||
true,
|
||||
},
|
||||
};
|
||||
@ -215,87 +223,87 @@ static const struct rpi_model rpi_models_new_scheme[] = {
|
||||
static const struct rpi_model rpi_models_old_scheme[] = {
|
||||
[0x2] = {
|
||||
"Model B",
|
||||
DTB_DIR "bcm2835-rpi-b.dtb",
|
||||
FDTFILES(DTB_DIR "bcm2835-rpi-b.dtb"),
|
||||
true,
|
||||
},
|
||||
[0x3] = {
|
||||
"Model B",
|
||||
DTB_DIR "bcm2835-rpi-b.dtb",
|
||||
FDTFILES(DTB_DIR "bcm2835-rpi-b.dtb"),
|
||||
true,
|
||||
},
|
||||
[0x4] = {
|
||||
"Model B rev2",
|
||||
DTB_DIR "bcm2835-rpi-b-rev2.dtb",
|
||||
FDTFILES(DTB_DIR "bcm2835-rpi-b-rev2.dtb"),
|
||||
true,
|
||||
},
|
||||
[0x5] = {
|
||||
"Model B rev2",
|
||||
DTB_DIR "bcm2835-rpi-b-rev2.dtb",
|
||||
FDTFILES(DTB_DIR "bcm2835-rpi-b-rev2.dtb"),
|
||||
true,
|
||||
},
|
||||
[0x6] = {
|
||||
"Model B rev2",
|
||||
DTB_DIR "bcm2835-rpi-b-rev2.dtb",
|
||||
FDTFILES(DTB_DIR "bcm2835-rpi-b-rev2.dtb"),
|
||||
true,
|
||||
},
|
||||
[0x7] = {
|
||||
"Model A",
|
||||
DTB_DIR "bcm2835-rpi-a.dtb",
|
||||
FDTFILES(DTB_DIR "bcm2835-rpi-a.dtb"),
|
||||
false,
|
||||
},
|
||||
[0x8] = {
|
||||
"Model A",
|
||||
DTB_DIR "bcm2835-rpi-a.dtb",
|
||||
FDTFILES(DTB_DIR "bcm2835-rpi-a.dtb"),
|
||||
false,
|
||||
},
|
||||
[0x9] = {
|
||||
"Model A",
|
||||
DTB_DIR "bcm2835-rpi-a.dtb",
|
||||
FDTFILES(DTB_DIR "bcm2835-rpi-a.dtb"),
|
||||
false,
|
||||
},
|
||||
[0xd] = {
|
||||
"Model B rev2",
|
||||
DTB_DIR "bcm2835-rpi-b-rev2.dtb",
|
||||
FDTFILES(DTB_DIR "bcm2835-rpi-b-rev2.dtb"),
|
||||
true,
|
||||
},
|
||||
[0xe] = {
|
||||
"Model B rev2",
|
||||
DTB_DIR "bcm2835-rpi-b-rev2.dtb",
|
||||
FDTFILES(DTB_DIR "bcm2835-rpi-b-rev2.dtb"),
|
||||
true,
|
||||
},
|
||||
[0xf] = {
|
||||
"Model B rev2",
|
||||
DTB_DIR "bcm2835-rpi-b-rev2.dtb",
|
||||
FDTFILES(DTB_DIR "bcm2835-rpi-b-rev2.dtb"),
|
||||
true,
|
||||
},
|
||||
[0x10] = {
|
||||
"Model B+",
|
||||
DTB_DIR "bcm2835-rpi-b-plus.dtb",
|
||||
FDTFILES(DTB_DIR "bcm2835-rpi-b-plus.dtb"),
|
||||
true,
|
||||
},
|
||||
[0x11] = {
|
||||
"Compute Module",
|
||||
DTB_DIR "bcm2835-rpi-cm.dtb",
|
||||
FDTFILES(DTB_DIR "bcm2835-rpi-cm.dtb"),
|
||||
false,
|
||||
},
|
||||
[0x12] = {
|
||||
"Model A+",
|
||||
DTB_DIR "bcm2835-rpi-a-plus.dtb",
|
||||
FDTFILES(DTB_DIR "bcm2835-rpi-a-plus.dtb"),
|
||||
false,
|
||||
},
|
||||
[0x13] = {
|
||||
"Model B+",
|
||||
DTB_DIR "bcm2835-rpi-b-plus.dtb",
|
||||
FDTFILES(DTB_DIR "bcm2835-rpi-b-plus.dtb"),
|
||||
true,
|
||||
},
|
||||
[0x14] = {
|
||||
"Compute Module",
|
||||
DTB_DIR "bcm2835-rpi-cm.dtb",
|
||||
FDTFILES(DTB_DIR "bcm2835-rpi-cm.dtb"),
|
||||
false,
|
||||
},
|
||||
[0x15] = {
|
||||
"Model A+",
|
||||
DTB_DIR "bcm2835-rpi-a-plus.dtb",
|
||||
FDTFILES(DTB_DIR "bcm2835-rpi-a-plus.dtb"),
|
||||
false,
|
||||
},
|
||||
};
|
||||
@ -361,11 +369,17 @@ int dram_init_banksize(void)
|
||||
static void set_fdtfile(void)
|
||||
{
|
||||
const char *fdtfile;
|
||||
int rev = revision & 0x0f;
|
||||
|
||||
if (env_get("fdtfile"))
|
||||
return;
|
||||
|
||||
fdtfile = model->fdtfile;
|
||||
/* set the first entry as default */
|
||||
fdtfile = model->fdtfiles[0];
|
||||
|
||||
if (rev < model->fdtcount)
|
||||
fdtfile = model->fdtfiles[rev];
|
||||
|
||||
env_set("fdtfile", fdtfile);
|
||||
}
|
||||
|
||||
@ -608,6 +622,9 @@ void update_fdt_from_fw(void *fdt, void *fw_fdt)
|
||||
/* warnings from the firmware (if any) */
|
||||
copy_property(fdt, fw_fdt, "/chosen", "user-warnings");
|
||||
|
||||
/* firmware logs - used by the vclog utility */
|
||||
copy_property(fdt, fw_fdt, "/chosen", "log");
|
||||
|
||||
/* address of the PHY device as provided by the firmware */
|
||||
copy_property(fdt, fw_fdt, "ethernet0/mdio@e14/ethernet-phy@1", "reg");
|
||||
|
||||
|
||||
@ -30,6 +30,11 @@ struct bcm283x_pinctrl_priv {
|
||||
|
||||
#define MAX_PINS_PER_BANK 16
|
||||
|
||||
/* pull states for BCM2711 */
|
||||
#define BCM2711_PULL_NONE 0
|
||||
#define BCM2711_PULL_UP 1
|
||||
#define BCM2711_PULL_DOWN 2
|
||||
|
||||
static void bcm2835_gpio_set_func_id(struct udevice *dev, unsigned int gpio,
|
||||
int func)
|
||||
{
|
||||
@ -93,6 +98,17 @@ static void bcm2711_gpio_set_pull(struct udevice *dev, unsigned int gpio, int pu
|
||||
u32 bit_shift;
|
||||
u32 pull_bits;
|
||||
|
||||
if (!device_is_compatible(dev, "brcm,bcm2711-gpio"))
|
||||
return;
|
||||
|
||||
/* BCM2711's pull values differ from BCM2835 */
|
||||
if (pull == BCM2835_PUD_UP)
|
||||
pull = BCM2711_PULL_UP;
|
||||
else if (pull == BCM2835_PUD_DOWN)
|
||||
pull = BCM2711_PULL_DOWN;
|
||||
else
|
||||
pull = BCM2711_PULL_NONE;
|
||||
|
||||
/* Findout which GPIO_PUP_PDN_CNTRL register to use */
|
||||
reg_offset = BCM2711_GPPUD_CNTRL_REG0 + BCM2711_PUD_REG_OFFSET(gpio);
|
||||
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user