Hyperpixel round touch

I just got my Hyperpixel round and the display is working flawlessly. However, touch support is only provided in Python, which is not my language/environment of choice. Please remember some people are not using Python. There is no documentation on the touch sensor, no link to a datasheet, I’m rather disappointed.

I suspect it is an ektf2132, but I would like some confirmation and maybe a datasheet so I could write a driver and dts for it.

1 Like

@hel might be able to help you out and get you some more info.

1 Like

Hyperpixel Round’s touch IC is a CST830 and it works over I2C - you can what see what pins it uses from the Python driver.

Hope that helps!

1 Like

What would help is a datasheet. I know what the python driver does and meanwhile also have found out that it’s not an ektf2132, just very similar. The goal for me is to write a kernel driver for the chip and there are things (like querying the size) that need to be done to make a driver be acceptable to the kernel devs. Without a datasheet, that is difficult to do. Googling CST830 had no results. That was the mark on the chip, so it’s what I tried first. Then I figured, since that normally brings up a datasheet, that marking and chip type may not be in agreement (I’ve seen chips that were marked with things other than their model name before).
For me, there is no point in a display that has only a python driver because X can’t use a python driver.

1 Like

Zipped datasheet attached.

This is all I had to work from. From prior experience running the grinder of creating/upstreaming a Linux kernel driver is beyond me.

Looks like it has some relationship to the CST816 - pinetime-hypnos/cst816s.h at master · endian-albin/pinetime-hypnos · GitHub but they diverge pretty quickly.

CST836U应用说明.zip (414.5 KB)

3 Likes

Meanwhile, there is a kernel driver that has been expanded to cover that touch screen, but I’m pulling my hair over getting kernel kms support for the hyperpixel round at the same time as kernel touch. I have tried modifying the dtb to move the hyperpixel driver spi pins to bank1 pins for SPI1 or SPI2, but it seems as soon as I change the pins, I lose wifi.
Right now, I get:
kms driver, no hyperpixel-init, no touch, wifi (standard config)
kms driver, hyperpixel-init, touch, no wifi (trying to move spi)
legacy driver, hyperpixel-init, touch, wifi (legacy driver)

I understand including the display init in the driver was the price of upstreaming it, but, can there maybe be a driver that doesn’t need to access the SPI pins, to make both kms and touch work?

Hi @Melanie,

What is the upstream driver you are talking about for the CST836 that you have working? There is a CSTxxx in 6.2 ([PATCH V4 0/3] Add Hynitron cstxxx Touchscreen — Linux Input) which seems to be for the CST340 which on a quick read of the I2C registers and structs seems quite different to the CST8xx.

I am starting to look at this now, any help would be appreciated.

Hi,

I didn’t get anything working in time on my own efforts because the raspberrypi team was quicker. Bullseye comes with a driver, but the last time I tried it’s not possible to have screen and touch both handled by the kernel. However, there has been a new release since then and I’m going to test out what is possible today with it. Hopefully this will be all moot and things just start working.