NetBSD on Allwinner SoCs Update
Since the last update, we've made a number of improvements to the NetBSD Allwinner port. The SUNXI kernel has grown support for 8 new SoCs, and we added many new device drivers to the source repository.
Supported systems
- As of November 2017, we now support the following Allwinner SoCs with the SUNXI kernel: A10, A13, A20, A31, A64, A80, A83T, GR8, H2+, H3, H5, and R8. An up-to-date list of supported SoCs with example boards is maintained on the NetBSD/allwinner wiki page.
- Here's NetBSD running on a 14" Pinebook from Pine64. Since the keyboard and touchpad are connected internally to a USB controller, the device is fully functional.
- A bit more effort was required to get NetBSD running on a PocketCHIP from NextThing Co. The keyboard is wired to an I2C keypad controller, so a new tcakp(4) keyboard driver was required. The touchscreen is supported by the Allwinner port's sunxits driver and can be calibrated with the tpctl(8) utility.
- Many more devices are supported, including (but not limited to) boards from FriendlyARM (NanoPi), Olimex (OLinuXino), Pine64, Sinovoip (BananaPi), and Xunlong (OrangePi).
Device driver support
In addition to the countless machine-independent device drivers already in NetBSD, the following Allwinner-specific devices are supported:
Audio codec
The built-in analog audio codec is supported on the following SoCs with the sunxicodec driver: A10, A13, A20, A31, GR8, H2+, H3, and R8.
Ethernet
Ethernet is supported on all applicable Allwinner SoCs. Three ethernet drivers are available:
- Fast Ethernet MAC (EMAC) as found in A10 and A20 family SoCs
- Gigabit Ethernet MAC (GMAC) as found in A20, A31, and A80 family SoCs
- Gigabit Ethernet MAC (EMAC) as found in A64, A83T, H2+, and H3 family SoCs
Framebuffer
Framebuffer console support is available wherever it is supported by U-Boot using the simplefb(4) driver.
Thermal sensors
Thermal sensors are supported on A10, A13, A20, A31, A64, A83T, H2+, and H3 SoCs.
CPU frequency and voltage scaling
On A10, A20, H2+, and H3 SoCs, dynamic CPU frequency and voltage scaling support is available when configured in the device tree. In addition, on H2+ and H3 SoCs, the kernel will automatically detect when the CPU temperature is too high and throttle the CPU frequency and voltage to prevent overheating.
Touch screen
The touch screen controller found in A10, A13, A20, and A31 SoCs is fully supported. The tpctl(8) utility can be used to calibrate the touch screen and has been updated to support standard wsdisplay APIs.
Other drivers
A standard set of devices are supported across all SoCs (where applicable): DMA, GPIO, I2C, interrupt controllers, RTC, SATA, SD/MMC, timers, UART, USB, watchdog, and more.
U-Boot
A framework for U-Boot packages has been added to pkgsrc, and U-Boot packages for many boards already exist.
What now?
There are a few missing features that would be nice to have:
- Wi-Fi (SDIO). There are a lot of different wireless chips used on these boards, but the majority seem to be either Broadcom or Realtek based. We recently ported OpenBSD's bwfm(4) driver to support the USB version of the Broadcom Wi-Fi controllers, with an expectation that SDIO support will follow at some point in the future.
- NAND controller. Most boards have eMMC and/or microSD slots, but this would be really useful for the CHIP / CHIP Pro / PocketCHIP family of devices.
- 64-bit support for sun50i family SoCs
- Readily available install images. A prototype NetBSD ARM Bootable Images site is available with a limited selection of supported boards.
More information
[2 comments]
Posted by Jail Bird on November 08, 2017 at 06:02 PM UTC #
Posted by Petr Topiarz on November 13, 2017 at 02:06 PM UTC #