aboutsummaryrefslogtreecommitdiffstats
Commit message (Collapse)AuthorAgeFilesLines
* ipq40xx: add support for FRITZ!Box 7520Andre Heider2022-03-251-0/+2
| | | | | | | | | | | | | This model, also know as "1&1 HomeServer", shares the same features as 7530. The vendor firmware has artificial software limitations: only 2 of the 4 LAN-Ports are GBit, and the USB-Host is only v2.0. With OpenWrt, USB is already working at v3.0. Signed-off-by: Andre Heider <a.heider@gmail.com> (updated commit message to reflect current state) Signed-off-by: Christian Lamparter <chunkeey@gmail.com>
* ipq40xx: Add subtarget for Google WiFi (Gale)Brian Norris2022-03-258-4/+453
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Google WiFi (codename: Gale) is an IPQ4019-based AP, with 2 Ethernet ports, 2x2 2.4+5GHz WiFi, 512 MB RAM, 4 GB eMMC, and a USB type C port. In its stock configuration, it runs a Chromium OS-based system, but you wouldn't know it, since you can only manage it via a "cloud" + mobile-app system. The "v2" label is coded into the bootloader, which prefers the "google,gale-v2" compatible string. I believe "v1" must have been pre-release hardware. Note: this is *not* the Google Nest WiFi, released in 2019. I include "factory.bin" support, where we generate a GPT-based disk image with 2 partitions -- a kernel partition (using the custom "Chrome OS kernel" GUID type) and a root filesystem partition. See below for flashing instructions. Sysupgrade is supported via recent emmc_do_upgrade() helper. This is a subtarget because it enables different features (FEATURES=boot-part rootfs-part) whose configurations don't make sense in the "generic" target, and because it builds in a few USB drivers, which are necessary for installation (installation is performed by booting from USB storage, and so these drivers cannot be built as modules, since we need to load modules from USB storage). Flashing instructions ===================== Documented here: https://openwrt.org/inbox/toh/google/google_wifi Note this requires booting from USB storage. Features ======== I've tested: * Ethernet, both WAN and LAN ports * eMMC * USB-C (hub, power-delivery, peripherals) * LED0 (R/G/B) * WiFi (limited testing) * SPI flash * Serial console: once in developer mode, console can be accessed via the USB-C port with SuzyQable, or other similar "Closed Case Debugging" tools: https://chromium.googlesource.com/chromiumos/third_party/hdctools/+/master/docs/ccd.md#suzyq-suzyqable * Sysupgrade Not tested: * TPM Known not working: * Reboot: this requires some additional TrustZone / SCM configuration to disable Qualcomm's SDI. I have a proposal upstream, and based on IRC chats, this might be acceptable with additional DT logic: [RFC PATCH] firmware: qcom_scm: disable SDI at boot https://lore.kernel.org/linux-arm-msm/20200721080054.2803881-1-computersforpeace@gmail.com/ * SMP: enabling secondary CPUs doesn't currently work using the stock bootloader, as the qcom_scm driver assumes newer features than this TrustZone firmware has. I posted notes here: [RFC] qcom_scm: IPQ4019 firmware does not support atomic API? https://lore.kernel.org/linux-arm-msm/20200913201608.GA3162100@bDebian/ * There's a single external button, and a few useful internal GPIO switches. I haven't hooked them up. The first two are fixed with subsequent commits. Additional notes ================ Much of the DTS is pulled from the Chrome OS kernel 3.18 branch, which the manufacturer image uses. Note: the manufacturer bootloader knows how to patch in calibration data via the wifi{0,1} aliases in the DTB, so while these properties aren't present in the DTS, they are available at runtime: # ls -l /sys/firmware/devicetree/base/soc/wifi@a*/qcom,ath10k-pre-calibration-data -r--r--r-- 1 root root 12064 Jul 15 19:11 /sys/firmware/devicetree/base/soc/wifi@a000000/qcom,ath10k-pre-calibration-data -r--r--r-- 1 root root 12064 Jul 15 19:11 /sys/firmware/devicetree/base/soc/wifi@a800000/qcom,ath10k-pre-calibration-data Ethernet MAC addresses are similarly patched in via the ethernet{0,1} aliases. Signed-off-by: Brian Norris <computersforpeace@gmail.com> (updated 901 - x1pro moved in the process) Signed-off-by: Christian Lamparter <chunkeey@gmail.com>
* ipq40xx: qcom_scm: Fix cold boot address commandBrian Norris2022-03-251-0/+121
| | | | | | | | | | | | | See my upstream questions: https://lore.kernel.org/linux-arm-msm/20200913201608.GA3162100@bDebian/ This effectively reverts upstream Linux commit 13e77747800e ("firmware: qcom: scm: Use atomic SCM for cold boot"), because Google WiFi boot firmwares don't support the atomic variant. This fixes SMP support for Google WiFi. Signed-off-by: Brian Norris <computersforpeace@gmail.com>
* ipq40xx: qcom_scm: Disable SDI at bootBrian Norris2022-03-251-0/+47
| | | | | | | | | | | | See my upstream RFC of this: https://lore.kernel.org/linux-arm-msm/20200721080054.2803881-1-computersforpeace@gmail.com/ This fixes warm boot (reboot) for Google WiFi devices using their factory bootloader/firmware. I may resend this upstream eventually. Signed-off-by: Brian Norris <computersforpeace@gmail.com>
* ipq40xx: Support Chromium OS image-type creationBrian Norris2022-03-252-1/+25
| | | | | | | | | | | | | | | | | | | | | | | | | | | See firmware-utils.git commits [1], which implemented the cros-vbutil verified-boot payload-packing tool, and extended ptgen for the CrOS kernel partition type. With these, it's now possible to package kernel + rootfs to make disk images that can boot a Chrome OS-based system (e.g., Chromebooks, or even a few AP models). Regarding PARTUUID= changes: Chromium bootloaders work well with a partition number offset (i.e., relative to the kernel partition), so we'll be using a slightly different root UUID line. NB: I've made this support specific to ip40xx for now, because I only plan to support an IPQ4019-based AP that uses a Chromium-based bootloader, but this image format can be used for essentially any Chromebook, as well as the Google OnHub, a prior Chromium-based AP using an IPQ8064 chipset. [1] ptgen: add Chromium OS kernel partition support https://git.openwrt.org/?p=project/firmware-utils.git;a=commit;h=6c95945b5de973026dc6f52eb088d0943efa96bb cros-vbutil: add Chrome OS vboot kernel-signing utility https://git.openwrt.org/?p=project/firmware-utils.git;a=commit;h=8e7274e02fdc6f2cb61b415d6e5b2e1c7e977aa1 Signed-off-by: Brian Norris <computersforpeace@gmail.com>
* firmware/ipq-wifi: Add Google Wifi board-2.binBrian Norris2022-03-252-0/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | From a manufacturer's image (version R89-13729.57.27), with appopriate ',variant=' appended to the board names: $ .../qca-swiss-army-knife/tools/scripts/ath10k/ath10k-bdencoder \ -i ./board-google_wifi.qca4019 FileSize: 48596 FileCRC32: 3966df5d FileMD5: d54161b0fb9e93691c4272649c37535a BoardNames[0]: 'bus=ahb,bmi-chip-id=0,bmi-board-id=16,variant=GO_GALE' BoardLength[0]: 12064 BoardCRC32[0]: e117f336 BoardMD5[0]: ea35e78c88a8571201da8b75edc9b881 BoardNames[1]: 'bus=ahb,bmi-chip-id=0,bmi-board-id=21,variant=GO_GALE' BoardLength[1]: 12064 BoardCRC32[1]: 6c751ec9 BoardMD5[1]: 44cbc4ca6cb7141ba4249615f7065582 BoardNames[2]: 'bus=ahb,bmi-chip-id=0,bmi-board-id=16,variant=GO_BREEZE' BoardLength[2]: 12064 BoardCRC32[2]: 24fba117 BoardMD5[2]: b4ac055b3ab67d5a6f5607a96af39a1f BoardNames[3]: 'bus=ahb,bmi-chip-id=0,bmi-board-id=21,variant=GO_BREEZE' BoardLength[3]: 12064 BoardCRC32[3]: a3e16b2a BoardMD5[3]: 8b26cb285032314247304114b8ac50e7 Naming follows existing Google projects included in upstream board-2.bin -- GO(ogle) prefix, an underscore (_), and the project code name, all in caps. Note that I only tested the "gale" model; the "breeze" model is a later revision (same marketing name) with very small hardware changes but otherwise using the same firmware image. Submitted upstream here: ath10k-firmware: QCA4019: hw1.0: Add Google Wifi BDFs http://lists.infradead.org/pipermail/ath10k/2022-March/013465.html https://lore.kernel.org/ath10k/YjaNGW252Ls%2FyDw8@localhost/ Signed-off-by: Brian Norris <computersforpeace@gmail.com>
* kernel: Package GOOGLE_FIRMWARE driversBrian Norris2022-03-251-0/+26
| | | | | | Useful for some Chromium OS based systems, like Google WiFi. Signed-off-by: Brian Norris <computersforpeace@gmail.com>
* apm821xx: fix crash/panic related to SATA/SSD choiceChristian Lamparter2022-03-251-0/+65
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Ticerex on the OpenWrt Forum reported a gnarly crash when he was using Samsung 840 and 850 EVOs with his MyBook Live: | BUG: Kernel NULL pointer dereference at 0x00000000 | Faulting instruction address: 0xc03ed4b8 | Oops: Kernel access of bad area, sig: 11 [#1] | BE PAGE_SIZE=4K PowerPC 44x Platform | CPU: 0 PID: 362 Comm: scsi_eh_1 Not tainted 5.4.163 #0 | NIP: c03ed4b8 LR: c03d27e8 CTR: c03ed36c | REGS: cfa59950 TRAP: 0300 Not tainted (5.4.163) | MSR: 00021000 <CE,ME> CR: 42000222 XER: 00000000 | DEAR: 00000000 ESR: 00000000 | GPR00: c03d27e8 cfa59a08 cfa55fe0 00000000 0fa46bc0 [...] | [..] | NIP [c03ed4b8] sata_dwc_qc_issue+0x14c/0x254 | LR [c03d27e8] ata_qc_issue+0x1c8/0x2dc | Call Trace: | [cfa59a08] [c003f4e0] __cancel_work_timer+0x124/0x194 (unreliable) | [cfa59a78] [c03d27e8] ata_qc_issue+0x1c8/0x2dc | [cfa59a98] [c03d2b3c] ata_exec_internal_sg+0x240/0x524 | [cfa59b08] [c03d2e98] ata_exec_internal+0x78/0xe0 | [cfa59b58] [c03d30fc] ata_read_log_page.part.38+0x1dc/0x204 | [cfa59bc8] [c03d324c] ata_identify_page_supported+0x68/0x130 | [...] This turned out this is an issue with upstream changing ATA_TAG_INTERNAL's value from 31 to 32 during 4.18 release. Update "SATA_DWC_QCMD_MAX" to account for that. Link: https://forum.openwrt.org/t/my-book-live-duo-reboot-loop/122464 Signed-off-by: Christian Lamparter <chunkeey@gmail.com>
* ipq40xx: disable non-building tel(co Electronics) x1proChristian Lamparter2022-03-251-0/+1
| | | | | | | | | | Tel(co Electronics) X1 Pro is preventing ipq40xx generic from building due to the KERNEL_SIZE. Whenever bigger kernels are possible, if lzma is supported is unknown. Signed-off-by: Christian Lamparter <chunkeey@gmail.com>
* libselinux: use musl-fts for host buildsRosen Penev2022-03-251-2/+5
| | | | | | | | Fixes compilation under musl based distros like Alpine Linux. Also add pcre/host as a build dependency as it's needed. Signed-off-by: Rosen Penev <rosenp@gmail.com>
* musl-fts: add host buildRosen Penev2022-03-251-0/+2
| | | | | | This will be used for libselinux. Signed-off-by: Rosen Penev <rosenp@gmail.com>
* ath79: fix TPLINK_HWREV field for TL-WR1043ND v4Matthias Schiffer2022-03-251-0/+1
| | | | | | | | | | Required to allow sysupgrades from OpenWrt 19.07. Closes #7071 Fixes: 98fbf2edc021 ("ath79: move TPLINK_HWID/_HWREV to parent for tplink-safeloader") Tested-by: J. Burfeind <git@aiyionpri.me> Signed-off-by: Matthias Schiffer <mschiffer@universe-factory.net>
* gettext-full: add gmsgfmt symlink in host installStijn Tintel2022-03-251-0/+5
| | | | | | | | | | | | | | Some configure scripts look for msgfmt and gmsgfmt. As we don't install the latter, configure might pick up one from staging_dir/hostpkg, and the other from the host: checking for msgfmt... /home/stijn/Development/OpenWrt/openwrt/staging_dir/hostpkg/bin/msgfmt checking for gmsgfmt... /usr/bin/gmsgfmt This could potentially lead to hard to debug undefined behaviour. Install a symlink in the host install phase to avoid this. Signed-off-by: Stijn Tintel <stijn@linux-ipv6.be>
* openwrt-keyring: add OpenWrt 22.03 GPG/usign keysPetr Štetiar2022-03-251-3/+3
| | | | | | | 62471e693b4f usign: add 22.03 release build public key 70817cffc905 gpg: add OpenWrt 22.03 signing key Signed-off-by: Petr Štetiar <ynezz@true.cz>
* imagebuilder: fix broken image generation with external targetsPetr Štetiar2022-03-251-1/+1
| | | | | | | | | | When using external targets there is a symlink being created for the target under target/linux which then becomes dangling under Image Builder. Fix it by dereferencing the possible symlink. Tested on IB with external target, ipq40xx and mvebu. Signed-off-by: Petr Štetiar <ynezz@true.cz>
* qoriq: remove CONFIG_GDB_SCRIPTS from kernel configStijn Tintel2022-03-251-1/+0
| | | | | | | | It is disabled in the generic kernel config and not used in any of the other targets. There was no specific reason for enabling it, so let's be consistent and remove it from the qoriq kernel config. Signed-off-by: Stijn Tintel <stijn@linux-ipv6.be>
* mpc85xx: overhaul WS-AP3825i LED setupDavid Bauer2022-03-242-12/+31
| | | | | | | | | | | | As the LED controller is working now, we can make good use of the LEDs now. - Drop the model-name prefix - Rename eth0 / eth1 LEDs to LAN1 / LAN2, as they are labeled as such on the casing - Enable wired LEDs in userspace Signed-off-by: David Bauer <mail@david-bauer.net>
* mpc85xx: move Extreme WS-AP3825i GPIO extenderDavid Bauer2022-03-241-23/+25
| | | | | | | Move the GPIO extender to the SoC node. Otherwise, the legacy PowerPC init code will not populate the BUS and thus never probe spi-gpio. Signed-off-by: David Bauer <mail@david-bauer.net>
* uqmi: fix acquiring PIN statusDaniel Golle2022-03-241-4/+8
| | | | | | | | | | | | Evaluating the return value of 'json_load' didn't work in the intended way resulting in PIN status no longer being read on modems where --get-pin-status doesn't fail. Fix this by trying --get-pin-status first and checking if pin1_status field exists in JSON, and if it doesn't try again with --uim-get-sim-state. Fixes: #9501 Signed-off-by: Daniel Golle <daniel@makrotopia.org>
* ath79: change Ubiquiti UniFi AP model name to include "AP"Matthias Schiffer2022-03-242-2/+2
| | | | | | | | | While it hasn't always been clear whether the "AP" is part of the model name on the Ubiquiti website, we include it for all other pre-AC variants (AP Pro and the AP Outdoor+). Add it to the original UniFi AP as well for consistency. Signed-off-by: Matthias Schiffer <mschiffer@universe-factory.net>
* ath79: fix label MAC address for Ubiquiti UniFiMatthias Schiffer2022-03-243-4/+2
| | | | | | The label has the MAC address of eth0, not the WLAN PHY address. Signed-off-by: Matthias Schiffer <mschiffer@universe-factory.net>
* zlib: backport security fix for a reproducible crash in compressorPetr Štetiar2022-03-244-2/+688
| | | | | | | | | | | | | | Tavis has just reported, that he was recently trying to track down a reproducible crash in a compressor. Believe it or not, it really was a bug in zlib-1.2.11 when compressing (not decompressing!) certain inputs. Tavis has reported it upstream, but it turns out the issue has been public since 2018, but the patch never made it into a release. As far as he knows, nobody ever assigned it a CVE. Suggested-by: Tavis Ormandy <taviso@gmail.com> References: https://www.openwall.com/lists/oss-security/2022/03/24/1 Signed-off-by: Petr Štetiar <ynezz@true.cz>
* kernel: set options to make external initramfs reproducibleDaniel Golle2022-03-241-3/+4
| | | | | | | Run cpio as well as compressors in such ways that they are generating reproducible output. Signed-off-by: Daniel Golle <daniel@makrotopia.org>
* kernel: generic: fix warning in FIT partition parserDaniel Golle2022-03-241-2/+2
| | | | | | Use 'const char *' where necessary to make gcc get quiet. Signed-off-by: Daniel Golle <daniel@makrotopia.org>
* scripts/mkits.sh: replace forgotten '-' with ${REFERENCE_CHAR}Daniel Golle2022-03-241-1/+1
| | | | | | | Cosmetical change to improve style in mkits.sh. Fixes: fd679086473 ("scripts: mkits.sh: Allow legacy @ mode for dts creation") Signed-off-by: Daniel Golle <daniel@makrotopia.org>
* kernel: generic: improve FIT partition parserDaniel Golle2022-03-242-13/+41
| | | | | | | | | * only map filesystems configured in 'loadables' * allow mapping more than one filesystem (e.g. customization/branding or localization in addition to rootfs) * small cleaning here and there Signed-off-by: Daniel Golle <daniel@makrotopia.org>
* openssl: move engine.mk to INCLUDE_DIREneas U de Queiroz2022-03-232-2/+6
| | | | | | | | | engine.mk is supposed to be included by engine packages, but it will not be present in the SDK in the same place as in the main repository. Move it to include/openssl-engine.mk to avoid this. Signed-off-by: Eneas U de Queiroz <cotequeiroz@gmail.com>
* odhcpd: update to git HEADHans Dedecker2022-03-221-3/+3
| | | | | | | 860ca90 odhcpd: Support for Option NTP and SNTP 83e14f4 router: advertise removed addresses as invalid in 3 consecutive RAs Signed-off-by: Hans Dedecker <dedeckeh@gmail.com>
* qosify: update to the latest versionFelix Fietkau2022-03-221-3/+3
| | | | | | 57c7817f91c2 qosify: fix dscp values of ubus-added dns host entries Signed-off-by: Felix Fietkau <nbd@nbd.name>
* kmod-lzo: include the lzo-rle kmod in the packageRui Salvaterra2022-03-221-1/+2
| | | | | | | | | | Albeit a separate crypto module, lzo-rle uses the same kernel library as lzo. Crypto API users (zram, for example) expect both lzo and lzo-rle to be available, so let's include lzo-rle (about 5.5 kiB) in the lib-lzo package. Based on e9hack's original patch: https://patchwork.ozlabs.org/project/openwrt/patch/541cbfbd-76f2-59b3-a867-47b6f0fc7da9@gmail.com/ Signed-off-by: Rui Salvaterra <rsalvaterra@gmail.com>
* kernel: generic: use chosen bootconf in FIT partition parserDaniel Golle2022-03-211-4/+13
| | | | | | | | | If the selected boot configuration is stored by U-Boot in '/chosen' node as 'bootconf' attribute, use that configuration to resolve the block device used as rootfs. Fall back to use the default configuration in case 'bootconf' is not present. Signed-off-by: Daniel Golle <daniel@makrotopia.org>
* uboot-mediatek: add patch to allow accessing bootconf from LinuxDaniel Golle2022-03-211-0/+60
| | | | | | | | Store selected boot configuration in '/chosen' node in device tree, so it can be accessed by Linux (and used for fine-tuning the FIT partition parser). Signed-off-by: Daniel Golle <daniel@makrotopia.org>
* sunxi: cortexa7: fix ethernet link detection on a20-olinuxino-lime2Petr Štetiar2022-03-211-0/+1
| | | | | | | | | | | | | | | | | | | | | | a20-olinuxino-lime2 is currently having hard time with link detection of certain 1000Mbit partners due to usage of generic PHY driver, probably due to following missing workaround introduced in upstream in commit 3aed3e2a143c ("net: phy: micrel: add Asym Pause workaround"): The Micrel KSZ9031 PHY may fail to establish a link when the Asymmetric Pause capability is set. This issue is described in a Silicon Errata (DS80000691D or DS80000692D), which advises to always disable the capability. This patch implements the workaround by defining a KSZ9031 specific get_feature callback to force the Asymmetric Pause capability bit to be cleared. This fixes issues where the link would not come up at boot time, or when the Asym Pause bit was set later on. As a20-olinuxino-lime2 has Micrel KSZ9031RNXCC-TR Gigabit PHY since revision H, so we need to use Micrel PHY driver on those devices. Signed-off-by: Petr Štetiar <ynezz@true.cz>
* uboot-envtools: oxnas: fix wrong eraseblock size for shuttle,kd20Daniel Golle2022-03-211-1/+1
| | | | | | | | Shuttle KD20 has NAND flash with 0x20000 (128KiB) erase blocks. Correctly set that in uboot-envtools as well to allow writing to the bootloader environment using fw_setenv. Signed-off-by: Daniel Golle <daniel@makrotopia.org>
* ramips/mediatek: enable threaded NAPI in the ethernet driverFelix Fietkau2022-03-212-1/+42
| | | | | | Improves performance, especially under load Signed-off-by: Felix Fietkau <nbd@nbd.name>
* qosify: update to the latest versionFelix Fietkau2022-03-211-3/+3
| | | | | | | | | | | | | | | 391a9fbd5ace dns: fix parsing vlan encapsulated protocol 6aeeddbc91ad interface: extend dns filters to cover vlan tagged traffic as well 1ab53d4ca601 bpf: return TC_ACT_UNSPEC to allow other filters to proceed ca21e729af23 interface: switch to using clsact for filters 5d158f6b3c15 interface: run ingress bpf filter on main device ingress instead of ifb egress bdfcb11847ce interface: fix duplicated dns filter line b97405aa632a Revert "ubus: remove dnsmasq subscriber" 8fbaf39dbc95 interface: rework adding/removing filters, do not delete clsact d7ba5804eae4 interface: replace open-coded ifb-dns string with QOSIFY_DNS_IFNAME 91cf440db9e2 loader: fix use of deprecated functions Signed-off-by: Felix Fietkau <nbd@nbd.name>
* kernel: Fix patch headerMarek Behún2022-03-211-1/+1
| | | | | | | | | | Remove "a" character from the first line of patch 738-v5.14-01-net-dsa-qca8k-fix-an-endian-bug-in-qca8k-get-ethtool.patch Otherwise `git am` fails to apply this patch which is annoying when trying to do some development / rebasing. Signed-off-by: Marek Behún <kabel@kernel.org>
* uboot-mvebu: backport patch to fix eMMCRobert Marko2022-03-211-0/+64
| | | | | | | | | | v2022.01 has a regression that broke eMMC usage on most if not all Armada SoC-s, thus breaking boards like uDPU which use eMMC for storage. Fix it by backporting a recent upstream patch. Fixes: 782d4c8306c8 ("uboot-mvebu: update to version 2022.01") Signed-off-by: Robert Marko <robert.marko@sartura.hr>
* mvebu: udpu: include LM75 kmod by defaultRobert Marko2022-03-211-1/+1
| | | | | | | uDPU has 2 LM75 compatible temperature sensors, so include the driver for them by default in order to utilize them. Signed-off-by: Robert Marko <robert.marko@sartura.hr>
* mvebu: udpu: fix initramfs bootingRobert Marko2022-03-211-1/+1
| | | | | | | | | | uDPU provides a FIT based initramfs, but currently gets stuck after U-boot starts the kernel at "Starting kernel..". It is due to the load address being too low, so increase it in order to get the initramfs booting again. Signed-off-by: Robert Marko <robert.marko@sartura.hr>
* ltq-vdsl-mei: add locking to interrupt handlerJan Hoffmann2022-03-212-1/+46
| | | | | | | | | | | | | | | | | | | | | | | | | | | | Some users noticed repeated resyncs at random intervals, which go away when the MEI driver is configured to use polling instead of interrupts. Debugging shows that this seems to be caused by concurrent calls to MEI_ReadMailbox (in the interrupt handler) and MEI_WriteMailbox. This appears to be mostly triggered when there is an interrupt for vectoring error reports. In polling mode, calls to MEI_ReadMailbox are protected by the same semaphore as is used in MEI_WriteMailbox. When interrupts are used, MEI_WriteMailbox appears to rely on MEI_DisableDeviceInt and MEI_EnableDeviceInt to provide mutual exclusion with the interrupt handler. These functions mask/unmask interrupts, and there is an additional check of the mask in the interrupt handler itself. However, this is not sufficient on systems with SMP, as the interrupt handler may be running in parallel, and could already be past the interrupt mask check at this point. This adds a lock to the interrupt handler, and also acquires this lock in MEI_DisableDeviceInt. This should make sure that after a call to MEI_DisableDeviceInt the interrupt is masked, and the interrupt handler is either not running, has alread finished its work, or is still before the interrupt mask check, and is thus going to detect the change. Tested-by: Martin Blumenstingl <martin.blumenstingl@googlemail.com> Signed-off-by: Jan Hoffmann <jan@3e8.eu>
* ltq-vdsl-app: set MAC address for vectoring error reportsJan Hoffmann2022-03-211-6/+14
| | | | | | | | | | | | This tells the modem about the WAN MAC address, which is used as source address for vectoring error reports that are generated by the firmware. It needs to be set early, as the MEI driver only actually writes the value to the modem when is in reset state (i.e. the firmware has been loaded, but connection has not started yet). Tested-by: Martin Blumenstingl <martin.blumenstingl@googlemail.com> Signed-off-by: Jan Hoffmann <jan@3e8.eu>
* ltq-vdsl-mei: enable vectoring error sample callbackJan Hoffmann2022-03-212-13/+2
| | | | | | | | This re-enables the vectoring error sample callback and adds a dependency to the corresponding driver. Tested-by: Martin Blumenstingl <martin.blumenstingl@googlemail.com> Signed-off-by: Jan Hoffmann <jan@3e8.eu>
* ltq-vectoring: add driverJan Hoffmann2022-03-214-0/+349
| | | | | | | | | | | | | | | | | | | | | | | | In order to calculate the required pre-distortion for downstream vectoring, the vectoring control entity (VCE) at the carrier office needs error samples from the modem. On Lantiq VR9 modems, error reports are generated by the firmware, but need to be multiplexed into the data stream by the driver on the main processor when L2 encapsulation is selected by the VCE. This driver provides the necessary callback function, which is called by the MEI driver after receiving an error report from the firmware. Originally, it is part of the Lantiq PPA driver, but after a few changes it also works with the PTM driver used in OpenWrt. The direct call to ndo_start_xmit needs to be replaced, as the PTM driver relies on locks from the kernel. Instead dev_queue_xmit is used, which is called from a work queue, as it is not safe to call from an interrupt handler. Additional changes include fixes to support recent kernel versions and a change of the used interface from ptm0 to dsl0. Tested-by: Martin Blumenstingl <martin.blumenstingl@googlemail.com> Signed-off-by: Jan Hoffmann <jan@3e8.eu>
* kernel: delete Linux 5.4 config and patchesDaniel Golle2022-03-211709-477715/+0
| | | | | | | | As the upcoming release will be based on Linux 5.10 only, remove all kernel configuration as well as patches for Linux 5.4. There were no targets still actively using Linux 5.4. Signed-off-by: Daniel Golle <daniel@makrotopia.org>
* mediatek: Add support for Xiaomi Redmi Router AX6SRichard Huynh2022-03-206-2/+396
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Also known as the "Xiaomi Router AX3200" in western markets, but only the AX6S is widely installation-capable at this time. SoC: MediaTek MT7622B RAM: DDR3 256 MiB (ESMT M15T2G16128A) Flash: SPI-NAND 128 MiB (ESMT F50L1G41LB or Gigadevice GD5F1GQ5xExxG) WLAN: 2.4/5 GHz 4T4R 2.4 GHz: MediaTek MT7622B 5 GHz: MediaTek MT7915E Ethernet: 4x 10/100/1000 Mbps Switch: MediaTek MT7531B LEDs/Keys: 2/2 (Internet + System LED, Mesh button + Reset pin) UART: Marked J1 on board VCC RX GND TX, beginning from "1". 3.3v, 115200n8 Power: 12 VDC, 1.5 A Notes: U-Boot passes through the ethaddr from uboot-env partition, but also has been known to reset it to a generic mac address hardcoded in the bootloader. However, bdata is also populated with the ethernet mac addresses, but is also typically never written to. Thus this is used instead. Installation: 1. Flash stock Xiaomi "closed beta" image labelled 'miwifi_rb03_firmware_stable_1.2.7_closedbeta.bin'. (MD5: 5eedf1632ac97bb5a6bb072c08603ed7) 2. Calculate telnet password from serial number and login 3. Execute commands to prepare device nvram set ssh_en=1 nvram set uart_en=1 nvram set boot_wait=on nvram set flag_boot_success=1 nvram set flag_try_sys1_failed=0 nvram set flag_try_sys2_failed=0 nvram commit 4. Download and flash image On computer: python -m http.server On router: cd /tmp wget http://<IP>:8000/factory.bin mtd -r write factory.bin firmware Device should reboot at this point. Reverting to stock: Stock Xiaomi recovery tftp that accepts their signed images, with default ips of 192.168.31.1 + 192.168.31.100. Stock image should be renamed to tftp server ip in hex (Eg. C0A81F64.img) Triggered by holding reset pin on powerup. A simple implementation of this would be via dnsmasq's dhcp-boot option or using the vendor's (Windows only) recovery tool available on their website. Signed-off-by: Richard Huynh <voxlympha@gmail.com>
* mediatek: Add GD5F1GQ5xExxG to mtk-snandRichard Huynh2022-03-201-0/+4
| | | | | | Some units of the Xiaomi Redmi Router AX6S/Xiaomi Router AX3200 contain this part. Signed-off-by: Richard Huynh <voxlympha@gmail.com>
* ipq40xx: add support for Telco X1 ProNicholas Smith2022-03-195-2/+347
| | | | | | | | | | | | | | | | | | | | | | | | | | | Telco X1 Pro is a Cat12 LTE-A Pro modem router. Vendor firmware is based on a recent version of OpenWrt. Flashing is possible via CLI using sysupgrade -F -n The serial headers allow bootloader and console access Serial setting: 115200 8N1 Brief Specifications: IPQ4019 SoC 32MB flash 512MB RAM 4x gigabit LAN 1x gigabit WAN Dual-band Wave-2 wifi 2x SMA LTE antenna connectors 2x RP-SMA wifi antennas 1x USB 2.0 port 1x Reset button Serial headers installed 1x Nano SIM tray 1x Quectel EM-12G LTE-A Pro modem 1x M.2 slot attached to USB 3.0 1x internal micro SD card slot Signed-off-by: Nicholas Smith <nicholas@nbembedded.com>
* ramips: add support for D-Link DIR-878 R1Igor Nazarov2022-03-192-0/+48
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Specifications: - SoC: MediaTek MT7621AT - RAM: 128 MB (DDR3) - Flash: 16 MB (SPI NOR) - WiFi: MT7615N (2.4GHz) and MT7615N (5Ghz) - Switch: 1 WAN, 4 LAN (Gigabit) - Buttons: Reset, WiFi Toggle, WPS - LEDs: Power, Internet, WiFi 2.4G WiFi 5G The R1 revision is identical to the A1 revision except - No Config2 Parition, therefore - factory partition resized to 64k from 128K - Firmware partition offset is 0x50000 not 0x60000 - Firmware partitions size increased by 64K - Firmware partition type is "denx,uimage", not "sge,uimage" - Padding of image creation "uimage-padhdr 96" removed Installation: Update to the last D-Link firmware through web-ui before OpenWRT installation then follow the instructions to patch your device using D-Link FailsafeUI. - D-Link FailsafeUI: Power down the router, press and hold the reset button, then re-plug it. Keep the reset button pressed until the internet LED stops flashing, then jack into any lan port and manually assign a static IP address in 192.168.0.0/24 other than 192.168.0.1 (e.g. 192.168.0.2) and go to http://192.168.0.1 Flash with the factory image. Signed-off-by: Igor Nazarov <tigron.dev@gmail.com>
* kernel: bump 5.10 to 5.10.107John Audia2022-03-195-12/+5
| | | | | | | | | | All patches automatically rebased. Build system: x86_64 Build-tested: bcm2711/RPi4B, mt7622/RT3200 Run-tested: bcm2711/RPi4B, mt7622/RT3200 Signed-off-by: John Audia <graysky@archlinux.us>