This weekend I went over the current Linux BPI-R3 Device Tree file in the
linux master branch in order to fix some issues I encountered with the
Ubuntu 6.8 kernel.
I compared everything to the BPI-R3 schematics as well as the MT7986
datasheet and these are the issues I found and fixed in my copy so far:
- there was no memory block - not used by Linux but I think is used by
U-boot
- pcie
- was missing the pice_wake pin group - though had to remove it again
due to:
- the two pin groups pcie_clk and pcie_wake conflict with GPIO pins
used by the reset and WPS push buttons - the schematic is ambiguous as to
how things are wired, it has both the buttons and M.2 connector using the
same nets though with some optional 0 Ohm resistors (or jumpers) which
makes it hard to know what is actually happening without
multimeter probing
- removing the two pin groups allows the pcie device to actually be
loaded - I need to get a NVMe SSD to test it out
- uart0 - missing the pin group
- ethernet mdio-bus - used GPIO 5 pin for reset but, this is actually
connected instead to a DIP switch for boot device selection
- there was no audio device - the drivers only recently been added to
kernel
- I grabbed the definition from OpenWrt, though the MediaTek SDK
though they disagrees on one of the clocks so I need to work out what is
correct
- there are header pins for connecting audio codec chip via CON1 but
I only just ordered such a codec so can't test it properly yet
- there was no SNFI device
- I grabbed the definition from the MediaTek SDK
- there is an empty solder pad for an SNFI chip so I don't think I
will be able to test this unless I find someone who has installed such a
chip to test
- ssusb - missing required voltage regulator definitions
I need to work out how to submit these fixes to the Linux device tree
maintainers.
Diederik has also given me a pre-built Debian kernel to test which I will
do next.