Linux Driver Status: Difference between revisions

From Vita Development Wiki
Jump to navigation Jump to search
Line 23: Line 23:
|-
|-
| GPIO
| GPIO
| style="background-color:#ffccc9;" | 0%
| style="background-color:#44ff44;" | 100%
| Med
| High
| [[GPIO Registers]]
| [[GPIO Registers]]
| LEDs mostly
| LEDs, Syscon, SPI, LCD backlight, etc
|-
|-
| UART
| UART
| style="background-color:#ffffcc;" | 50%
| style="background-color:#ddffcc;" | 75%
| High
| High
| [[UART Registers]] [[UART Console]]
| [[UART Registers]] [[UART Console]]
Line 59: Line 59:
|-
|-
| SPI
| SPI
| style="background-color:#ffffcc;" | 50%
| style="background-color:#ddffcc;" | 75%
| Med
| Med
| [[SPI Registers]]
| [[SPI Registers]]
| Syscon, accelerometer, OLED, touchscreen. Needs code cleanup as a proper SPI driver.
| Syscon, accelerometer, OLED, touchscreen
|-
|-
| Syscon
| Syscon
| style="background-color:#ffffcc;" | 50%
| style="background-color:#88ffaa;" | 95%
| Med
| Med
| [[Syscon]]
| [[Syscon]]
| Syscon, accelerometer, touchscreen, buttons, analog sticks. Needs code cleanup.
| Syscon, accelerometer, touchscreen, buttons, analog sticks, RTC, etc
|-
|-
| Buttons/joysticks
| Buttons/joysticks
| style="background-color:#ccffcc;" | 95%
| style="background-color:#44ff44;" | 100%
| Med
| Med
| [https://github.com/xerpi/linux_vita/commit/84a20087ad64dd6774161ca2eb8122c94a314779 Current implementation] [https://github.com/xerpi/vita-libbaremetal/blob/master/libbaremetal/src/ctrl.c libbaremetal implementation]
| [https://github.com/xerpi/vita-libbaremetal/blob/master/libbaremetal/src/ctrl.c libbaremetal implementation]
| Needs code cleanup: depends on SPI driver and MFD subsystem driver for Syscon.
|
|-
|-
| Touch
| Touch
| style="background-color:#ccffcc;" | 95%
| style="background-color:#44ff44;" | 100%
| Med
| Med
| [https://github.com/xerpi/linux_vita/commit/84a20087ad64dd6774161ca2eb8122c94a314779 Current implementation] [https://github.com/xerpi/vita-libbaremetal/blob/master/libbaremetal/src/touch.c libbaremetal implementation]
| [https://github.com/xerpi/vita-libbaremetal/blob/master/libbaremetal/src/touch.c libbaremetal implementation]
| Needs code cleanup: depends on SPI driver and MFD subsystem driver for Syscon.
|
|-
|-
| Motion
| Motion
Line 91: Line 91:
| style="background-color:#ffccc9;" | 0%
| style="background-color:#ffccc9;" | 0%
| High
| High
| [[SceSdif]] [https://www.sdcard.org/developers/overview/host_controller/index.html]
| [[SceSdif]] [https://www.sdcard.org/developers/overview/host_controller/index.html Host Controllers spec]
| eMMC, GC, Wifi/BT uses this. Standard SD interface.
| eMMC, GC, Wifi/BT uses this. Standard SD interface.
|-
|-
Line 141: Line 141:
| [[UDC]] [[SceUdcd]]
| [[UDC]] [[SceUdcd]]
| Connecting to host PC
| Connecting to host PC
|-
| RTC
| style="background-color:#ddffcc;" | 75%
| Med
| [[SceRtc]]
| Time and date. RTC read support implemented. Missing RTC write support.
|-
|-
| PSP
| PSP

Revision as of 08:59, 23 July 2021

This page has the status for driver bringup for Vita 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.

Devices

Device Status Priority Links Notes
Framebuffer 25% High IFTU Registers Uses pre-configured framebuffer by Vita Linux bootloader
PMU 0% Med Pervasive SN99057
GPIO 100% High GPIO Registers LEDs, Syscon, SPI, LCD backlight, etc
UART 75% High UART Registers UART Console Console, debugging
DSI 0% High DSI Registers Display interface
CSI 0% Low CSI Registers Camera interface
I2S 0% Med I2S Registers Audio
I2C 0% Med I2C Registers PMIC, camera, accelerometer, OLED brightness, clockgen, HDMI control
SPI 75% Med SPI Registers Syscon, accelerometer, OLED, touchscreen
Syscon 95% Med Syscon Syscon, accelerometer, touchscreen, buttons, analog sticks, RTC, etc
Buttons/joysticks 100% Med libbaremetal implementation
Touch 100% Med libbaremetal implementation
Motion 0% Low SPI, some ST chip
SDIO 0% High SceSdif Host Controllers spec eMMC, GC, Wifi/BT uses this. Standard SD interface.
MSIF 0% Low MSIF Registers SceMsif SceSblSsMgr MemoryStick
WLAN/BT 0% Med Marvell 88W878S-BKB2, SDIO interface
eMMC 0% High SDIO interface, standard chip
Gamecard 0% Med Game Card SDIO interface, extra auth (can be disabled and use sd2vita)
Memory Card 0% Low Memory Card libbaremetal implementation MSIF interface, extra auth
GPU 0% Med GPU SGX543MP4+
USB 0% Med EHCI Ethernet, Audio codec, accessories
UDC 0% Low UDC SceUdcd Connecting to host PC
RTC 75% Med SceRtc Time and date. RTC read support implemented. Missing RTC write support.
PSP 0% Extra PSP Emulator Custom MIPS
Codec 0% Extra Venezia Toshiba MeP based

Plan

Start with the low level interfaces (SPI, I2C, etc). Those are relatively simple. Some might even have standard controller interface (like SDIO). The hardest is probably USB (unless the interface is standard). Then you can implement the devices on top of the interfaces. A lot of the devices seem to use standard chips (WLAN, motion, touch, etc) so we may get them "for free".

For power management, we need sleep/resume first. Would be great is we can use the dynamic clocking features to save battery but that's low priority. Battery fuel gauge is through a standard chip over I2C interface.

Framebuffer might be the hardest. Seems to be a custom interface. If we can find any open source device that uses a similar controller, it would make things a lot easier.