aboutsummaryrefslogtreecommitdiffstats
path: root/target/linux
Commit message (Collapse)AuthorAgeFilesLines
* ath79: revert license change on upstream DTS filesJohn Crispin2018-05-076-6/+6
| | | | Signed-off-by: John Crispin <john@phrozen.org>
* ar71xx: add support for Fritz!Box 4020David Bauer2018-05-0714-6/+300
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This commit adds support for the AVM Fritz!Box 4020 WiFi-router. SoC: Qualcomm Atheros QCA9561 (Dragonfly) 750MHz RAM: Winbond W971GG6KB-25 FLASH: Macronix MX25L12835F WiFi: QCA9561 b/g/n 3x3 450Mbit/s USB: 1x USB 2.0 IN: WPS button, WiFi button OUT: Power LED green, Internet LED green, WLAN LED green, LAN LED green, INFO LED green, INFO LED red UART: Header Next to Black metal shield Pinout is 3.3V - RX - TX - GND (Square Pad is 3.3V) The Serial setting is 115200-8-N-1. Tested and working: - Ethernet (LAN + WAN) - WiFi (correct MAC) - Installation via EVA bootloader - OpenWRT sysupgrade - Buttons - LEDs Not working: - USB port Installation via EVA: In the first seconds after Power is connected, the bootloader will listen for FTP connections on 169.254.157.1 (Might also be 192.168.178.1). Firmware can be uploaded like following: ftp> quote USER adam2 ftp> quote PASS adam2 ftp> binary ftp> debug ftp> passive ftp> quote MEDIA FLSH ftp> put openwrt-sysupgrade.bin mtd1 Note that this procedure might take up to two minutes. After transfer is complete you need to powercycle the device to boot OpenWRT. Signed-off-by: David Bauer <mail@david-bauer.net>
* ath79: relicense DTS files to the GPL 2.0+ / MITRafał Miłecki2018-05-0725-25/+25
| | | | | | | | | | | | | | Some maintainers prefer DTS files licensed under permissive license like MIT / BSD. As all DT bindings should be OS independent and DTS files are pretty separated from Linux code it probably makes sense to share them across projects. The safest solution is to use dual licensing: that way it stays clear these files can be used in GPL projects without depending on current belief of licenses compatibility. Signed-off-by: Rafał Miłecki <rafal@milecki.pl> Acked-by: John Crispin <john@phrozen.org>
* ath79: add new OF only target for QCA MIPS siliconJohn Crispin2018-05-07120-0/+21322
| | | | | | | | This target aims to replace ar71xx mid-term. The big part that is still missing is making the MMIO/AHB wifi work using OF. NAND and mikrotik subtargets will follow. Signed-off-by: John Crispin <john@phrozen.org>
* kernel: add OF support to rtl8355 driverJohn Crispin2018-05-071-1/+10
| | | | Signed-off-by: John Crispin <john@phrozen.org>
* bcm53xx: switch to the new/alternative SPI controller driverRafał Miłecki2018-05-073-121/+12
| | | | | | | | | | | This switches bcm53xx from spi-bcm53xx to the spi-bcm-qspi driver. The later one was developed by Broadcom and is more advanced one. It supports more modes, setting a speed, setting bits per word and uses IRQs instead of polling. This increases kernel size from 1808120 B to the 1811160 B (by 3040 B). Signed-off-by: Rafał Miłecki <rafal@milecki.pl>
* ramips: disable spi full duplex on mt7621John Crispin2018-05-051-6/+18
| | | | Signed-off-by: John Crispin <john@phrozen.org>
* gemini: Add ethernet to DNS-313 and WiliboardLinus Walleij2018-05-051-0/+123
| | | | | | | | This adds an interrim patch for v4.14 based on an upstream commit to get ethernet working on D-Link DNS-313 (probably also on the Wiliboards) Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
* gemini: fix hard disk boot on D-Link devicesRoman Yeryomin2018-05-053-8/+49
| | | | | | | | | | | | | | | | | | | | | | | Since the D-Link devices boot from hard disk we need to add the following changes to Gemini: - Supply a bootarg in the device tree so we can boot from the right partition (/dev/sda4 on DNS-313) - Disable forced command line in config so the kernel picks up the right bootargs from the device tree - Enable EXT4 in the config as this is used for rootfs else we get nowhere, we cannot load this as a module because, well, it is supposed to be loaded from the root partition (chicken and egg problem). - Enable jbd2 and mbcache (needed by ext4) Also clean out the premature attempts to dynamically modify the command line in the Image makefile: we should pass this with the device tree bootargs instead, it works much better. Signed-off-by: Linus Walleij <linus.walleij@linaro.org> Signed-off-by: Roman Yeryomin <roman@advem.lv>
* gemini: add rtl8366rb to dir-685 boardRoman Yeryomin2018-05-052-1/+17
| | | | Signed-off-by: Roman Yeryomin <roman@advem.lv>
* gemini: cleanup kernel configRoman Yeryomin2018-05-052-129/+7
| | | | | | | | | Disable video and input drivers - they are needed only for one board and can be enabled via modules if/when UI will be available. Use LED drivers from packages. Cleanup other things unnecessarily overriding defaults. Signed-off-by: Roman Yeryomin <roman@advem.lv>
* gemini: remove 4.4 supportRoman Yeryomin2018-05-0523-6215/+0
| | | | | Signed-off-by: Linus Walleij <linus.walleij@linaro.org> Signed-off-by: Roman Yeryomin <roman@advem.lv>
* gemini: switch to 4.14Roman Yeryomin2018-05-056-103/+132
| | | | | | | | | | | | | This introduces Device/ infrastructure and images for all boards available upstream. Changes from Linus submitted version: - fix Raidsonic image generation - remove redundant (old) image generation - remove redundant header tool for dns313 board Signed-off-by: Linus Walleij <linus.walleij@linaro.org> Signed-off-by: Roman Yeryomin <roman@advem.lv>
* gemini: add 4.14 supportRoman Yeryomin2018-05-0538-0/+7754
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This adds the patches to get fairly complete Gemini support using kernel v4.14. It is mainly a backport of patches from kernel v4.16 with omissions of things like graphics that require substantial changes and will be better handled once we move to the v4.16 kernel proper. On top of this are some WIP patches for USB support. Tested on Raidsonic NAS4220B and D-link DNS-313. ChangeLog v4->v5: - Fix ethernet single gmac usecase - Fix USB reset (patch from Hans) - Fix Raidsonic ethernet skew delay - Fix kernel config (bridge, squashfs, jffs2, usb) - Disable second usb port on Raidsonic board until fotg210_hcd is fixed ChangeLog v3->v4: - Make sure to use tabs rather than spaces in base-files. - Use the dns313 image tool from the firmware-utils. - Break out the addition of the v4.14 patches and the removal of the v4.4 patches to separate (big) patches. ChangeLog v2->v3: - Update the kernel config as indicated by Hauke Martens: - Regenerate again after rebasing using kernel_oldconfig dropping a few optimization settings that are now generic - Drop CFG80211 stuff (module) - Drop CIFS stuff (module) - Drop MAC80211 (module) - Drop wireless drivers (module) - Enabled OverlayFS - Added proper DNS-313 boot image generation with the special file header tool. - Disable CMA in the kernel - Enable LZMA compression of the kernel - Consequently name the nas4220b images nas4220b - Update preinit MAC detection script to handle also DNS-313 - Add board.d/03_hdparm to set the disk to spin down after 1 minute by default, if we have the hdparm tool installed ChangeLog v1->v2: - Processed config through kernel_oldconfig - Processed patches through make target/linux/{clean,refresh} V=99 Signed-off-by: Linus Walleij <linus.walleij@linaro.org> Signed-off-by: Roman Yeryomin <roman@advem.lv>
* gemini: rename files directory (preparation for 4.14)Roman Yeryomin2018-05-059-0/+0
| | | | Signed-off-by: Roman Yeryomin <roman@advem.lv>
* at91: refreshing kernel configurations.Sandeep Sheriker Mallikarjun2018-05-055-2435/+1202
| | | | | | refreshing kernel configurations for sama5 and legacy subtarget. Signed-off-by: Sandeep Sheriker Mallikarjun <sandeepsheriker.mallikarjun@microchip.com>
* at91: Add SAMA5D2 PTC EK boardSandeep Sheriker Mallikarjun2018-05-053-0/+453
| | | | | | | Add target device as at91-sama5d2_ptc_ek in SAMA5D2 subtarget and build images for SAMA5D2 PTC Ek board. Signed-off-by: Sandeep Sheriker Mallikarjun <sandeepsheriker.mallikarjun@microchip.com>
* at91: reorganize at91 subtargetsSandeep Sheriker Mallikarjun2018-05-0513-113/+2777
| | | | | | | | | | | reorganizing at91 subtargets based on sama5 soc features and this fix below problems. 1. able to set neon flags to sama5d2 & sama5d4 subtargets. 2. fix the make clean which removes all the subtargets in bin folder. 3. able to configure kernel specific to subtarget. 4. able to set vfpu4 flags to samad3 subtargets. Signed-off-by: Sandeep Sheriker Mallikarjun <sandeepsheriker.mallikarjun@microchip.com>
* at91: sdcard image with ext4 rootfsSandeep Sheriker Mallikarjun2018-05-052-2/+3
| | | | | | | creating sdcard image with ext4 rootfs only and ignoring creating other filesystem in sdcard image. Signed-off-by: Sandeep Sheriker Mallikarjun <sandeepsheriker.mallikarjun@microchip.com>
* at91: Add SAMA5D27 SOM1 EK boardSandeep Sheriker Mallikarjun2018-05-053-5/+924
| | | | | | | Add support for SAMA5D27 SOM1 with target device as at91-sama5d27_som1_ek in SAMA5 subtarget and build images for SAMA5D27 SOM1 Ek board. Signed-off-by: Sandeep Sheriker Mallikarjun <sandeepsheriker.mallikarjun@microchip.com>
* at91: fix sdcard create imageSandeep Sheriker Mallikarjun2018-05-051-7/+9
| | | | | | | | copying at91bootstrap and uboot binaries to sdcard image is done based on device name instead of dts name and this avoids creating multiple u-boot and at91bootstrap binaries. Signed-off-by: Sandeep Sheriker Mallikarjun <sandeepsheriker.mallikarjun@microchip.com>
* kernel: add missing in6_dev_put_clear call to an ipv6 network patchFelix Fietkau2018-05-023-12/+36
| | | | | | Fixes "unregister_netdevice: waiting for lo to become free. Usage count = 1" messages Signed-off-by: Felix Fietkau <nbd@nbd.name>
* kernel: Restrict dmesg output to root.Rosen Penev2018-04-304-4/+4
| | | | | | | | In typical OpenWrt setups, there are no other users that have a shell spawned for them by default. This can be overriden by the kernel.dmesg_output syssctl. Signed-off-by: Rosen Penev <rosenp@gmail.com>
* at91: sama5: remove neon and VFPv4 supportSandeep Sheriker Mallikarjun2018-04-301-3/+1
| | | | | | | | | sama5d2 & samad4 have neon feature and sama5d3 does not have neon feature due to which sama5d3 boot fails with error message Kernel panic - not syncing: Attempted to kill init! exitcode=0x00000004. removing neon & VFPv4 support to fix this Signed-off-by: Sandeep Sheriker Mallikarjun <sandeepsheriker.mallikarjun@microchip.com>
* at91: fix build error for wb50n.Sandeep Sheriker Mallikarjun2018-04-301-10/+14
| | | | | | | when external kernel is selected from menuconfig, device wb50n is not avaliable and build fails. As a fix adding checks for external kernel. Signed-off-by: Sandeep Sheriker Mallikarjun <sandeepsheriker.mallikarjun@microchip.com>
* ar71xx: Add userspace support for Mikrotik rb-2011iLSSimon Paterson2018-04-306-0/+10
| | | | | | | | | | Kernel support already present. Patch adds userspace for the 'iLS' suffix model of the RB2011 family. Enables correct initial switch settings, sysupgrade, etc. https://mikrotik.com/product/RB2011iLS-IN Signed-off-by: Simon Paterson <simon.paterson.nz@gmail.com>
* kernel: bump 4.14 to 4.14.37Koen Vandeputte2018-04-302-2/+2
| | | | | | | | | | | | Refreshed all patches Compile-tested on: cns3xxx, imx6, octeon, ramips/mt7621, x86/64 Runtime-tested on: cns3xxx, imx6, octeon, ramips/mt7621, x86/64 Signed-off-by: Koen Vandeputte <koen.vandeputte@ncentric.com> Tested-by: Stijn Segers <foss@volatilesystems.org> [add extra tested targets to commit msg] Signed-off-by: Stijn Tintel <stijn@linux-ipv6.be>
* arm64: enable harden branch predictorMathias Kresin2018-04-276-2/+10
| | | | | | Enable the harden branch predictor for arm64 as it is recommend. Signed-off-by: Mathias Kresin <dev@kresin.me>
* kernel: add missing config symbolsMathias Kresin2018-04-272-6/+4
| | | | | | | | The harden branch predictor was backported for arm64 with 4.9.92-96. Fixes: 9aa196e0f260 ("kernel: bump 4.9 to bump 4.9.96") Signed-off-by: Mathias Kresin <dev@kresin.me>
* brcm47xx: remove linux 4.4 supportFelix Fietkau2018-04-2725-2935/+0
| | | | Signed-off-by: Felix Fietkau <nbd@nbd.name>
* brcm63xx: remove linux 4.4 supportFelix Fietkau2018-04-27233-29054/+0
| | | | Signed-off-by: Felix Fietkau <nbd@nbd.name>
* bcm53xx: drop linux 4.4 and 4.9 supportFelix Fietkau2018-04-27179-21831/+0
| | | | Signed-off-by: Felix Fietkau <nbd@nbd.name>
* brcm2708: Add support for raspberry pi 3 b+.Christo Nedev2018-04-276-7/+309
| | | | Signed-off-by: Christo Nedev <christo.nedev@me.com>
* kernel: Fix data corruption on some mips devices.Rosen Penev2018-04-271-0/+92
| | | | | | | | | | This is mainly a bug fix for multi-core MIPS systems where L1 caches besides the primary do not get flushed. The most obvious problem is data corruption on SATA and USB devices where read requests are typically larger than the cacheline size. This may also fix ar71xx systems that suffer from similar data corruption but I have not tested if it does. Signed-off-by: Rosen Penev <rosenp@gmail.com>
* ar71xx: Ubiquiti Airmax M: add relocate-kernel to invalidate cacheMatthias Schiffer2018-04-261-0/+1
| | | | | | | | | | | | | | Some Ubiquiti U-boot versions, in particular the "U-Boot 1.1.4.2-s956 (Jun 10 2015 - 10:54:50)" found with AirOS 5.6, do not correctly flush the caches for the whole kernel address range after decompressing the kernel image, leading to hard to debug boot failures, depending on kernel version and configuration. As a workaround, prepend the relocate-kernels loader, which will invalidate the caches after moving the kernel to the correct load address. Reported-by: Andreas Ziegler <dev@andreas-ziegler.de> Signed-off-by: Matthias Schiffer <mschiffer@universe-factory.net>
* kernel: bump 4.14 to 4.14.36Koen Vandeputte2018-04-265-10/+10
| | | | | | | | | | | | | | | | Refreshed all patches. Compile-tested on: cns3xxx, imx6 Runtime-tested on: cns3xxx, imx6 Fixes for CVEs: CVE-2018-1108 CVE-2018-1092 CVE-2018-1094 CVE-2018-1095 Signed-off-by: Koen Vandeputte <koen.vandeputte@ncentric.com> Tested-by: Stijn Segers <foss@volatilesystems.org>
* kernel: bump 4.9 to 4.9.96Kevin Darbyshire-Bryant2018-04-2645-389/+335
| | | | | | | | | | | | | | | | | | Refresh patches, following required reworking: ar71xx/patches-4.9/930-chipidea-pullup.patch layerscape/patches-4.9/302-dts-support-layercape.patch sunxi/patches-4.9/0052-stmmac-form-4-12.patch Fixes for CVEs: CVE-2018-1108 CVE-2018-1092 Tested on: ar71xx Archer C7 v2 Signed-off-by: Kevin Darbyshire-Bryant <ldir@darbyshire-bryant.me.uk> Tested-by: Koen Vandeputte <koen.vandeputte@ncentric.com> Tested-by: Arjen de Korte <build+openwrt@de-korte.org>
* mvebu: cortexa72: enable Marvell 10G PHY by defaultDamir Samardzic2018-04-251-0/+1
| | | | | | This one enables 10 GbE ports on MACCHIATObin. Signed-off-by: Damir Samardzic <damir.samardzic@sartura.hr>
* ramips: fix mt7628 eval board pinmuxMathias Kresin2018-04-251-1/+1
| | | | | | | | | There is no pinmux group "jtag" for mt7628 and the pinmux driver fails to load due to the use of the not existing group. Fixes: FS#1515 Signed-off-by: Mathias Kresin <dev@kresin.me>
* ramips: create image for mt7628 evb boardMathias Kresin2018-04-231-0/+1
| | | | | | | The image for the EVB board got lost with the merge of the mt7628 and mt7688 subtargets. Signed-off-by: Mathias Kresin <dev@kresin.me>
* ramips: use patch-dtb for F5D8235 V1Tobias Wolf2018-04-231-3/+1
| | | | | | | | | | The old DTB method (OWRTDTB) is not recognized by the boot process anymore with 4.9/4.14. This patch reuses KERNEL_DTB to get a valid DTB applied to the kernel image. Signed-off-by: Tobias Wolf <github-NTEO@vplace.de>
* kernel: fix usb interface on 3G dwm-158 modemGiuseppe Lippolis2018-04-231-0/+42
| | | | | | | | | | | | The current option driver binds to the usb interface 2,3,4,5. But the interface 4 and 5 doesn't answer to the AT commands. On the new openwrt configuration the wwan script select the 5th interface as control interface, failing to establish the 3G connection. Backport the fix for the problem. Signed-off-by: Giuseppe Lippolis <giu.lippolis@gmail.com>
* ipq40xx: add support for OpenMesh A62Sven Eckelmann2018-04-237-5/+276
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * QCA IPQ4019 * 256 MB of RAM * 32 MB of SPI NOR flash (s25fl256s1) - 2x 15 MB available; but one of the 15 MB regions is the recovery image * 2T2R 2.4 GHz - QCA4019 hw1.0 (SoC) - requires special BDF in QCA4019/hw1.0/board-2.bin with bus=ahb,bmi-chip-id=0,bmi-board-id=20,variant=OM-A62 * 2T2R 5 GHz (channel 36-64) - QCA9888 hw2.0 (PCI) - requires special BDF in QCA9888/hw2.0/board-2.bin bus=pci,bmi-chip-id=0,bmi-board-id=16,variant=OM-A62 * 2T2R 5 GHz (channel 100-165) - QCA4019 hw1.0 (SoC) - requires special BDF in QCA4019/hw1.0/board-2.bin with bus=ahb,bmi-chip-id=0,bmi-board-id=21,variant=OM-A62 * multi-color LED (controlled via red/green/blue GPIOs) * 1x button (reset; kmod-input-gpio-keys compatible) * external watchdog - triggered GPIO * 1x USB (xHCI) * TTL pins are on board (arrow points to VCC, then follows: GND, TX, RX) * 2x gigabit ethernet - phy@mdio3: + Label: Ethernet 1 + gmac0 (ethaddr) in original firmware + 802.3at POE+ - phy@mdio4: + Label: Ethernet 2 + gmac1 (eth1addr) in original firmware + 18-24V passive POE (mode B) * powered only via POE The tool ap51-flash (https://github.com/ap51-flash/ap51-flash) should be used to transfer the factory image to the u-boot when the device boots up. The initramfs image can be started using setenv bootargs 'loglevel=8 earlycon=msm_serial_dm,0x78af000 console=ttyMSM0,115200 mtdparts=spi0.0:256k(0:SBL1),128k(0:MIBIB),384k(0:QSEE),64k(0:CDT),64k(0:DDRPARAMS),64k(0:APPSBLENV),512k(0:APPSBL),64k(0:ART),64k(0:custom),64k(0:KEYS),15552k(inactive),15552k(inactive2)' tftpboot 0x84000000 openwrt-ipq40xx-openmesh_a62-initramfs-fit-uImage.itb set fdt_high 0x85000000 bootm 0x84000000 Signed-off-by: Sven Eckelmann <sven.eckelmann@openmesh.com>
* ipq40xx: fix gpio-hog related boot issuesSven Eckelmann2018-04-236-6/+109
| | | | | | | | | | | | | | | The pinctrl initialization fails with the MSM pinctrl code and gpio-hogs because either the gpio ranges are not yet initialized (missing gpio-range in DT) or that the msm driver unconditionally tries to re-initializes the ranges (gpio-range in DT). To allow gpio-hogs and similar early-boot gpio code, the gpio-ranges must be in the device tree and the pinctrl-msm code must check whether the range was already initialized by the DT. Signed-off-by: Sven Eckelmann <sven.eckelmann@openmesh.com> [drop changes to unrelated dtsi files, refresh patches] Signed-off-by: Mathias Kresin <dev@kresin.me>
* ipq40xx: use upstream board-2.binSven Eckelmann2018-04-235-10/+11
| | | | | | | The BDFs for all boards were upstreamed to the ath10k-firmware repository and are now part of ath10k-firmware 2018-04-19. Signed-off-by: Sven Eckelmann <sven.eckelmann@openmesh.com>
* brcm47xx: backport upstream patches for Netgear WNR1000 V3Rafał Miłecki2018-04-2317-137/+383
| | | | | | This includes fix for reading NVRAM content. Signed-off-by: Rafał Miłecki <rafal@milecki.pl>
* ipq40xx: ex61x0v2: Disable unused GMACsThomas Hebb2018-04-201-0/+1
| | | | | | | These devices have only one ethernet port. It doesn't make sense to expose the unused GMACs as separate network devices. Signed-off-by: Thomas Hebb <tommyhebb@gmail.com>
* ipq40xx: Move reserved-memory DT to qcom-ipq4019.dtsiSven Eckelmann2018-04-2010-145/+89
| | | | | | | | The tz and smem reserved-memory information handled in the upstream Linux sources by the SoC specific dtsi and not by the the boards dts. Using the same approach in OpenWrt avoids unneccessary duplication. Signed-off-by: Sven Eckelmann <sven.eckelmann@openmesh.com>
* ipq40xx: Remove unused reserved-memory nodesSven Eckelmann2018-04-207-76/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The reserved-memory regions are mostly undocumented by QCA and are named very unspecific in the QSDK device trees. It was tried to clean them up by commit 71ed9f10a33e ("ipq40xx: Use detailed reserved memory for A42") and similar changes. The features which require these regions were mostly unknown but Senthilkumar N L <snlakshm@qti.qualcomm.com> and Sricharan Ramabadhran <srichara@qti.qualcomm.com> provided some more insight in some of them: * crash dump feature - a couple of regions used when 'qca,scm_restart_reason' dt node has the value 'dload_status' not set to 1 + apps_bl <0x87000000 0x400000> + sbl <0x87400000 0x100000> + cnss_debug <0x87400000 0x100000> + cpu_context_dump <0x87b00000 0x080000> - required driver not available in Linux - safe to remove * QSEE app execution - region tz_apps <0x87b80000 0x280000> - required driver not available in Linux - safe to remove * communication with TZ/QSEE - region smem <0x87b80000 0x280000> - driver changes not yet upstreamed - must not be removed because any access can crash kernel/program * trustzone (QSEE) private memory - region tz <0x87e80000 0x180000> - must not be removed because any access can crash kernel/program Removing the unnecessary regions saves some kilobyte of reserved-memory and cleans up the device tree: * 2560 KiB - 8devices Jalapeno - AVM FRITZ!Box 4040 - Compex WPJ428 - Meraki MR33 Access Point - OpenMesh A42 * 14336 KiB - GL.iNet GL-B1300 - Qualcomm Technologies, Inc. IPQ40xx/AP-DK01.1-C1 Signed-off-by: Sven Eckelmann <sven.eckelmann@openmesh.com>
* build: consolidate fake uImage header build commandsMathias Kresin2018-04-206-21/+11
| | | | | | | | | | | Merge the two existing functions and use a parameter for the type header field. It updates the syntax of the former mpc85xx fake ramdisk header command to be compatible with mkimage from u-boot 2018.03 and fixes the build error spotted by the build bot. Signed-off-by: Mathias Kresin <dev@kresin.me>