Skip to content

Driver and platform support

Wolfvak edited this page May 14, 2021 · 6 revisions

This page has the status for driver bringup for 3DS Linux and is a good place to start with for people who want to contribute. The priority is determined as follows: high - required for a usable environment, med - required to be livable on it, low - not needed but would be nice to have, extra - not needed at all but bonus points for anyone who gets it working.

Platform

Name Status Priority Links Notes
MPCore 100% High TRM Supported by Linux
GIC 100% High Supported by Linux
SMP 100% High Description Supports all CPUs, dual core on old3DS and quad core on new3DS models
Extra FCRAM 100% High Only for new3DS
CPU reclocking 0% High Issue Only for new3DS
Power management ~5% Med Registers Some drivers support power management already but most don't, and we need platform-specific sleep modes
ARM9 50% High arm9linuxfw Fully supported from Linux through VirtIO, it just needs a better firmware on the ARM9 side
PL-330 90% High Supported by Linux, needs more support on new3DS

Devices

Name Status Priority Links Notes
SPI 100% High Registers Doesn't support the autopolled modes since Linux has no concept of such thing
I2C 100% High Registers
GPIO 100% High Registers Needs very special handling for interrupts
SDHC ~80% Med Reference There's a basic implementation but it doesn't support the 32bit FIFO
Wireless 0% Med Wifiboot Needs more research into the AR6002 and how it can be brought back into the mainline kernel (it was removed when the ath6kl driver was moved off staging?)
GPU 0% Med Baremetal implementation Includes the display controller, command processor and DMA transfer unit
Backlight 0% Med Registers
CSND 0% Med Baremetal implementation Needs codec first, and this is only a simple multichannel output pipe
DSP 0% Extra Info Registers Same as the DSP in the DSi, there hasn't been much RE done on it yet?
Camera 0% Extra Not much info out there
Y2R 0% Extra Color conversion hardware? Used by the camera
MVD 0% Extra H264 hardware acceleration chip, only on new3DS
MIC 0% Low Registers Microphone capture

SPI subdevices:

Name Status Priority Links Notes
spi-nor 75% Low It's a regular chip that should be supported by the spi-nor driver but it has a custom ID that's not recognized
touch 100% Med Touschreen/circlepad controller in CODEC
codec 0% Med Baremetal implementation Sound controller in CODEC

I2C subdevices:

Name Status Priority Links Notes
IRQ Chip 100% High Info
Fuel gauge 100% Med Info Supports retrieving the battery voltage, temperature, capacity and the status of the AC charger (connected or not)
RTC 100% Med Info Supports both reading and writing the raw time
Accelerometer 100% Low Info The LIS331DLH is already supported in Linux but the 3DS exposes a different interface to it
Gyroscope 50% Low ITG-3200 ITG-1010 The kernel fully supports the ITG-3200, but it needs a new driver for the ITG-1010
Infrared 90% Low Info The SC16IS750 is already supported and seems to work in Linux, but the IR LED itself is never lit up when transferring data, needs more research
LEDs 90% Low Info Only supports controlling the notification LED, the rest are not that important?
Regulators 95% High Info Supports toggling regulators on and off but it waits for a fixed amount of time rather than for an interrupt

Roadmap

???

("inspired" by https://wiki.henkaku.xyz/vita/Linux_Driver_Status)

Clone this wiki locally