aboutsummaryrefslogtreecommitdiff
path: root/target
Commit message (Collapse)AuthorAge
* generic: 6.6: fix realtek PHY detection patchDaniel Golle2024-03-11
| | | | | | | Avoid crashing the kernel when trying to detect early versions of RealTek RTL8221B 2.5G Ethernet PHY. Signed-off-by: Daniel Golle <daniel@makrotopia.org>
* generic: 6.6: fix uncompressed kallsymsRobert Marko2024-03-11
| | | | | | | | | | | | | | | Currently, the existing uncompressed kallsym support is causing qualcommax boards to hang on boot, and only after earlycon and verbose BUG() prints are enabled the trace is visible: [ 0.000000] ------------[ cut here ]------------ [ 0.000000] kernel BUG at kernel/kallsyms.c:340! [ 0.000000] Internal error: Oops - BUG: 00000000f2000800 [#1] SMP Felix has fixed up the uncompressed kallsyms support so modify the current patch with the fix. All credits for the code go to Felix. Signed-off-by: Robert Marko <robimarko@gmail.com>
* generic: v6.6: update fitblk driver to work with Linux 6.6Daniel Golle2024-03-11
| | | | | | | Update fitblk driver which has previously been backported to Linux 6.1 so it can build and work with Linux 6.6. Signed-off-by: Daniel Golle <daniel@makrotopia.org>
* generic: 6.6: refresh config symbolsWeijie Gao2024-03-11
| | | | | | | | | | Sort generic config for 6.6. The sort commands: $ ./scripts/kconfig.pl '+' target/linux/generic/config-6.6 /dev/null > target/linux/generic/config-6.6-new $ mv target/linux/generic/config-6.6-new target/linux/generic/config-6.6 Signed-off-by: Weijie Gao <hackpascal@gmail.com>
* generic: 6.6: add missing symbolsWeijie Gao2024-03-11
| | | | | | | | Add missing symbols to config for 6.6. Signed-off-by: Robert Marko <robimarko@gmail.com> Signed-off-by: Daniel Golle <daniel@makrotopia.org> Signed-off-by: Weijie Gao <hackpascal@gmail.com>
* generic: 6.6: refresh hack patchesWeijie Gao2024-03-11
| | | | | | Refresh hack patches with make target/linux/refresh. Signed-off-by: Weijie Gao <hackpascal@gmail.com>
* generic: 6.6: refresh pending patchesWeijie Gao2024-03-11
| | | | | | Refresh pending patches with make target/linux/refresh. Signed-off-by: Weijie Gao <hackpascal@gmail.com>
* generic: 6.6: refresh backport patchesWeijie Gao2024-03-11
| | | | | | Refresh backport patches with make target/linux/refresh. Signed-off-by: Weijie Gao <hackpascal@gmail.com>
* generic: 6.6: manually refresh hack patchesWeijie Gao2024-03-11
| | | | | | Refresh hack patches for kernel 6.6. Signed-off-by: Weijie Gao <hackpascal@gmail.com>
* generic: 6.6: manually refresh pending patchesWeijie Gao2024-03-11
| | | | | | | Refresh pending patches for kernel 6.6. Signed-off-by: Daniel Golle <daniel@makrotopia.org> Signed-off-by: Weijie Gao <hackpascal@gmail.com>
* generic: 6.6: manually refresh backport patchesWeijie Gao2024-03-11
| | | | | | Refresh backport patches that still needs to be merged for kernel 6.6. Signed-off-by: Weijie Gao <hackpascal@gmail.com>
* generic: 6.6: drop pending patch backported as fixesWeijie Gao2024-03-11
| | | | | | Drop pending patch backported as fixes in later kernel version. Signed-off-by: Weijie Gao <hackpascal@gmail.com>
* generic: 6.6: drop backport patchesWeijie Gao2024-03-11
| | | | | | Drop all backport patches that are now included in kernel 6.6. Signed-off-by: Weijie Gao <hackpascal@gmail.com>
* generic: copy backport, hack, pending patch and config from 6.1 to 6.6Weijie Gao2024-03-11
| | | | | | Copy backport, hack, pending patch and config from 6.1 to 6.6. Signed-off-by: Weijie Gao <hackpascal@gmail.com>
* mediatek: mt7988: fix clk for 2nd PCIe portDaniel Golle2024-03-11
| | | | | | | | | | | | | Due to what seems to be an undocumented oddity in MediaTek's MT7988 SoC design the CLK_INFRA_PCIE_PERI_26M_CK_P2 clock requires CLK_INFRA_PCIE_PERI_26M_CK_P3 to be enabled. This currently leads to PCIe port 2 not working in Linux. Reflect the apparent relationship in the clk driver to make sure PCIe port 2 of the MT7988 SoC works. Signed-off-by: Daniel Golle <daniel@makrotopia.org>
* kernel: mtk_eth_soc: release MAC_MCR_FORCE_LINK only when MAC is upDaniel Golle2024-03-11
| | | | | | | | | | | Clearing bit MAC_MCR_FORCE_LINK which forces the link down too early can result in MAC ending up in a broken/blocked state. Fix this by handling this bit in the .mac_link_up and .mac_link_down calls instead of in .mac_finish. Suggested-by: Mason-cw Chang <Mason-cw.Chang@mediatek.com> Signed-off-by: Daniel Golle <daniel@makrotopia.org>
* mediatek: mt7622: linksys-e8450: set driving strength for SPI-NANDDaniel Golle2024-03-11
| | | | | | | Set 12mA driving strength for SPI-NAND pins like the stock firmware's bootloader does as well. Signed-off-by: Daniel Golle <daniel@makrotopia.org>
* bmips: add support for SmartRG SR505nKyle Hendry2024-03-10
| | | | | | | | | | | | | | | | | | | | | | | | | | | Specifications: - SoC: Broadcom BCM63168 dual 400MHz MIPS - Flash: 16MB SPI NOR W25Q128WFG - RAM: 128MB DDR3 W631GG6KB-15 - Ethernet: 1x 1000M, 3x 100M - Wifi: BCM435F - 1x USB 2.0 port - 3x Button - 12x LED Flashing via serial - Connect to the 3.3V TTL UART on the board (J6 pinout Vcc Rx Tx Gnd) at 115200-8-N-1 - Press any key in the serial console when powering up the board to enter the CFE prompt - Configure an interface on your workstation to static IP 192.168.1.100 and connect it to the board - Start a TFTP server with the firmware image - On the CFE prompt, enter the command "f 192.168.1.100:openwrt-bmips-bcm63268-smartrg_sr505n-squashfs-cfe.bin" Signed-off-by: Kyle Hendry <kylehendrydev@gmail.com> [Remove unneeded LED labels] Signed-off-by: Álvaro Fernández Rojas <noltari@gmail.com>
* starfive: add new target for StarFive JH7100/7110 SoCZoltan HERPAI2024-03-10
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This target adds support for the StarFive JH7100 and JH7110 SoCs, based on 6.1, as well as a couple boards equipped with these. Specifications: SoCs: JH7100: - StarFive JH7100 dual-core RISC-V (U74, RC64GC) - additional monitoring (S7) and control (E24) cores - 2Mb L2 cache JH7110: - StarFive JH7110 quad-core RISC-V (U74, RV64GC) - additional monitoring (S7) and control (E24) cores - 2Mb L2 cache Boards: VisionFive1: - JH7100 @ 1GHz - Memory: 8Gb LPDDR4 - 4x USB3.0 - 1x GBit ethernet - AMPak 6236 wifi / bluetooth - audio - powered via USB-C VisionFive2: - JH7110 @ 1.5GHz - Memory: 2/4/8Gb DDR4 - 2x Gbit ethernet - 2x USB3.0 / 2x USB2.0 - eMMC / SDIO - various multimedia input/outputs (MIPI CSI, HDMI, audio) - M.2 key M slot - PoE support - powered via USB-C Installation: Standard SD-card installation via dd-ing the generated image to an SD-card of at least 256Mb. Signed-off-by: Zoltan HERPAI <wigyori@uid0.hu>
* usb: add cdns3 supportZoltan HERPAI2024-03-10
| | | | | | | | | | CDNS3 is a SuperSpeed (SS) USB 3.0 Dual-Role-Device (DRD) controller from Cadence. Add support for this device, and add the required symbols into the generic configs. Compile-tested: apm821xx, bcm4908, imx, mpc85xx, pistachio, starfive Signed-off-by: Zoltan HERPAI <wigyori@uid0.hu>
* ramips: improve support for STORYLiNK SAP-G3200U3Sungbo Eo2024-03-10
| | | | | | | | | | | | | | | | | | | | | | | | | | | * Increase flash SPI frequency to 50MHz The maximum SPI frequency of MX25L6406EM2I is 86 MHz, but in this patch 50 MHz was chosen as a safe value. * Update Ethernet MAC addresses Till now LAN/WAN MAC addresses were flipped compared to stock firmware. * Fix Wi-Fi LEDs by adding mt76 led nodes * Fix LAN port order LAN ports are in reverse order of switch ports. * Fix the well-known "LZMA ERROR 1" error by using lzma-loader * Set uImage name, which enables installation via stock web interface: 1. Upload **initramfs** image file to the web page. 2. Boot into OpenWrt and perform sysupgrade with sysupgrade image. Signed-off-by: Sungbo Eo <mans0n@gorani.run>
* ramips: add factory image for ipTIME AX2004MSungbo Eo2024-03-10
| | | | | | | | | | | | | Unlike the recovery image, this initramfs-factory image can be flashed using the stock firmware web interface (from any active boot partition), as well as the bootloader recovery web page. Drop the recovery image in favor of the factory image. Installation via stock/recovery web interface: 1. Flash **initramfs-factory** image through the web page. 2. Boot into OpenWrt and perform sysupgrade with sysupgrade image. Signed-off-by: Sungbo Eo <mans0n@gorani.run>
* ramips: mt7621: use variable for relocate-kernel argumentSungbo Eo2024-03-10
| | | | | | | | The "0x80001000" address logically comes from "loadaddr-y" variable for mt7621 subtarget. Let's replace the hardcoded value with the predefined variable. This change is purely cosmetic. Signed-off-by: Sungbo Eo <mans0n@gorani.run>
* ramips: rename mtd partition of ipTIME NAND devicesSungbo Eo2024-03-10
| | | | | | | | | | | | Contrary to common ipTIME NOR devices, the "Config" partition of T5004 and AX2004M contain normal U-Boot environment variables. Renaming the partition into "u-boot-env" serves for better description, and it also conforms to common naming practice in OpenWrt. This patch might also be extended to A3004T, but its u-boot-env partition layout has not been confirmed yet. Signed-off-by: Sungbo Eo <mans0n@gorani.run>
* ramips: add NMBM support for ipTIME AX2004MSungbo Eo2024-03-10
| | | | | | | | | | | | | | | | AX2004M uses NMBM on its NAND flash, but it was not enabled in DTS as the device support [1] had been added before NMBM feature in mtk_bmt driver [2]. Let's enable it now. With this change, there is a low possibility of boot failure after sysupgrade from older versions. As AX2004M already has gone through two stable releases in the meantime, it would be safe to warn users by bumping DEVICE_COMPAT_VERSION. [1] 37753f34ac68 ("ramips: add support for ipTIME AX2004M") [2] 06382d1af7b2 ("kernel: add support for mediatek NMBM flash mapping support") Signed-off-by: Sungbo Eo <mans0n@gorani.run>
* ath79: add support for D-Link COVR-C1200 A1Sebastian Schaper2024-03-09
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The COVR-C1200 devices are sold as "Whole Home Mesh Wi-Fi" sets in packs of two (COVR-C1202) and three (COVR-C1203). Specifications: * QCA9563, 16 MiB flash, 128 MiB RAM, 2x3:2 802.11n * QCA9886 2x2:2 801.11ac Wave 2 * AR8337, 2 Gigabit ports (1: WAN; 2: LAN) * USB Type-C power connector (5V, 3A) Installation COVR Point A: * In factory reset state: OEM Web UI is at 192.168.0.50 no DHCP, skip wizard by directly accessing: http://192.168.0.50/UpdateFirmware_Simple.html * After completing setup wizard: Web UI is at 192.168.0.1 DHCP enabled, login with empty password * Flash factory.bin * Perform a factory reset to restore OpenWrt UCI defaults Installation COVR Points B: * OEM Web UI is at 192.168.0.50, no DHCP, empty password * Flash factory.bin * Perform a factory reset to restore OpenWrt UCI defaults Recovery: * Keep reset button pressed during power on * Recovery Web UI is at 192.168.0.50, no DHCP * Flash factory.bin used to work best with Chromium-based browsers or curl: curl -F firmware=@factory.bin \ http://192.168.0.50/upgrade.cgi since this fails to work on modern Linux systems, there is also a script dlink_recovery_upload.py Signed-off-by: Sebastian Schaper <openwrt@sebastianschaper.net>
* ath79: split dtsi for D-Link COVR-P2500Sebastian Schaper2024-03-09
| | | | | | in preparation of adding COVR-C1200 Signed-off-by: Sebastian Schaper <openwrt@sebastianschaper.net>
* Revert "ipq-wifi: fix upstream board-2.bin ZTE M289F snafu"Christian Lamparter2024-03-09
| | | | | | | This reverts commit 75505c5ec724b9b961dcb411bac1d4b9aede3e1d. The issue has been fixed upstream. Signed-off-by: Christian Lamparter <chunkeey@gmail.com>
* mediatek: linksys-e8450: improve compat warningDaniel Golle2024-03-09
| | | | | | | Include a statement about having to run the installer in the sysupgrade compat warning for the Linksys E8450 (UBI). Signed-off-by: Daniel Golle <daniel@makrotopia.org>
* mediatek: wait for fitblk rootfsDaniel Golle2024-03-09
| | | | | | | | Probing of the fitblk driver in some situations happens after the kernel attempts to mount rootfs, which then fails. Always use 'rootwait' when using fitblk for rootfs. Signed-off-by: Daniel Golle <daniel@makrotopia.org>
* ath79: cleanup and enable uart1 on ELECOM WAB-I1750-PSINAGAKI Hiroshi2024-03-08
| | | | | | | | | | | | Cleanup uart1-related node on ELECOM WAB-I1750-PS and enable it for "SERIAL" port on the case. "SERIAL" port can be used for OpenWrt console by adding the following line to /etc/inittab and rebooting: ttyATH1::askfirst:/usr/libexec/login.sh Signed-off-by: INAGAKI Hiroshi <musashino.open@gmail.com>
* ath79: drop unnecessary &uart node from dtsi of QCA955x devicesINAGAKI Hiroshi2024-03-08
| | | | | | &uart (uart0) is already enabled in qca955x.dtsi by default. Signed-off-by: INAGAKI Hiroshi <musashino.open@gmail.com>
* ath79: add aliases to qca955x.dtsi for uart0/1INAGAKI Hiroshi2024-03-08
| | | | | | | | | | | | | | Add aliases with "serialN = &uartN;" of uart0/1 on QCA955x SoCs to qca955x.dtsi, to enable uart1 on Linux Kernel. without this: [ 0.342915] ar933x-uart 18500000.uart: unable to get alias id, err=-19 Additionally, remove "serial0 = &uart;" alias from QCA955x device dts/dtsi files. Signed-off-by: INAGAKI Hiroshi <musashino.open@gmail.com>
* ath79: add HighSpeed UART (uart1) support for QCA955xINAGAKI Hiroshi2024-03-08
| | | | | | | Add HighSpeed UART support to QCA955x series SoCs as a secondary UART (uart1). This UART is compatible with qca,ar9330-uart. Signed-off-by: INAGAKI Hiroshi <musashino.open@gmail.com>
* ath79: rename label of primary UART on QCA955x to "uart0"INAGAKI Hiroshi2024-03-08
| | | | | | | | Rename the DT label of the primary UART on Qualcomm Atheros QCA955x series SoCs to "uart0" from "uart" for the preparation to add HighSpeed UART (uart1) support. Signed-off-by: INAGAKI Hiroshi <musashino.open@gmail.com>
* mpc85xx: p1020: convert Aerohive AP330/AP350 to simpleImageChristian Lamparter2024-03-08
| | | | | | | | | | | | | | | | | | | | | | | | | with 6.1, the kernel no longer fitted into the 16 MiB and kicking down the can and increasing KERNEL_SIZE to 20 MiB didn't help as the device failed to boot. Using 'kernel-bin | gzip | uimage gzip' didn't work since the uboot does not have enough heap to decompress these big kernels. And finally playing around with uboot was more a hassle than converting this device to take the simpleImage-boot-route in the future. Note: The device now takes even longer on the first boot-up after the flash due to JFFS2 initializing all the remaining flash. Be prepared to wait up to 10 minutes before the green status LED stops blinking and will shine a solid green! (On the plus site: the device now has ~10 MiB of additional space for rootfs+rootfs_data). Note2: This patch includes a kernel patch refresh. Signed-off-by: Christian Lamparter <chunkeey@gmail.com>
* mpc85xx: add 6.1 testing kernelPawel Dembicki2024-03-08
| | | | | | Configure 6.1 testing kernel for mpc85xx target. Signed-off-by: Pawel Dembicki <paweldembicki@gmail.com>
* mpc85xx: p1010: change wrapper address of simple image devicesPawel Dembicki2024-03-08
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Kernel and initramfs size grows. Now uncompressed initramfs image and regular kernel image overlaps configured area: Initramfs: WRAP arch/powerpc/boot/simpleImage.br200-wp INFO: Uncompressed kernel (size 0x1428688) overlaps the address of the wrapper(0x1000000) INFO: Fixing the link_address of wrapper to (0x1500000) WRAP arch/powerpc/boot/simpleImage.tl-wdr4900-v1 INFO: Uncompressed kernel (size 0x1428688) overlaps the address of the wrapper(0x1000000) INFO: Fixing the link_address of wrapper to (0x1500000) WRAP arch/powerpc/boot/simpleImage.ws-ap3715i INFO: Uncompressed kernel (size 0x1428688) overlaps the address of the wrapper(0x1000000) INFO: Fixing the link_address of wrapper to (0x1500000) Regular image: WRAP arch/powerpc/boot/simpleImage.br200-wp INFO: Uncompressed kernel (size 0x10e0688) overlaps the address of the wrapper(0x1000000) INFO: Fixing the link_address of wrapper to (0x1100000) WRAP arch/powerpc/boot/simpleImage.tl-wdr4900-v1 INFO: Uncompressed kernel (size 0x10e0688) overlaps the address of the wrapper(0x1000000) INFO: Fixing the link_address of wrapper to (0x1100000) WRAP arch/powerpc/boot/simpleImage.ws-ap3715i INFO: Uncompressed kernel (size 0x10e0688) overlaps the address of the wrapper(0x1000000) INFO: Fixing the link_address of wrapper to (0x1100000) Let's change wrapper address to safe value. Tested on: TL-WDR4900, BR200-WP Signed-off-by: Pawel Dembicki <paweldembicki@gmail.com>
* mpc85xx: kernel: refresh 6.1 configPawel Dembicki2024-03-08
| | | | | | Kernel config needs to be refreshed after copy from 5.15. Signed-off-by: Pawel Dembicki <paweldembicki@gmail.com>
* mpc85xx: refresh 6.1 patchesPawel Dembicki2024-03-08
| | | | | | | | | Most changes done by "make target/linux/refresh" Manually refreshed: 102-powerpc-add-cmdline-override.patch Signed-off-by: Pawel Dembicki <paweldembicki@gmail.com>
* mpc85xx: copy patches 5.15 to 6.1Pawel Dembicki2024-03-08
| | | | | | Just copy of config. Signed-off-by: Pawel Dembicki <paweldembicki@gmail.com>
* mpc85xx: copy config 5.15 to 6.1Pawel Dembicki2024-03-08
| | | | | | Simple copy of patches. Signed-off-by: Pawel Dembicki <paweldembicki@gmail.com>
* mpc85xx: Get rid of 'of_flat_dt_is_compatible'Pawel Dembicki2024-03-08
| | | | | | | | | | | This patch replaces 'of_flat_dt_is_compatible' with 'of_machine_is_compatible'. The TL-WDR4900 platform file won't compile in the 6.1 kernel. The platform files for the rest of the routers have been reworked or based on newer solutions. Let's make the TL-WDR4900 consistent with them. Signed-off-by: Pawel Dembicki <paweldembicki@gmail.com>
* lantiq: Fix build after kernel 5.15.150Hauke Mehrtens2024-03-08
| | | | | | | | | | | | | | | | | | | This fixes the following compile problem: ```` CC arch/mips/kernel/vpe-mt.o arch/mips/kernel/vpe-mt.c: In function 'vpe_run': arch/mips/kernel/vpe-mt.c:32:23: error: unused variable 'physical_memsize' [-Werror=unused-variable] 32 | unsigned long physical_memsize = 0L; | ^~~~~~~~~~~~~~~~ cc1: all warnings being treated as errors make[6]: *** [scripts/Makefile.build:289: arch/mips/kernel/vpe-mt.o] Error 1 ```` physical_memsize was removed from upstream kernel, see: https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?h=linux-5.15.y&id=5b4f6c5ff65c8551018ccea40c569afd759734c0 Fixes: 387fde0da0e8 ("kernel: bump 5.15 to 5.15.150") Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
* mediatek: clean duplicated #include in Xiaomi Redmi AX6000's dtsFurong Xu2024-03-08
| | | | | | | | Clean duplication of #include <dt-bindings/leds/common.h>. Thanks musashino205 Fixes: 1493e8f8cbe2 ("mediatek: convert LED color/function format for Xiaomi Redmi AX6000") Signed-off-by: Furong Xu <xfr@outlook.com>
* mediatek: filogic: switch to fitblk for Xiaomi Redmi AX6000Furong Xu2024-03-08
| | | | | | | | Use the new fitblk driver. Run-tested: filogic/mt7986a-xiaomi-redmi-router-ax6000-ubootmod Signed-off-by: Furong Xu <xfr@outlook.com>
* mediatek: convert LED color/function format for Xiaomi Redmi AX6000Furong Xu2024-03-08
| | | | | | | | | | | | Commit 2d63d42f5e2f ("mediatek: convert to new LED color/function format where possible") leaves Xiaomi Redmi AX6000 un-converted, the two LEDs become dead. Now, LEDs are alive again. Fixes: 2d63d42f5e2f ("mediatek: convert to new LED color/function format where possible") Signed-off-by: Furong Xu <xfr@outlook.com>
* kernel: 6.1: add missing config symbol for tracingTony Ambardar2024-03-07
| | | | | | | Add missing option CONFIG_FPROBE to generic config, found building x86_64 arch with tracing enabled. Signed-off-by: Tony Ambardar <itugrok@yahoo.com>
* kernel: Remove unused schedulersHauke Mehrtens2024-03-07
| | | | | | These schedulers were removed in kernel 5.15.150 and 6.1.180. Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
* kernel: bump 5.15 to 5.15.150Hauke Mehrtens2024-03-07
| | | | | | | | | | | | | | | | | | | | | | | Removed because it is upstream: bcm53xx/patches-5.15/030-v5.16-0019-ARM-dts-BCM53573-Describe-on-SoC-BCM53125-rev-4-swit.patch https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?id=cb1003c07e746e4e82bdd3959c9ea37018ed41a3 Removed because it is upstream: bcm53xx/patches-5.15/037-v6.6-0004-ARM-dts-BCM53573-Drop-nonexistent-default-off-LED-tr.patch https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?id=c65a23e98e38dc991f495d6bdb3cfa6163a88a0c Removed because it is upstream: bcm53xx/patches-5.15/037-v6.6-0005-ARM-dts-BCM53573-Drop-nonexistent-usb-cells.patch https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?id=71475bcee001cae3844644c2787eef93b26489d1 Adapted hack-5.15/650-netfilter-add-xt_FLOWOFFLOAD-target.patch to match the changes from the upstream flow offload patch: https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?id=7c71b831220edeab7ce603d818dc1708d9ea4137 Manually Adapted the following patch: bcm53xx/patches-5.15/035-v6.2-0004-ARM-dts-broadcom-align-LED-node-names-with-dtschema.patch Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>