openwrt/target/linux
Brian Norris f1c041e34f ipq40xx: Add subtarget for Google WiFi (Gale)
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>
2022-03-25 18:14:13 +01:00
..
apm821xx apm821xx: fix crash/panic related to SATA/SSD choice 2022-03-25 18:14:13 +01:00
archs38 kernel: delete Linux 5.4 config and patches 2022-03-21 11:36:30 +00:00
armvirt kernel: 5.10: consolidate mac80211 crypto options 2021-12-17 16:16:34 +01:00
at91 kernel: bump 5.10 to 5.10.106 2022-03-19 16:13:58 +01:00
ath25 ath25: drop Linux 5.4 support 2022-02-17 11:08:58 +01:00
ath79 ath79: fix TPLINK_HWREV field for TL-WR1043ND v4 2022-03-25 18:13:11 +01:00
bcm27xx kernel: bump 5.10 to 5.10.106 2022-03-19 16:13:58 +01:00
bcm47xx kernel: delete Linux 5.4 config and patches 2022-03-21 11:36:30 +00:00
bcm53xx kernel: delete Linux 5.4 config and patches 2022-03-21 11:36:30 +00:00
bcm63xx kernel: delete Linux 5.4 config and patches 2022-03-21 11:36:30 +00:00
bcm4908 kernel: delete Linux 5.4 config and patches 2022-03-21 11:36:30 +00:00
bmips kernel: 5.10: consolidate mac80211 crypto options 2021-12-17 16:16:34 +01:00
gemini kernel: bump 5.10 to 5.10.94 2022-02-01 23:34:07 +00:00
generic kernel: generic: fix warning in FIT partition parser 2022-03-24 03:27:12 +00:00
imx imx: fix USB support 2022-03-11 00:04:05 +01:00
ipq40xx ipq40xx: Add subtarget for Google WiFi (Gale) 2022-03-25 18:14:13 +01:00
ipq806x ipq806x: fix TP-Link Archer VR2600v bootlooping 2022-03-16 20:48:01 +01:00
kirkwood target/linux: replace egrep with grep -E 2022-02-07 00:03:27 +01:00
lantiq lantiq: fritz7362sl: add partition subnode for SPI flash 2022-03-16 20:48:01 +01:00
layerscape kernel: delete Linux 5.4 config and patches 2022-03-21 11:36:30 +00:00
malta kernel: 5.10: consolidate mac80211 crypto options 2021-12-17 16:16:34 +01:00
mediatek ramips/mediatek: enable threaded NAPI in the ethernet driver 2022-03-21 21:07:14 +01:00
mpc85xx mpc85xx: overhaul WS-AP3825i LED setup 2022-03-24 23:26:10 +01:00
mvebu mvebu: udpu: include LM75 kmod by default 2022-03-21 14:00:34 +01:00
mxs kernel: 5.10: consolidate mac80211 crypto options 2021-12-17 16:16:34 +01:00
octeon kernel: delete Linux 5.4 config and patches 2022-03-21 11:36:30 +00:00
octeontx kernel: delete Linux 5.4 config and patches 2022-03-21 11:36:30 +00:00
omap kernel: delete Linux 5.4 config and patches 2022-03-21 11:36:30 +00:00
oxnas kernel: 5.10: remove CONFIG_DEVTMPFS{,_MOUNT} from kconfigs 2022-03-01 22:57:40 +00:00
pistachio kernel: bump 5.10 to 5.10.95 2022-02-01 23:34:07 +00:00
qoriq qoriq: remove CONFIG_GDB_SCRIPTS from kernel config 2022-03-25 12:53:19 +02:00
ramips ramips: add support for D-Link DIR-878 R1 2022-03-19 19:51:20 +01:00
realtek kernel: bump 5.10 to 5.10.106 2022-03-19 16:13:58 +01:00
rockchip kernel: include CONFIG_KEXEC_SIG in configs 2022-03-15 08:33:45 +01:00
sunxi sunxi: cortexa7: fix ethernet link detection on a20-olinuxino-lime2 2022-03-21 23:05:27 +01:00
tegra kernel: delete Linux 5.4 config and patches 2022-03-21 11:36:30 +00:00
uml uml: make use of 'rootfs-part' feature 2022-01-23 19:48:31 +00:00
x86 x86: legacy: enable pata_sis driver 2022-03-10 23:31:05 +01:00
zynq kernel: delete Linux 5.4 config and patches 2022-03-21 11:36:30 +00:00
Makefile target: use SPDX license identifiers on Makefiles 2021-02-10 15:47:18 +01:00