Implement PPM for rts5453

This adds a PPM and UCSI support for the rts5453 devkit. So far, this
can only be used experimentally to verify all the parts connect. The
next step is to hook this up with the UCSI usermode kernel driver.

BUG=b:303919041

Change-Id: I3d6c2a157ac1a9c2d1d55f08d71db4e9a1d19d36
12 files changed
tree: b833d24766087dd62a3072896f30dd7c93db6cd1
  1. include/
  2. LICENSE
  3. main.c
  4. Makefile
  5. platform_usermode.c
  6. README.md
  7. rts5453.c
  8. rts5453.h
  9. smbus_usermode.c
  10. smbus_usermode.h
README.md

Usermode PPM implementation

Usermode UCSI PPM implementation for evaluation and testing usage. Try using this with the ucsi_um_test kernel driver.

Setup

For usermode implementations, we use libi2c and libgpiod to provide an smbus implementation. You will need the right libraries to build:

sudo apt-get install libi2c-dev libgpiod-dev

Architecture

┌─────────┐
│OPM      │
│kernel or│
│cli      │
└────┬────┘
     │
     │
     ▼          ┌───────────┐
 ┌────────┐     │ PD Driver │
 │        ├────►│           │
 │  PPM   │     ├───────────┤
 │        │     │           │
 └────────┘     │ I2C Driver│
                └───────────┘

The usermode ppm implementation consists of the PPM task, the PD driver and the I2C driver backing it. The OPM will either be a CLI (for locally triggering some functionality) or the ucsi_um_test kernel module.