summaryrefslogtreecommitdiffstats
path: root/arch
Commit message (Collapse)AuthorAgeFilesLines
* Merge branch 'for-next/x86'Sascha Hauer2021-12-156-26/+12
|\
| * x86_64: do not pass the EFI image handle or system table to relocationMasahiro Yamada2021-11-172-7/+3
| | | | | | | | | | | | | | | | | | | | | | | | The _reloc() function in reloc_x86_64.c is passed with the EFI image handle and system table, but they are unrelated to the relocation. In fact, they are not used at all. Remove them and clean up the assembler code as well. Signed-off-by: Masahiro Yamada <masahiroy@kernel.org> Link: https://lore.barebox.org/20211117034918.1226358-6-masahiroy@kernel.org Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
| * x86: reuse cmd_objcopy to generate barebox.efiMasahiro Yamada2021-11-171-6/+5
| | | | | | | | | | | | | | | | | | | | The objcopy rule is defined in scripts/Makefile.lib Reuse it. Signed-off-by: Masahiro Yamada <masahiroy@kernel.org> Link: https://lore.barebox.org/20211117034918.1226358-5-masahiroy@kernel.org Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
| * x86: stop copying unneeded sections to barebox.efiMasahiro Yamada2021-11-171-2/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Stop copying the following sections: __barebox_initcalls __barebox_exitcalls __barebox_cmd .barebox_magic Such sections do not exist. Signed-off-by: Masahiro Yamada <masahiroy@kernel.org> Link: https://lore.barebox.org/20211117034918.1226358-4-masahiroy@kernel.org Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
| * x86: remove x86-specific cmd_barebox__Masahiro Yamada2021-11-171-8/+3
| | | | | | | | | | | | | | | | | | | | | | | | | | The difference from cmd_barebox__ in the top Makefile is: -shared -Bsymbolic -znocombreloc Put the flags to LDFLAGS_barebox, and remove the x86-specific cmd_barebox__. Signed-off-by: Masahiro Yamada <masahiroy@kernel.org> Link: https://lore.barebox.org/20211117034918.1226358-3-masahiroy@kernel.org Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
| * kbuild: remove unneeded -nostdlib flagMasahiro Yamada2021-11-174-5/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The -nostdlib option requests the compiler to not use the standard system startup files or libraries when linking. arch/kvm/Makefile adds it to KBUILD_CFLAGS/AFLAGS, but it does not make sense because those are unrelated to linking. arch/{mips,riscv,x86}/Makefile passes it to the linker, but it is not sensible either. As noted above, adding -nostdlib makes sense only when $(CC) is used as a linker driver, but $(LD) is directly used for linking barebox. (ld.bfd/ld.lld recognizes the -nostdlib flag, but its behavior is obscure, and unneeded here.) Signed-off-by: Masahiro Yamada <masahiroy@kernel.org> Link: https://lore.barebox.org/20211117034918.1226358-2-masahiroy@kernel.org Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
* | Merge branch 'for-next/rockchip'Sascha Hauer2021-12-159-0/+105
|\ \
| * | ARM: rockchip_v8_defconfig: Enable Quartz64 boardSascha Hauer2021-11-171-0/+1
| | | | | | | | | | | | Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
| * | arm: rockchip: add support for the quartz64 boardMichael Riesch2021-11-178-0/+104
| |/ | | | | | | | | | | | | | | | | | | | | The Pine64 Quartz64 board features the Rockchip RK3566, a reduced but largely identical version of the RK3568. Two models (A and B) of the Quartz64 board are envisaged, where this patch targets the already available model A. Signed-off-by: Michael Riesch <michael.riesch@wolfvision.net> Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
* | Merge branch 'for-next/misc'Sascha Hauer2021-12-1526-189/+582
|\ \
| * | RISC-V: qemu-virt: add overlay for environment and stateAhmad Fatoum2021-12-073-0/+18
| | | | | | | | | | | | | | | | | | | | | | | | | | | Like we do on ARM, let's add state and environment to RISC-V QEMU Virt as well. Signed-off-by: Ahmad Fatoum <a.fatoum@pengutronix.de> Link: https://lore.barebox.org/20211125161042.3829996-8-a.fatoum@pengutronix.de Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
| * | ARM: qemu: move board code to central locationAhmad Fatoum2021-12-075-151/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The state/environment overlay applied on top of QEMU is applicable to other virt platforms as well, like RISC-V. In preparation for sharing code across architectures, add a new common/boards and move the board code there. Signed-off-by: Ahmad Fatoum <a.fatoum@pengutronix.de> Link: https://lore.barebox.org/20211125161042.3829996-6-a.fatoum@pengutronix.de Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
| * | ARM: qemu: enable deep probe supportAhmad Fatoum2021-12-071-30/+7
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | It's a bug to call barebox_register_of at pure_initcall level, because device tree probe may depend on other initialization done at pure_initcall. For example, if the QEMU-supplied Virt device tree had a model, barebox would attempt to register a new global variable before the global device is even initialized. With the move to deep probe we can just do overlay fixup in the board driver at safe postcore level. Fixes: ff8b098a4ad2 ("ARM: qemu: support for state & env via DT overlay") Signed-off-by: Ahmad Fatoum <a.fatoum@pengutronix.de> Link: https://lore.barebox.org/20211125161042.3829996-5-a.fatoum@pengutronix.de Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
| * | RISC-V: virt: add DEBUG_LL supportAhmad Fatoum2021-12-072-2/+9
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | While we have PBL console support, console isn't available during early barebox startup. Implement DEBUG_LL for Qemu RISC-V Virt to make such early debugging easier. Signed-off-by: Ahmad Fatoum <a.fatoum@pengutronix.de> Link: https://lore.barebox.org/20211125160657.3828643-1-a.fatoum@pengutronix.de Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
| * | ARM: Rockchip rk3568 EVB: git ignore sdram-init.binAhmad Fatoum2021-12-071-0/+1
| | | | | | | | | | | | | | | | | | | | | | | | Build expects this file there, but it shouldn't be checked in. Signed-off-by: Ahmad Fatoum <a.fatoum@pengutronix.de> Link: https://lore.barebox.org/20211202074231.195206-1-a.fatoum@pengutronix.de Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
| * | RISC-V: LiteX: fix comment about running from ROMAhmad Fatoum2021-11-251-2/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | Copy-paste left-over. On LiteX, barebox is already running from RAM that the BIOS had set up. Signed-off-by: Ahmad Fatoum <ahmad@a3f.at> Link: https://lore.barebox.org/20211125070515.671542-1-ahmad@a3f.at Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
| * | RISC-V: configs: virt: enable networking and PCIAhmad Fatoum2021-11-252-9/+31
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Recently, we have gained support for PCI and virtio networking. Enable both in the config as well as related useful options that depends on them. Signed-off-by: Ahmad Fatoum <ahmad@a3f.at> Link: https://lore.barebox.org/20211122213436.309749-2-ahmad@a3f.at Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
| * | RISC-V: enable HW_HAS_PCIAhmad Fatoum2021-11-252-0/+8
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | With the recently added generic ECAM PCI driver, we can now use PCI device drivers on the RISC-V Virt machine. Enable HW_HAS_PCI, so the driver and bus support can be selected. As HW_HAS_PCI on its own doesn't add any code, just enable it for the whole architecture. Signed-off-by: Ahmad Fatoum <ahmad@a3f.at> Link: https://lore.barebox.org/20211122213436.309749-1-ahmad@a3f.at Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
| * | ARM: socfpga: Set reset-names property for &mmcIan Abbott2021-11-221-0/+4
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The device tree node for SoCFPGA's MMC device has the `resets =` property, but is missing the `reset-names = "reset";` property. This causes the "dw_mmc" driver to output a warning: WARNING: dw_mmc ff704000.dwmmc0@ff704000.of: error claiming reset: Invalid argument Add the missing `reset-names` property to the `&mmc` node in "arch/arm/dts/socfpga.dtsi". It probably needs fixing in the upstream Linux device tree sources too! Cc: Ahmad Fatoum <a.fatoum@pengutronix.de> Cc: Steffen Trumtrar <s.trumtrar@pengutronix.de> Signed-off-by: Ian Abbott <abbotti@mev.co.uk> Reviewed-by: Ahmad Fatoum <a.fatoum@pengutronix.de> Link: https://lore.barebox.org/20211118130927.53123-1-abbotti@mev.co.uk Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
| * | ARM: stm32mp_defconfig: Enable Protonic STM32MP1 boardsOleksij Rempel2021-11-221-0/+1
| | | | | | | | | | | | | | | | | | Signed-off-by: Oleksij Rempel <o.rempel@pengutronix.de> Link: https://lore.barebox.org/20211118134125.408959-2-o.rempel@pengutronix.de Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
| * | arm: boards: Add support for PRTT1x STM32MP151 based boardsDavid Jander2021-11-2211-0/+473
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | - PRTT1A is a very simple 10Base-T1L Ethernet to 0-10V output converter module. - PRTT1S is a CO2- and RH measurement module with 10Base-T1L and PoDL power sink. - PRTT1C is a "white box switch" device, meant to control the other members of the PRTT1L family of devices, connected via 10Base-T1L and PoDL power. Signed-off-by: David Jander <david@protonic.nl> Signed-off-by: Oleksij Rempel <o.rempel@pengutronix.de> Link: https://lore.barebox.org/20211118134125.408959-1-o.rempel@pengutronix.de Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
| * | ARM64: qemu-virt64: extend config for PCI, Virt I/O and moreAhmad Fatoum2021-11-221-2/+33
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Besides some generic features like initrd booting and bootloader spec, there have been some drivers added since last time the config was touched, e.g. Virt I/O networking, input and generic ECAM PCI. Extend the config to support these. Example of something newly possible: test/emulate.pl qemu_virt64_defconfig -- -device VGA Signed-off-by: Ahmad Fatoum <a.fatoum@pengutronix.de> Link: https://lore.barebox.org/20211117130044.2437471-2-a.fatoum@pengutronix.de Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
| * | ARM64: qemu-virt: enable PCI supportAhmad Fatoum2021-11-221-0/+1
| |/ | | | | | | | | | | | | | | | | | | We now have a driver for the PCI controller on QEMU, so define HW_HAS_PCI. The barebox PCI implementation doesn't yet deal with 64-bit addresses, so use -M virt,highmem=off by default. Signed-off-by: Ahmad Fatoum <a.fatoum@pengutronix.de> Link: https://lore.barebox.org/20211117130044.2437471-1-a.fatoum@pengutronix.de Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
* | Merge branch 'for-next/imx'Sascha Hauer2021-12-153-9/+9
|\ \
| * | ARM: dts: imx6qdl: pfla02: use dummy regulatorsAndrej Picej2021-11-251-9/+3
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The power for the phyFLEX sd cards and ethernet controller are supplied by the DA9063 PMIC's LDOs. There is no barebox driver for those LDO regulators. Thus use dummy-regulators to suppress warning message. Signed-off-by: Andrej Picej <andrej.picej@norik.com> Link: https://lore.barebox.org/20211119095429.1905473-6-andrej.picej@norik.com Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
| * | ARM: configs: imx_v7_defconfig: add OCOTP write supportAndrej Picej2021-11-251-0/+1
| | | | | | | | | | | | | | | | | | Signed-off-by: Andrej Picej <andrej.picej@norik.com> Link: https://lore.barebox.org/20211119095429.1905473-4-andrej.picej@norik.com Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
| * | ARM: configs: imx_v7_defconfig: add OF commandsAndrej Picej2021-11-251-0/+3
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Add OF commands: - of_overlay, - of_display_timings and - of_fixup_status. Signed-off-by: Andrej Picej <andrej.picej@norik.com> Link: https://lore.barebox.org/20211119095429.1905473-3-andrej.picej@norik.com Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
| * | flash-header-phytec-pcl063: Set SOC voltage to 1.25 V during bootStefan Riedmueller2021-11-251-0/+2
| |/ | | | | | | | | | | | | | | | | | | | | To increase stability during boot in cold conditions (< -30 °C) increase the SOC voltage from 1.15 V to 1.25 V in DCD. The ARM voltage is left unchanged at its default 1.15 V. Signed-off-by: Stefan Riedmueller <s.riedmueller@phytec.de> Signed-off-by: Andrej Picej <andrej.picej@norik.com> Link: https://lore.barebox.org/20211119095429.1905473-2-andrej.picej@norik.com Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
* | Merge branch 'for-next/efi'Sascha Hauer2021-12-158-22/+24
|\ \
| * | ARM64: board-dt-2nd: remove no longer needed noinline function splitAhmad Fatoum2021-12-131-13/+8
| | | | | | | | | | | | | | | | | | | | | | | | | | | dt_2nd_aarch64 is called with stack already set up, so no need to split the entry point into a stackless and stackful part. Signed-off-by: Ahmad Fatoum <a.fatoum@pengutronix.de> Link: https://lore.barebox.org/20211122084732.2597109-29-a.fatoum@pengutronix.de Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
| * | kbuild: force 16-bit wchar_t treewideAhmad Fatoum2021-11-251-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | -fshort-wchar ensures L"" expands to code units of 16-bit each. We already enforce this on x86, but as a small step towards ARM and RISC-V EFI support in barebox, enable it globally. We already treat wchar_t as 16-bit everywhere where it's used (It's typedef'ed in <linux/nls.h> and <linux/stddef.h>. Signed-off-by: Ahmad Fatoum <a.fatoum@pengutronix.de> Link: https://lore.barebox.org/20211122084732.2597109-16-a.fatoum@pengutronix.de Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
| * | drivers: efi: move Kconfig options to new menuAhmad Fatoum2021-11-251-3/+0
| | | | | | | | | | | | | | | | | | | | | | | | | | | CONFIG_EFI_BOOTUP isn't really a driver option and we got a new menu now for all things EFI, so let's move it there. Signed-off-by: Ahmad Fatoum <a.fatoum@pengutronix.de> Link: https://lore.barebox.org/20211122084732.2597109-12-a.fatoum@pengutronix.de Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
| * | asm-generic: move sync_caches_for_execution declaration to <asm/cache.h>Ahmad Fatoum2021-11-255-5/+15
| |/ | | | | | | | | | | | | | | | | | | We have three architectures defining sync_caches_for_execution(). Have them all do so in a header of the same name to allow using it in common code later on, like in an EFI image loading routine. Signed-off-by: Ahmad Fatoum <a.fatoum@pengutronix.de> Link: https://lore.barebox.org/20211122084732.2597109-8-a.fatoum@pengutronix.de Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
* | RISC-V: interrupts: fix Zifencei emulation on rv64Ahmad Fatoum2021-12-131-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | Zifencei emulaton was added for bare bones 32-bit targets, but the code is there on 64-bit too. The instruction skip at the end of the function skips 4 bytes, the size of an instruction on both rv32 and rv64. The instruction decoder however assumes instructions are size(long) bytes, which is 8 > 4 on rv64. Fix this. Signed-off-by: Ahmad Fatoum <ahmad@a3f.at> Link: https://lore.barebox.org/20211203063340.1026512-1-ahmad@a3f.at Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
* | RISC-V: nmon: fix SiFive DEBUG_LL buildAhmad Fatoum2021-11-301-1/+1
|/ | | | | | | | | nmon includes <debug_ll.h> in assembly source, so add __ASSEMBLY__ guards, so the build doesn't fail. Signed-off-by: Ahmad Fatoum <ahmad@a3f.at> Link: https://lore.barebox.org/20211129064117.2007757-1-ahmad@a3f.at Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
* Merge branch 'for-next/skov-imx6'Sascha Hauer2021-11-157-34/+253
|\
| * ARM: boards: skov-imx6: use separate DTS for the iMX6 Solo variantOleksij Rempel2021-10-113-2/+28
| | | | | | | | | | | | | | | | | | iMX6 Solo boards do not have HDMI so remove it to avoid time spending on probing. Signed-off-by: Oleksij Rempel <o.rempel@pengutronix.de> Link: https://lore.barebox.org/20211006084323.14051-9-o.rempel@pengutronix.de Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
| * ARM: boards: skov-imx6: add defaultenv with eth1-discover scriptOleksij Rempel2021-10-113-0/+12
| | | | | | | | | | | | | | | | | | | | Add eth1-discover script to run USB detection if eth0 is disabled. The eth0 will be automatically disabled if the no on-board switch is detected. Signed-off-by: Oleksij Rempel <o.rempel@pengutronix.de> Link: https://lore.barebox.org/20211006084323.14051-8-o.rempel@pengutronix.de Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
| * ARM: boards: skov-imx6: start using deep-probeOleksij Rempel2021-10-111-5/+17
| | | | | | | | | | | | | | | | Port Skov boards to the deep-propbe and reduce boot time by 100msec. Signed-off-by: Oleksij Rempel <o.rempel@pengutronix.de> Link: https://lore.barebox.org/20211006084323.14051-7-o.rempel@pengutronix.de Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
| * ARM: boards: skov-imx6: fixup different DTS variantsOleksij Rempel2021-10-111-5/+43
| | | | | | | | | | | | Signed-off-by: Oleksij Rempel <o.rempel@pengutronix.de> Link: https://lore.barebox.org/20211006084323.14051-6-o.rempel@pengutronix.de Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
| * ARM: boards: skov-imx6: disable eth0 for barebox if no switch is detectedOleksij Rempel2021-10-111-0/+10
| | | | | | | | | | | | Signed-off-by: Oleksij Rempel <o.rempel@pengutronix.de> Link: https://lore.barebox.org/20211006084323.14051-5-o.rempel@pengutronix.de Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
| * ARM: boards: skov-imx6: add switch detectionOleksij Rempel2021-10-111-25/+124
| | | | | | | | | | | | | | | | | | There are board variants with same board ID but not switch. Detect this variants. Signed-off-by: Oleksij Rempel <o.rempel@pengutronix.de> Link: https://lore.barebox.org/20211006084323.14051-4-o.rempel@pengutronix.de Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
| * ARM: boards: skov-imx6: fixup_machine_compatible() add optional root nodeOleksij Rempel2021-10-111-6/+8
| | | | | | | | | | | | | | | | This will be needed by the next patch Signed-off-by: Oleksij Rempel <o.rempel@pengutronix.de> Link: https://lore.barebox.org/20211006084323.14051-3-o.rempel@pengutronix.de Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
| * ARM: dts: skov-imx6: add USB nodesOleksij Rempel2021-10-111-0/+20
| | | | | | | | | | | | | | | | We need USB working to make use of USB ethernet adapters. Signed-off-by: Oleksij Rempel <o.rempel@pengutronix.de> Link: https://lore.barebox.org/20211006084323.14051-2-o.rempel@pengutronix.de Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
* | Merge branch 'for-next/scripts-common-library'Sascha Hauer2021-11-152-0/+2
|\ \
| * | scripts: add target tool for rk-usb-loaderAhmad Fatoum2021-11-101-0/+1
| | | | | | | | | | | | | | | | | | | | | | | | Having rk-usb-loader as a target tool as well makes it easy to cross-compile it. Add the boilerplate. Signed-off-by: Ahmad Fatoum <a.fatoum@pengutronix.de> Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
| * | scripts: Add rk-usb-loader toolSascha Hauer2021-11-101-0/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | This adds a tool suitable for bootstrapping barebox on Rockchip RK3568 SoCs. It has been tested on this SoC only. It might or might not work with minor adjustments on other SoCs. Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de> Tested-by: Michael Riesch <michael.riesch@wolfvision.net>
* | | Merge branch 'for-next/rockchip'Sascha Hauer2021-11-1511-64/+209
|\ \ \
| * | | ARM: Rockchip: add delimiter between boards and board featuresAhmad Fatoum2021-11-101-1/+4
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The CONFIG_ARCH_RK3568_OPTEE is directly after the boards, has a very generic name and is selectable without CONFIG_ARCH_RK3568. Fix these. Signed-off-by: Ahmad Fatoum <a.fatoum@pengutronix.de> Link: https://lore.barebox.org/20211108075209.2366770-9-a.fatoum@pengutronix.de Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
| * | | ARM: Rockchip: make rk3568's atf_load_bl31 reusableAhmad Fatoum2021-11-101-24/+29
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Future support for rk3399 can use the same function, so move the bulk into a macro. We can't use a function here, because the function itself uses macros like IS_ENABLED() and get_builtin_firmware(), which we would have to call outside of the common code, reducing amount of code we share. Signed-off-by: Ahmad Fatoum <a.fatoum@pengutronix.de> Link: https://lore.barebox.org/20211108075209.2366770-8-a.fatoum@pengutronix.de Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>