summaryrefslogtreecommitdiff
path: root/board/raspberrypi
AgeCommit message (Collapse)Author
2023-09-03arm: rpi: Switch to a text environmentSimon Glass
Use the new environment format so we can drop most of the config.h file. Signed-off-by: Simon Glass <[email protected]>
2023-08-15common: return type board_get_usable_ram_topHeinrich Schuchardt
board_get_usable_ram_top() returns a physical address that is stored in gd->ram_top. The return type of the function should be phys_addr_t like the current type of gd->ram_top. Signed-off-by: Heinrich Schuchardt <[email protected]>
2023-08-13rpi: set the correct parameter for simple framebuffer nodeMeng Li
When raspberrpi-4b platform boots up, there are 2 sets of same bootup log displayed on HDMI monitor screen, it looks like the screen is split into 2 parts. The root cause is that video format of u-boot is different from kernel. The fixing "a8r8g8b8" video format is used in u-boot, but "r5g6b5" video format from framebuffer node is used in kernel image. In order to avoid weird display status on screen, it needs to set the correct parameter for simple framebuffer node even if it has existed. Signed-off-by: Meng Li <[email protected]>
2023-03-14rpi: Update the RPi Zero 2W DT filenamePeter Robinson
Update the Raspberry Pi Zero 2W device tree file name to match what landed upstream. Signed-off-by: Peter Robinson <[email protected]>
2023-03-14rpi: Copy eth PHY address from fw DT to loaded DTAntoine Mazeas
Some Raspberry Pi 400 boards, specifically rev 1.1, have a different address for the ethernet PHY device than what is provided by the kernel DTB. The correct address is provided by the firmware, so we should carry it over into the loaded device tree so that ethernet works on such boards. Signed-off-by: Antoine Mazeas <[email protected]> Signed-off-by: Peter Robinson <[email protected]>
2023-03-14rpi: Copy properties from firmware dtb to the loaded dtbAntoine Mazeas
The RPI firmware adjusts several property values in the dtb it passes to u-boot depending on the board/SoC revision. Inherit some of these when u-boot loads a dtb itself. Specificaly copy: * /model: The firmware provides a more specific string * /memreserve: The firmware defines a reserved range, better keep it * emmc2bus and pcie0 dma-ranges: The C0T revision of the bcm2711 Soc (as present on rpi 400 and some rpi 4B boards) has different values for these then the B0T revision. So these need to be adjusted to boot on these boards * blconfig: The firmware defines the memory area where the blconfig stored. Copy those over so it can be enabled. * /chosen/kaslr-seed: The firmware generates a kaslr seed, take advantage of that. Signed-off-by: Sjoerd Simons <[email protected]> Signed-off-by: Antoine Mazeas <[email protected]> Reviewed-by: Simon Glass <[email protected]> Signed-off-by: Peter Robinson <[email protected]>
2022-12-02MAINTAINERS: add RaspberryPi co-maintainerMatthias Brugger
Peter accpeted to step up as a co-maintainer for the RPis. Reflect that in the corresponding MAINTAINERS files. Signed-off-by: Matthias Brugger <[email protected]> Reviewed-by: Peter Robinson <[email protected]>
2022-10-30video: Drop use of the lcd header fileSimon Glass
This file is being removed so drop remaining references to it. Signed-off-by: Simon Glass <[email protected]>
2022-09-23board_f: Fix types for board_get_usable_ram_top()Pali Rohár
Commit 37dc958947ed ("global_data.h: Change ram_top type to phys_addr_t") changed type of ram_top member from ulong to phys_addr_t but did not changed types in board_get_usable_ram_top() function which returns value for ram_top. So change ulong to phys_addr_t type also in board_get_usable_ram_top() signature and implementations. Fixes: 37dc958947ed ("global_data.h: Change ram_top type to phys_addr_t") Signed-off-by: Pali Rohár <[email protected]> Reviewed-by: Simon Glass <[email protected]>
2021-12-20Merge tag 'v2022.01-rc4' into nextTom Rini
Prepare v2022.01-rc4
2021-11-30common: rename functions lcd_dt_simplefb to fdt_simplefbPatrick Delaunay
Rename the function named lcd_dt_simplefb* to fdt_simplefb* to be aligned with the associated file name fdt_simplefb.h/fdt_simplefb.c Signed-off-by: Patrick Delaunay <[email protected]> Reviewed-by: Matthias Brugger <[email protected]>
2021-11-30rpi: Add identifier for the new RPi Zero 2 WPeter Robinson
The Raspberry Pi Foundation released the new Zero 2 W which we want to detect, so we can detect the correct device tree file name. Signed-off-by: Peter Robinson <[email protected]> Signed-off-by: Matthias Brugger <[email protected]>
2021-11-30rpi: Update the Raspberry Pi doucmentation URLPeter Robinson
The Raspberry Pi Foundation has updated their documentation so update the URL to the latest place to find the HW device revision codes. Signed-off-by: Peter Robinson <[email protected]> Signed-off-by: Matthias Brugger <[email protected]>
2021-10-27sandbox: Remove OF_HOSTFILEIlias Apalodimas
OF_HOSTFILE is used on sandbox configs only. Although it's pretty unique and not causing any confusions, we are better of having simpler config options for the DTB. So let's replace that with the existing OF_BOARD. U-Boot would then have only three config options for the DTB origin. - OF_SEPARATE, build separately from U-Boot - OF_BOARD, board specific way of providing the DTB - OF_EMBED embedded in the u-boot binary(should not be used in production Signed-off-by: Ilias Apalodimas <[email protected]> Reviewed-by: Simon Glass <[email protected]>
2021-09-27Merge tag 'v2021.10-rc5' into nextTom Rini
Prepare v2021.10-rc5
2021-09-15rpi: Conditionally add simple-framebuffer nodeIvan T. Ivanov
It appears that RPi firmware has already added framebuffer node under /chosen, at least on RPi 2 versions. So check for this and don't add duplicate node. Signed-off-by: Ivan T. Ivanov <[email protected]> Signed-off-by: Matthias Brugger <[email protected]>
2021-09-07arm: Disable ATAGs supportTom Rini
With the exceptions of ds109, ds414, icnova-a20-swac, nokia_rx51 and stemmy, disable ATAG support. A large number of platforms had enabled support but never supported a kernel so old as to require it. Further, some platforms are old enough to support both, but are well supported by devicetree booting, and have been for a number of years. This is because some of the ATAGs related functions have been re-used to provide the same kind of information, but for devicetree or just generally to inform the user. When needed still, rename these functions to get_board_revision() instead, to avoid conflicts. In other cases, these functions were simply unused, so drop them. Cc: Andre Przywara <[email protected]> Cc: Jagan Teki <[email protected]> Cc: Phil Sutter <[email protected]> Cc: Stefan Bosch <[email protected]> Signed-off-by: Tom Rini <[email protected]>
2021-02-18rpi: Add identifier for the new CM4Nicolas Saenz Julienne
The Raspberry Pi Foundation released the new Compute Module 4 which we want to detect, so we can enable Ethernet on it and know the correct device tree file name. Note that this sets the Ethernet option to true since the official CM4 IO board has an Ethernet port. But that might not be the case when using custom ones. Signed-off-by: Nicolas Saenz Julienne <[email protected]> Reviewed-by: Peter Robinson <[email protected]> Tested-by: Peter Robinson <[email protected]> Signed-off-by: Matthias Brugger <[email protected]>
2021-02-18rpi: Add identifier for the new RPi400Nicolas Saenz Julienne
The Raspberry Pi Foundation released the new RPi400 which we want to detect, so we can enable Ethernet on it and know the correct device tree file name. Signed-off-by: Nicolas Saenz Julienne <[email protected]> Reviewed-by: Peter Robinson <[email protected]> Tested-by: Peter Robinson <[email protected]> Signed-off-by: Matthias Brugger <[email protected]>
2021-02-18rpi: limit size of the RAM to the multiple of the MMU_SECTION_SIZEMarek Szyprowski
When RPi4 is booted from USB Mass Storage, the firmware reports 947MiB of the ARM memory (948 in case of the standard SD-card boot). This value is not MMU_SECTION_SIZE aligned, so the dram_bank_mmu_setup() skips mapping of the last 1MiB. This later causes u-boot in ARM 32bit mode to freeze, because it relocated itself into that unmapped memory and fails to execute. Fix this by limiting the size of the first bank to the multiple of MMU_SECTION_SIZE. Signed-off-by: Marek Szyprowski <[email protected]> Reviewed-by: Nicolas Saenz Julienne <[email protected]> Tested-by: Jaehoon Chung <[email protected]> Reviewed-by: Jaehoon Chung <[email protected]> Signed-off-by: Matthias Brugger <[email protected]>
2020-07-17treewide: convert bd_t to struct bd_info by coccinelleMasahiro Yamada
The Linux coding style guide (Documentation/process/coding-style.rst) clearly says: It's a **mistake** to use typedef for structures and pointers. Besides, using typedef for structures is annoying when you try to make headers self-contained. Let's say you have the following function declaration in a header: void foo(bd_t *bd); This is not self-contained since bd_t is not defined. To tell the compiler what 'bd_t' is, you need to include <asm/u-boot.h> #include <asm/u-boot.h> void foo(bd_t *bd); Then, the include direcective pulls in more bloat needlessly. If you use 'struct bd_info' instead, it is enough to put a forward declaration as follows: struct bd_info; void foo(struct bd_info *bd); Right, typedef'ing bd_t is a mistake. I used coccinelle to generate this commit. The semantic patch that makes this change is as follows: <smpl> @@ typedef bd_t; @@ -bd_t +struct bd_info </smpl> Signed-off-by: Masahiro Yamada <[email protected]>
2020-05-17efi_loader: round the memory area in efi_add_memory_map()Michael Walle
Virtually all callers of this function do the rounding on their own. Some do it right, some don't. Instead of doing this in each caller, do the rounding in efi_add_memory_map(). Change the size parameter to bytes instead of pages and remove aligning and size calculation in all callers. There is no more need to make the original efi_add_memory_map() (which takes pages as size) available outside the module. Thus rename it to efi_add_memory_map_pg() and make it static to prevent further misuse outside the module. Signed-off-by: Michael Walle <[email protected]> Add missing comma in sunxi_display.c. Reviewed-by: Heinrich Schuchardt <[email protected]>
2020-05-13rpi: use the newly-added RPI_EFI_NR_SPIN_PAGESKyle Evans
Some systems may use a slightly larger stub to do PSCI for booting the RPi family. The number of pages has been made configurable so that operating systems building U-Boot for use in these kinds of environments can reserve more memory in the EFI memory map. Signed-off-by: Kyle Evans <[email protected]> Signed-off-by: Matthias Brugger <[email protected]>
2020-05-13rpi: Kconfig option for initial page reservationKyle Evans
While the nearly-universal default for the Raspberry Pi family is to use spin tables and the spin table implementation provided by the Raspberry Pi Foundation, FreeBSD and others may use a PSCI implementation instead. Accommodate these setups by allowing them to configure for more than one page to be reserved in the initial reservation. The default reservation remains as one page. Signed-off-by: Kyle Evans <[email protected]> Signed-off-by: Matthias Brugger <[email protected]>
2019-12-11rpi: Enable DRAM bank initialization on arm64Matthias Brugger
Up to now we only update the DRAM banks when we are define CONFIG_BCM2711. But our one binary approach uses a config that supports BCM2837 and BCM2711. As a result we only see one gibibyte of RAM on Raspberry Pi 4, even if it has more RAM. Fix this by calling dram_init_banksize. Fixes: 5694090670 ("ARM: defconfig: add unified config for RPi3 and RPi4") Signed-off-by: Matthias Brugger <[email protected]>
2019-12-11rpi: fix dram bank initializationMatthias Brugger
To update the dram bank information from device-tree we use fdtdec_decode_ram_size() which expectes the the size-cells and address-cells to be defined in the memory node. For normal system RAM these values are defined in the root node. When the values differ from the default values defined in the spec, we can end up with wrong RAM bank information. Switch to the "standard" way to update the RAM bank information to avoid this. Fixes: 9de5b89e4c ("rpi4: enable dram bank initialization") Signed-off-by: Matthias Brugger <[email protected]>
2019-12-02common: Move board_get_usable_ram_top() out of common.hSimon Glass
Move this function into init.h which seems to be designed for this sort of thing. Also update the header to declare struct global_data so that it can be included without global_data.h being needed. Signed-off-by: Simon Glass <[email protected]> Reviewed-by: Tom Rini <[email protected]>
2019-11-24ARM: bcm283x: Set memory map at run-timeMatthias Brugger
For bcm283x based on arm64 we also have to change the mm_region. Add assign this in mach_cpu_init() so we can create now one binary for RPi3 and RPi4. Signed-off-by: Matthias Brugger <[email protected]>
2019-11-24rpi: push fw_dtb_pointer in the .data sectionMatthias Brugger
The fw_dtb_pointer was defined in the assembly code, which makes him live in section .text_rest Put that's not necessary, we can push the variable in the .data section. This will prevent relocation errors like: board/raspberrypi/rpi/rpi.c:317:(.text.board_get_usable_ram_top+0x8): relocation truncated to fit: R_AARCH64_LDST64_ABS_LO12_NC against symbol `fw_dtb_pointer' defined in .text section in board/raspberrypi/rpi/built-in.o Signed-off-by: Matthias Brugger <[email protected]>
2019-10-01rpi4: enable dram bank initializationMatthias Brugger
When booting through the efi stub, the memory map get's created by reading the dram bank information. Depending on the version of the RPi4 this information changes. Read the device tree to initialize the dram bank data structure. This way the kernel is able to access the whole range of available memory. Signed-off-by: Matthias Brugger <[email protected]>
2019-09-06RPI: Add memory map for bcm2711Andrei Gherzan
Define the memory map for the BCM2711 based on the dt configuration available in the Raspberry Pi kernel fork. Signed-off-by: Andrei Gherzan <[email protected]> [mb: BCM2838 -> BCM2711] Signed-off-by: Matthias Brugger <[email protected]>
2019-09-06RPI: Add entry for Raspberry Pi 4 model BAndrei Gherzan
The Raspebrry Pi 4 uses the new revision code scheme as documented by the foundation. This change adds an entry for this board as well. Signed-off-by: Andrei Gherzan <[email protected]> Signed-off-by: Matthias Brugger <[email protected]>
2019-08-11env: Drop environment.h header file where not neededSimon Glass
This header file is now only used by files that access internal environment features. Drop it from various places where it is not needed. Acked-by: Joe Hershberger <[email protected]> Signed-off-by: Simon Glass <[email protected]>
2019-08-11env: Move env_set_hex() to env.hSimon Glass
Move env_set_hex() over to the new header file along with env_set_addr() which uses it. Signed-off-by: Simon Glass <[email protected]> Acked-by: Joe Hershberger <[email protected]>
2019-03-29RPi: Add mbrugger as board maintainerMatthias Brugger
I took over maintainership from Alex Graf with commit 3157bbfa18 ("rpi: Make Matthias maintainer") But I forgot to update the board maintainer file. This patch adds myself to the game. Signed-off-by: Matthias Brugger <[email protected]> Reviewed-by: Heinrich Schuchardt <[email protected]> Reviewed-by: Alexander Graf <[email protected]>
2019-02-15rpi: add Compute Module 3+Jonathan Gray
Add Raspberry Pi Compute Module 3+ to list of models, the revision code is 0x10 according to the list on raspberrypi.org. v2: Use the same dtb name as CM3 as CM3+ is a drop in replacement for CM3. Signed-off-by: Jonathan Gray <[email protected]> Reviewed-by: Alexander Graf <[email protected]> Signed-off-by: Matthias Brugger <[email protected]>
2018-12-03rpi: add 3 Model A+Jonathan Gray
Add Raspberry Pi 3 Model A+ to list of models, the revision code is 0xE according to the list on raspberrypi.org. Signed-off-by: Jonathan Gray <[email protected]> Signed-off-by: Alexander Graf <[email protected]>
2018-12-03rpi: add URL of official revision code listJonathan Gray
Replace various third party lists of Raspberry Pi revision codes in a comment with the list on raspberrypi.org. Signed-off-by: Jonathan Gray <[email protected]> Signed-off-by: Alexander Graf <[email protected]>
2018-09-10Remove <inttypes.h> includes and PRI* usages in printf() entirelyMasahiro Yamada
In int-ll64.h, we always use the following typedefs: typedef unsigned int u32; typedef unsigned long uintptr_t; typedef unsigned long long u64; This does not need to match to the compiler's <inttypes.h>. Do not include it. The use of PRI* makes the code super-ugly. You can simply use "l" for printing uintptr_t, "ll" for u64, and no modifier for u32. Signed-off-by: Masahiro Yamada <[email protected]>
2018-05-07SPDX: Convert all of our single license tags to Linux Kernel styleTom Rini
When U-Boot started using SPDX tags we were among the early adopters and there weren't a lot of other examples to borrow from. So we picked the area of the file that usually had a full license text and replaced it with an appropriate SPDX-License-Identifier: entry. Since then, the Linux Kernel has adopted SPDX tags and they place it as the very first line in a file (except where shebangs are used, then it's second line) and with slightly different comment styles than us. In part due to community overlap, in part due to better tag visibility and in part for other minor reasons, switch over to that style. This commit changes all instances where we have a single declared license in the tag as both the before and after are identical in tag contents. There's also a few places where I found we did not have a tag and have introduced one. Signed-off-by: Tom Rini <[email protected]>
2018-04-08net: Move enetaddr env access code to env config instead of net configAlex Kiernan
In order that we can use eth_env_* even when CONFIG_NET isn't set, move these functions to environment code from net code. This fixes failures such as: board/ti/am335x/built-in.o: In function `board_late_init': board/ti/am335x/board.c:752: undefined reference to `eth_env_set_enetaddr' u-boot/board/ti/am335x/board.c:766: undefined reference to `eth_env_set_enetaddr' which caters for use cases such as: commit f411b5cca48f ("board: am335x: Always set eth/eth1addr environment variable") when Ethernet is required in Linux, but not U-Boot. Signed-off-by: Alex Kiernan <[email protected]>
2018-04-06rpi: Complete table of models with new revision code schemeJonathan Gray
In the model table for the new revision code encoding documented in https://www.raspberrypi.org/documentation/hardware/raspberrypi/revision-codes/README.md add the entries for old models with the new scheme and add CM3 which only appears in the new scheme. A device tree for CM3 is not currently upstreamed in linux. When that happens the name will likely have to be adjusted in the table. Signed-off-by: Jonathan Gray <[email protected]> Signed-off-by: Alexander Graf <[email protected]>
2018-04-05rpi: Add identifier for the new RPi3 B+Alexander Graf
The Raspberr Pi Foundation released a new RPi3 version which we want to detect as well, so we can enable ethernet on it and know the correct device tree file name. Add an identifier for it. Signed-off-by: Alexander Graf <[email protected]>
2018-02-15RPi: Add myself as board maintainerAlexander Graf
Commit 958d55f26ce ("MAINTAINERS: Take over BCM2835 maintainership") put me in as maintainer for the RPi soc, but forgot to update the board MAINTAINERS file. Add me there too. Signed-off-by: Alexander Graf <[email protected]>
2018-01-28rpi: Remove runtime disabling support for serialAlexander Graf
We are switching to a model where our board file can directly fail probing of serial devices when they're not usable, so remove the current runtime hack we have. Signed-off-by: Alexander Graf <[email protected]>
2018-01-28bcm283x: Add pinctrl driverAlexander Graf
The bcm283x family of SoCs have a GPIO controller that also acts as pinctrl controller. This patch introduces a new pinctrl driver that can actually properly mux devices into their device tree defined pin states and is now the primary owner of the gpio device. The previous GPIO driver gets moved into a subdevice of the pinctrl driver, bound to the same OF node. That way whenever a device asks for pinctrl support, it gets it automatically from the pinctrl driver and GPIO support is still available in the normal command line phase. Signed-off-by: Alexander Graf <[email protected]>
2017-12-04add support for Raspberry Pi Zero WDmitry Korunov
Signed-off-by: Dmitry Korunov <[email protected]>
2017-08-16env: Rename getenv/_f() to env_get()Simon Glass
We are now using an env_ prefix for environment functions. Rename these two functions for consistency. Also add function comments in common.h. Quite a few places use getenv() in a condition context, provoking a warning from checkpatch. These are fixed up in this patch also. Suggested-by: Wolfgang Denk <[email protected]> Signed-off-by: Simon Glass <[email protected]>
2017-08-16env: Rename eth_setenv_enetaddr() to eth_env_set_enetaddr()Simon Glass
Rename this function for consistency with env_set(). Signed-off-by: Simon Glass <[email protected]>
2017-08-16env: Rename common functions related to setenv()Simon Glass
We are now using an env_ prefix for environment functions. Rename these commonly used functions, for consistency. Also add function comments in common.h. Suggested-by: Wolfgang Denk <[email protected]> Signed-off-by: Simon Glass <[email protected]>