X-Git-Url: https://git.librecmc.org/?a=blobdiff_plain;f=board%2Fqualcomm%2Fdragonboard410c%2Fdragonboard410c.c;h=e7ead57f0dac313caab6ace495cee64be4f379bd;hb=83d290c56fab2d38cd1ab4c4cc7099559c1d5046;hp=37d0b85e0eacb7f6417d8b0b83965bbac8c89e3e;hpb=821560fd8e43eecc208c1c52ad24faadb6b52703;p=oweals%2Fu-boot.git diff --git a/board/qualcomm/dragonboard410c/dragonboard410c.c b/board/qualcomm/dragonboard410c/dragonboard410c.c index 37d0b85e0e..e7ead57f0d 100644 --- a/board/qualcomm/dragonboard410c/dragonboard410c.c +++ b/board/qualcomm/dragonboard410c/dragonboard410c.c @@ -1,21 +1,35 @@ +// SPDX-License-Identifier: GPL-2.0+ /* * Board init file for Dragonboard 410C * * (C) Copyright 2015 Mateusz Kulikowski - * - * SPDX-License-Identifier: GPL-2.0+ */ #include #include #include #include +#include DECLARE_GLOBAL_DATA_PTR; +/* pointer to the device tree ammended by the firmware */ +extern void *fw_dtb; + +void *board_fdt_blob_setup(void) +{ + if (fdt_magic(fw_dtb) != FDT_MAGIC) { + printf("Firmware provided invalid dtb!\n"); + return NULL; + } + + return fw_dtb; +} + int dram_init(void) { gd->ram_size = PHYS_SDRAM_1_SIZE; + return 0; } @@ -27,7 +41,6 @@ int dram_init_banksize(void) return 0; } - int board_prepare_usb(enum usb_init_type type) { static struct udevice *pmic_gpio; @@ -96,11 +109,6 @@ int board_prepare_usb(enum usb_init_type type) return 0; } -int board_init(void) -{ - return 0; -} - /* Check for vol- button - if pressed - stop autoboot */ int misc_init_r(void) { @@ -128,9 +136,54 @@ int misc_init_r(void) } if (dm_gpio_get_value(&resin)) { - setenv("bootdelay", "-1"); + env_set("bootdelay", "-1"); printf("Power button pressed - dropping to console.\n"); } return 0; } + +int board_init(void) +{ + return 0; +} + +int ft_board_setup(void *blob, bd_t *bd) +{ + int offset, len, i; + const char *mac; + struct { + const char *compatible; + const char *property; + } fix[] = { + [0] = { + /* update the kernel's dtb with wlan mac */ + .compatible = "qcom,wcnss-wlan", + .property = "local-mac-address", + }, + [1] = { + /* update the kernel's dtb with bt mac */ + .compatible = "qcom,wcnss-bt", + .property = "local-bd-address", + }, + }; + + for (i = 0; i < sizeof(fix) / sizeof(fix[0]); i++) { + offset = fdt_node_offset_by_compatible(gd->fdt_blob, -1, + fix[i].compatible); + if (offset < 0) + continue; + + mac = fdt_getprop(gd->fdt_blob, offset, fix[i].property, &len); + if (mac) + do_fixup_by_compat(blob, fix[i].compatible, + fix[i].property, mac, ARP_HLEN, 1); + } + + return 0; +} + +void reset_cpu(ulong addr) +{ + psci_system_reset(); +}