Linux Driver Status: Difference between revisions
CelesteBlue (talk | contribs) No edit summary |
|||
(7 intermediate revisions by 4 users not shown) | |||
Line 1: | Line 1: | ||
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. | This page has the status for driver bringup for PS 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 = | = Devices = | ||
Line 14: | Line 14: | ||
| High | | High | ||
| [[IFTU Registers]] | | [[IFTU Registers]] | ||
| Uses pre-configured framebuffer by [https://github.com/xerpi/vita-baremetal-linux-loader Vita Linux bootloader] | | Uses pre-configured framebuffer by [https://github.com/xerpi/vita-baremetal-linux-loader PS Vita Linux bootloader] | ||
|- | |- | ||
| PMU | | PMU | ||
Line 20: | Line 20: | ||
| Med | | Med | ||
| [[Pervasive]] [[SN99057]] | | [[Pervasive]] [[SN99057]] | ||
| | | Power Management Unit | ||
|- | |- | ||
| GPIO | | GPIO | ||
| style="background-color:# | | style="background-color:#44ff44;" | 100% | ||
| | | High | ||
| [[GPIO Registers]] | | [[GPIO Registers]] | ||
| LEDs | | LEDs, Syscon, SPI, LCD backlight, etc | ||
|- | |- | ||
| UART | | UART | ||
| style="background-color:# | | style="background-color:#ddffcc;" | 75% | ||
| High | | High | ||
| [[UART Registers]] [[UART Console]] | | [[UART Registers]] [[UART Console]] | ||
Line 56: | Line 56: | ||
| Med | | Med | ||
| [[I2C Registers]] | | [[I2C Registers]] | ||
| PMIC, camera, accelerometer, OLED brightness, clockgen, HDMI control | | PMIC, camera, motion (accelerometer IC), OLED brightness, clockgen, HDMI control | ||
|- | |- | ||
| SPI | | SPI | ||
| style="background-color:# | | style="background-color:#ddffcc;" | 75% | ||
| Med | | Med | ||
| [[SPI Registers]] | | [[SPI Registers]] | ||
| Syscon, accelerometer, OLED, touchscreen | | Syscon, accelerometer, OLED, touchscreen | ||
|- | |||
| Syscon | |||
| style="background-color:#88ffaa;" | 95% | |||
| Med | |||
| [[Syscon]] | |||
| Syscon, accelerometer, touchscreen, buttons, analog sticks, RTC, etc | |||
|- | |- | ||
| Buttons/joysticks | | Buttons/joysticks | ||
| style="background-color:# | | style="background-color:#44ff44;" | 100% | ||
| Med | | Med | ||
| | | [https://github.com/xerpi/vita-libbaremetal/blob/master/libbaremetal/src/ctrl.c libbaremetal implementation] | ||
| | | | ||
|- | |- | ||
| Touch | | Touch | ||
| style="background-color:# | | style="background-color:#44ff44;" | 100% | ||
| Med | | Med | ||
| | | [https://github.com/xerpi/vita-libbaremetal/blob/master/libbaremetal/src/touch.c libbaremetal implementation] | ||
| | | | ||
|- | |- | ||
| Motion | | Motion | ||
Line 80: | Line 86: | ||
| Low | | Low | ||
| | | | ||
| SPI, some ST chip | | Accelerometer IC, SPI, some ST chip | ||
|- | |- | ||
| SDIO | | SDIO | ||
| 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, | | eMMC, GC, Wlan/Bt uses this. Standard SD interface. | ||
|- | |- | ||
| MSIF | | MSIF | ||
Line 98: | Line 104: | ||
| Med | | Med | ||
| | | | ||
| Marvell 88W878S-BKB2, SDIO interface | | [[Marvell_88W878S-BKB2|Marvell 88W878S-BKB2]], SDIO interface | ||
|- | |- | ||
| eMMC | | eMMC | ||
Line 110: | Line 116: | ||
| Med | | Med | ||
| [[Game Card]] | | [[Game Card]] | ||
| SDIO interface, extra | | SDIO interface, extra authentication (can be disabled and use GC2SD) | ||
|- | |- | ||
| Memory Card | | Memory Card | ||
Line 116: | Line 122: | ||
| Low | | Low | ||
| [[Memory Card]] [https://github.com/xerpi/vita-libbaremetal/blob/master/libbaremetal/src/msif.c libbaremetal implementation] | | [[Memory Card]] [https://github.com/xerpi/vita-libbaremetal/blob/master/libbaremetal/src/msif.c libbaremetal implementation] | ||
| MSIF interface, extra | | MSIF interface, extra authentication | ||
|- | |- | ||
| GPU | | GPU | ||
Line 134: | Line 140: | ||
| Low | | Low | ||
| [[UDC]] [[SceUdcd]] | | [[UDC]] [[SceUdcd]] | ||
| Connecting to host PC | | USB Device Controller. Connecting to host PC or USB OTG. | ||
|- | |||
| RTC | |||
| style="background-color:#ddffcc;" | 75% | |||
| Med | |||
| [[SceRtc]] | |||
| Time and date. RTC read support implemented. Missing RTC write support. | |||
|- | |- | ||
| PSP | | PSP | ||
Line 147: | Line 159: | ||
| [[Venezia]] | | [[Venezia]] | ||
| Toshiba MeP based | | Toshiba MeP based | ||
|- | |||
| SDBG SDIO | |||
| style="background-color:#44ff44;" | 100% | |||
| Extra | |||
| [https://github.com/Princess-of-Sleeping/PSP2Modules/tree/master/SceSDbgSdio SceSDbgSdio (Github)] | |||
| Secure Debug Storage Device Input/Output. DevKit mini-USB between CP and PC. | |||
|} | |} | ||
= Plan = | = 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 ( | 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/Bt, motion, touch, etc) so we may get them "for free". | ||
For power management, we need sleep/resume first. It would be great if we could use the dynamic clocking features to save battery but that is low priority. Battery fuel gauge is through a standard chip over I2C interface. | |||
Framebuffer might be the hardest. It 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. | |||
[[Category:Linux]] | [[Category:Linux]] | ||
[[Category:Devices]] | [[Category:Devices]] |
Latest revision as of 13:45, 8 January 2022
This page has the status for driver bringup for PS 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 PS Vita Linux bootloader |
PMU | 0% | Med | Pervasive SN99057 | Power Management Unit |
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, motion (accelerometer IC), 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 | Accelerometer IC, SPI, some ST chip | |
SDIO | 0% | High | SceSdif Host Controllers spec | eMMC, GC, Wlan/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 authentication (can be disabled and use GC2SD) |
Memory Card | 0% | Low | Memory Card libbaremetal implementation | MSIF interface, extra authentication |
GPU | 0% | Med | GPU | SGX543MP4+ |
USB | 0% | Med | EHCI | Ethernet, Audio codec, accessories |
UDC | 0% | Low | UDC SceUdcd | USB Device Controller. Connecting to host PC or USB OTG. |
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 |
SDBG SDIO | 100% | Extra | SceSDbgSdio (Github) | Secure Debug Storage Device Input/Output. DevKit mini-USB between CP and PC. |
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/Bt, motion, touch, etc) so we may get them "for free".
For power management, we need sleep/resume first. It would be great if we could use the dynamic clocking features to save battery but that is low priority. Battery fuel gauge is through a standard chip over I2C interface.
Framebuffer might be the hardest. It 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.