mbox series

[v2,0/8] qcom: initial support for the OnePlus 8T

Message ID 20240630-oneplus8-v2-0-c4a1f8da74f1@postmarketos.org (mailing list archive)
Headers show
Series qcom: initial support for the OnePlus 8T | expand

Message

Caleb Connolly June 30, 2024, 6:36 p.m. UTC
Add bindings for the SM8250 OnePlus devices, a common devicetree,
touchscreen and display drivers, and a dts for the OnePlus 8T (kebab).

The OnePlus 8 series is made up of 3 flagship smartphones from 2019,
featuring the Qualcomm X55 5G PCIe modem.

This series introduces initial support for the 8T, adding drivers for
the 1080x2400 120Hz DSC panel and the Synaptics TCM Oncell touchscreen.

The panel features a Pixelworks Iris 5 co-processor, what this exactly
does is not very well explained by their website, but as far as we're
concerned it's a chip that sits between the panel and the SoC, we talk
to it over i2c/i3c. The bootloader has some init sequence which can get
the panel working, and if we then reset the panel it becomes impossible
to get it initialized again without adding a driver for this
co-processor.

Note that we can still power down the panel regulators, as long as we
don't toggle the reset pin.

I think it is still useful to accept this panel drivers into
upstream. From a users perspective, the panel is fully functional
just by leaving the reset GPIO alone and keeping the regulator on.

The Synaptics TCM Oncell touchscreens are a new generation of Synaptics
controllers with a totally incompatible firmware compared to the older
rmi4 touchscreens. A new driver is written which currently only supports
the S3908 controller found on the OnePlus 8T. Downstream vendor drivers
suggest that the controller supports custom touch report configuration,
one can define the exact bit packing of the touch reports, however the
combination of controller and firmware available on this device does not
allow for programming in cusotm configs, so for simplicity this initial
driver uses a hardcoded bit packing to decode the touch reports.

With this series, the OnePlus 8T can boot up to GNOME shell, connect to
a wifi network and browse the web with GPU acceleration, with battery
status reporting via the BQ27541 fuel gauge IC.

The touchscreen driver included here is loosely based on a previous
attempt by Frieder Hannenheim which can be found below.

Link: https://lore.kernel.org/lkml/20240327214643.7055-1-friederhannenheim@riseup.net/

---
Changes in v2:
- Panel:
- 	Fix amb655x dt-bindings example
- 	Fully switch to *_multi helpers
- 	Fix regulator refcount handling (skip enabling regulators during
	first prepare() call since they're already powered up).
- DTS:
- 	Add BQ27541 fuel gauge ic
- 	Remove erroneous i2c-ls1 comment
- 	Add chassis-type propery
- 	Don't make panel regulators always-on (not needed)
- 	Describe pielworks iris 5 i2c chip
- Touchscreen:
- 	Fix potential IRQ race condition during probe
- 	Handle big endian hosts correctly
- 	Removed unused macros and generally clean up
- Link to v1: https://lore.kernel.org/r/20240624-oneplus8-v1-0-388eecf2dff7@postmarketos.org

---
Caleb Connolly (8):
      dt-bindings: panel: document Samsung AMB655X
      dt-bindings: input: touchscreen: document synaptics TCM oncell
      dt-bindings: arm: qcom: add OnePlus 8 series
      drm: mipi: add mipi_dsi_generic_write_multi_type()
      drm/mipi-dsi: add set column/page multi helpers
      drm/panel: add driver for samsung amb655x
      Input: touchscreen: add Synaptics TCM oncell S3908
      arm64: dts: qcom: add OnePlus 8T (kebab)

 Documentation/devicetree/bindings/arm/qcom.yaml    |   3 +
 .../bindings/display/panel/samsung,amb655x.yaml    |  63 ++
 .../input/touchscreen/syna,tcm-oncell.yaml         |  68 ++
 MAINTAINERS                                        |  14 +
 arch/arm64/boot/dts/qcom/Makefile                  |   1 +
 .../arm64/boot/dts/qcom/sm8250-oneplus-common.dtsi | 909 +++++++++++++++++++++
 arch/arm64/boot/dts/qcom/sm8250-oneplus-kebab.dts  |  36 +
 drivers/gpu/drm/drm_mipi_dsi.c                     |  40 +
 drivers/gpu/drm/panel/Kconfig                      |   9 +
 drivers/gpu/drm/panel/Makefile                     |   1 +
 drivers/gpu/drm/panel/panel-samsung-amb655x.c      | 399 +++++++++
 drivers/input/touchscreen/Kconfig                  |  11 +
 drivers/input/touchscreen/Makefile                 |   1 +
 drivers/input/touchscreen/synaptics_tcm_oncell.c   | 571 +++++++++++++
 include/drm/drm_mipi_dsi.h                         |  32 +
 15 files changed, 2158 insertions(+)
---
change-id: 20240622-oneplus8-788005cc74ae
base-commit: f76698bd9a8ca01d3581236082d786e9a6b72bb7

// Caleb (they/them)