CYTMA568 Linux Driver Support

Hi everyone,
I am trying to get a CYTMA568 multi-touch via I2C on Colibri-iMX6DL to work. I found the following Kernel-Patch to have the corresponding driver available: Add driver for Cypress Generation 5 touchscreen

Then I added the touch at my custom device tree as follows:

&i2c3 {
	status = "okay";

	cyttsp:	cyttsp@24 {
			compatible = "cypress,cyttsp5";
			reg = <0x24>;
			interrupt-parent = <&gpio7>;
			interrupts = <10 IRQ_TYPE_LEVEL_LOW>;
			/*reset-gpios = <&gpio3 4 GPIO_ACTIVE_LOW>;*/

			touchscreen-size-x = <800>;
			touchscreen-size-y = <480>;
			touchscreen-fuzz-x = <4>;
			touchscreen-fuzz-y = <7>;

			bootloader-key = /bits/ 8 <0x01 0x02 0x03 0x04 0x05 0x06 0x07 0x08>;
			active-distance = <8>;
			active-interval-ms = <0>;
			lowpower-interval-ms = <200>;
			touch-timeout-ms = <100>;
			status = "okay";
		};
};

I get the following errors during boot:

[    0.394465] cyttsp5 1-0024: Error on deassert int r=-22
[    0.399802] cyttsp5 1-0024: Fail initial startup r=-19

It seems there is something wrong with the configuration of “regmap” - the driver calls “regmap_bulk_read(…)”.
I guess the fsl i2c driver doesn’t support this - can you confirm this?

Is there any way to get this touch ready to work from yocto?

I2C connection seems to be correct as i2cdetect finds the cypress IC at 0x24.

  • Which carrier board do you have

  • How was that display connected to I2C?

It is a custom board. The touch is connected with i2c3 (SDA/SCL on SODIMM 194/196).
On the same bus there is an RTC M41T62. The interrupt signal is connected with GPIO7_IO10, the reset line of the touch only has a pullup.
As already mentioned, the I2C seems to work fine, as the slave responds to its address.

Please specify your Linux BSP version.

Could you doublecheck if

  • can access to touch controller registers using i2ctransfer tool?

  • REGMAP_I2C enabled at your kernel config?

uname -a shows Linux colibri-imx6 5.4.47
yocto branch is dunfell

CONFIG_REGMAP_I2C is configured (even if I didn’t know this configure option before) - as well as CONFIG_REGMAP (checked with zcat /proc/config.gz)

i2cdetect, i2cdump and i2cget work with slave address 0x24 (read all 0x00). When using a differen slave address (like 0x20), the tools respond “read failed”, with 0x24 everything works.

Is there a second value missing in device-tree for the i2c slave for property “reg”. Currently I only have

reg = <0x24>;

Maybe there is a size entry missing for the regmap working correctly - but I don’t know how many registers the driver actually has, e.g.:

reg = <0x24, 0x100>;

Please consult with Cypress about device tree properties of their driver.

Hi @mar90co,

I make @alex.tx words mine as well.

Please contact Cypress FAE support for bring-up of CYTMA568 with Linux.
I came to know that they have Linux support for it, but it requires (their) FAE contact.

Best regards,
André Curvello

Ok thanks, I will contact Cypress support

Hello,

We will soon try to use CYTMA568 with a Colibri iMX6ULL 512Mo WB IT.
We are working with BSP 5.4.

Did you solved your problem with Cypress FAE?

Thank you very much.