On Sat, Jun 11, 2022 at 06:59:48PM +0200, Christian Lamparter wrote: > Meraki MR26 is an EOL wireless access point featuring a > PoE ethernet port and two dual-band 3x3 MIMO 802.11n > radios and 1x1 dual-band WIFI dedicated to scanning. > > Thank you Amir for the unit and PSU. > > Hardware info: > SOC : Broadcom BCM53015A1KFEBG (dual-core Cortex-A9 CPU at 800 MHz) > RAM : H5TQ1G63EFR, SK hynix Inc. 1Gb DDR3 SDRAM = 128 MiB > NAND : S34ML01G100TF100, S34ML01G1 1 Gb Spansion SLC NAND Flash = 128 MiB > ETH : 1GBit Ethernet Port - PoE (TPS23754 PoE Interface) > > WIFI0 : Broadcom BCM43431KMLG, BCM43431 802.11 abgn (3x3:3) > WIFI1 : Broadcom BCM43431KMLG, BCM43431 802.11 abgn (3x3:3) > WIFI2 : Broadcom BCM43428 802.11 abgn (1x1:1) > BUTTON: one reset button > LEDS : one amber (fault), one white (indicator) LED, separate RGB-LED. > MISC : Atmel AT24C64 8KiB EEPROM i2c > : Ti INA219 26V, 12-bit, i2c output current/voltage/power monitor > > SERIAL: > WARNING: The serial port needs a TTL/RS-232 3V3 level converter! > The Serial setting is 115200-8-N-1. The board has a populated > right angle 1x4 0.1" pinheader. > The pinout is: VCC (next to J3, has the pin 1 indicator), RX, TX, GND. > > Odd stuff: > > - uboot does not support lzma compression, but gzip'd uImage/DTB work. > - uboot claims to support FIT, but fails to pass the DTB to the kernel. > Appending the dtb after the kernel image works. > - RGB-controller is supported through an external userspace program. > - The ubi partition contains a "board-config" volume. It stores the > MAC Address (0x66 in binary) and Serial No. (0x7c alpha-numerical). > - SoC's temperature sensor always reports that it is on fire. > This causes the system to immediately shutdown! Looking at reported > "418 degree Celsius" suggests that this sensor is not working. > > WIFI: > b43 is able to initialize all three WIFIs @ 802.11bg. > | b43-phy0: Broadcom 43431 WLAN found (core revision 29) > | bcma-pci-bridge 0000:01:00.0: bus1: Switched to core: 0x812 > | b43-phy0: Found PHY: Analog 9, Type 7 (HT), Revision 1 > | b43-phy0: Found Radio: Manuf 0x17F, ID 0x2059, Revision 0, Version 1 > | b43-phy0 warning: 5 GHz band is unsupported on this PHY > | b43-phy1: Broadcom 43431 WLAN found (core revision 29) > | bcma-pci-bridge 0001:01:00.0: bus2: Switched to core: 0x812 > | b43-phy1: Found PHY: Analog 9, Type 7 (HT), Revision 1 > | b43-phy1: Found Radio: Manuf 0x17F, ID 0x2059, Revision 0, Version 1 > | b43-phy1 warning: 5 GHz band is unsupported on this PHY > | b43-phy2: Broadcom 43228 WLAN found (core revision 30) > | bcma-pci-bridge 0002:01:00.0: bus3: Switched to core: 0x812 > | b43-phy2: Found PHY: Analog 9, Type 4 (N), Revision 16 > | b43-phy2: Found Radio: Manuf 0x17F, ID 0x2057, Revision 9, Version 1 > | Broadcom 43xx driver loaded [ Features: NL ] > > Signed-off-by: Christian Lamparter <chunkeey@xxxxxxxxx> > --- > > |WARNING: added, moved or deleted file(s), does MAINTAINERS need updating? > |#89: > |new file mode 100644 > > MAINTAINERS has: > > >BROADCOM BCM5301X ARM ARCHITECTURE > >[...] > >F: arch/arm/boot/dts/bcm5301* > > |WARNING: DT compatible string "atmel,24c64" appears un-documented \ > |-- check ./Documentation/devicetree/bindings/ > |#245: FILE: arch/arm/boot/dts/bcm53015-meraki-mr26.dts:152: > |+ compatible = "atmel,24c64"; > > weird, it should match what is in: > Documentation/devicetree/bindings/eeprom/at24.yaml This checkpatch check is a hack dating back to before we had schemas. It just greps the tree for the compatible string, but that doesn't work since it's a pattern now. What you should pay attention to is 'make dtbs_check' for this dts file though that is still pretty noisy for existing platforms. It will be accurate for what's not documented with a schema. I haven't removed the checkpatch check because I imagine folks run checkpatch, but not schema checks still, and the check also looks at .c files which I don't have a solution for. What I want to do is extract all struct of_device_id instances and compare them against all schema compatibles. I'm not sure how to do that exactly. Use the DWARF info to get all the structs perhaps. Another way is using the modinfo, but not everything is a module. > --- > arch/arm/boot/dts/Makefile | 1 + > arch/arm/boot/dts/bcm53015-meraki-mr26.dts | 166 +++++++++++++++++++++ > 2 files changed, 167 insertions(+) > create mode 100644 arch/arm/boot/dts/bcm53015-meraki-mr26.dts > > diff --git a/arch/arm/boot/dts/Makefile b/arch/arm/boot/dts/Makefile > index 184899808ee7..9ad78c358330 100644 > --- a/arch/arm/boot/dts/Makefile > +++ b/arch/arm/boot/dts/Makefile > @@ -135,6 +135,7 @@ dtb-$(CONFIG_ARCH_BCM_5301X) += \ > bcm47094-luxul-xwr-3150-v1.dtb \ > bcm47094-netgear-r8500.dtb \ > bcm47094-phicomm-k3.dtb \ > + bcm53015-meraki-mr26.dtb \ > bcm53016-meraki-mr32.dtb \ > bcm94708.dtb \ > bcm94709.dtb \ > diff --git a/arch/arm/boot/dts/bcm53015-meraki-mr26.dts b/arch/arm/boot/dts/bcm53015-meraki-mr26.dts > new file mode 100644 > index 000000000000..597d36945756 > --- /dev/null > +++ b/arch/arm/boot/dts/bcm53015-meraki-mr26.dts > @@ -0,0 +1,166 @@ > +// SPDX-License-Identifier: GPL-2.0-or-later OR MIT > +/* > + * Broadcom BCM470X / BCM5301X ARM platform code. > + * DTS for Meraki MR26 / Codename: Venom > + * > + * Copyright (C) 2022 Christian Lamparter <chunkeey@xxxxxxxxx> > + */ > + > +/dts-v1/; > + > +#include "bcm4708.dtsi" > +#include "bcm5301x-nand-cs0-bch8.dtsi" > +#include <dt-bindings/leds/common.h> > + > +/ { > + compatible = "meraki,mr26", "brcm,bcm53015", "brcm,bcm4708"; > + model = "Meraki MR26"; > + > + memory@0 { > + reg = <0x00000000 0x08000000>; > + device_type = "memory"; > + }; > + > + leds { > + compatible = "gpio-leds"; > + > + led-0 { > + function = LED_FUNCTION_FAULT; > + color = <LED_COLOR_ID_AMBER>; > + gpios = <&chipcommon 13 GPIO_ACTIVE_HIGH>; > + panic-indicator; > + }; > + led-1 { > + function = LED_FUNCTION_INDICATOR; > + color = <LED_COLOR_ID_WHITE>; > + gpios = <&chipcommon 12 GPIO_ACTIVE_HIGH>; > + }; > + }; > + > + keys { > + compatible = "gpio-keys"; > + #address-cells = <1>; > + #size-cells = <0>; > + > + restart { key-restart I think, there's a series under review to standardize the prefix. > + label = "Reset"; > + linux,code = <KEY_RESTART>; > + gpios = <&chipcommon 11 GPIO_ACTIVE_LOW>; > + }; > + }; > +}; > + > +&uart0 { > + clock-frequency = <50000000>; > + /delete-property/ clocks; > +}; > + > +&uart1 { > + status = "disabled"; > +}; > + > +&gmac0 { > + status = "okay"; > +}; > + > +&gmac1 { > + status = "disabled"; > +}; > +&gmac2 { > + status = "disabled"; > +}; > +&gmac3 { > + status = "disabled"; > +}; > + > +&nandcs { > + nand-ecc-algo = "hw"; > + > + partitions { > + compatible = "fixed-partitions"; > + #address-cells = <0x1>; > + #size-cells = <0x1>; > + > + partition@0 { > + label = "u-boot"; > + reg = <0x0 0x200000>; > + read-only; > + }; > + > + partition@200000 { > + label = "u-boot-env"; > + reg = <0x200000 0x200000>; > + /* empty */ > + }; > + > + partition@400000 { > + label = "u-boot-backup"; > + reg = <0x400000 0x200000>; > + /* empty */ > + }; > + > + partition@600000 { > + label = "u-boot-env-backup"; > + reg = <0x600000 0x200000>; > + /* empty */ > + }; > + > + partition@800000 { > + label = "ubi"; > + reg = <0x800000 0x7780000>; > + }; > + }; > +}; > + > +&srab { > + status = "okay"; > + > + ports { > + port@0 { > + reg = <0>; > + label = "poe"; > + }; > + > + port@5 { > + reg = <5>; > + label = "cpu"; > + ethernet = <&gmac0>; > + > + fixed-link { > + speed = <1000>; > + duplex-full; > + }; > + }; > + }; > +}; > + > +&i2c0 { > + status = "okay"; > + > + pinctrl-names = "default"; > + pinctrl-0 = <&pinmux_i2c>; > + > + clock-frequency = <100000>; > + > + ina219@40 { > + compatible = "ti,ina219"; /* PoE power */ > + reg = <0x40>; > + shunt-resistor = <60000>; /* = 60 mOhms */ > + }; > + > + eeprom@56 { > + compatible = "atmel,24c64"; > + reg = <0x56>; > + pagesize = <32>; > + read-only; > + #address-cells = <1>; > + #size-cells = <1>; > + > + /* it's empty */ > + }; > +}; > + > +&thermal { > + status = "disabled"; > + /* does not work, reads 418 degree Celsius */ > +}; > -- > 2.36.1 > >