From 86f073a8eaaa58648ca9168cc9ca318e76041c49 Mon Sep 17 00:00:00 2001 From: Dasky <32983009+daskygit@users.noreply.github.com> Date: Mon, 4 Dec 2023 00:14:28 +0000 Subject: [PATCH] Add basic presence check for cirque trackpad. (#22546) --- docs/feature_pointing_device.md | 13 +++++++------ drivers/sensors/cirque_pinnacle.c | 11 +++++++++++ 2 files changed, 18 insertions(+), 6 deletions(-) diff --git a/docs/feature_pointing_device.md b/docs/feature_pointing_device.md index fad9056e10f..6fddf1fddab 100644 --- a/docs/feature_pointing_device.md +++ b/docs/feature_pointing_device.md @@ -177,12 +177,13 @@ This supports the Cirque Pinnacle 1CA027 Touch Controller, which is used in the #### Common settings -| Setting | Description | Default | -| -------------------------------- | ---------------------------------------------------------- | ------------------------------------------- | -| `CIRQUE_PINNACLE_DIAMETER_MM` | (Optional) Diameter of the trackpad sensor in millimeters. | `40` | -| `CIRQUE_PINNACLE_ATTENUATION` | (Optional) Sets the attenuation of the sensor data. | `EXTREG__TRACK_ADCCONFIG__ADC_ATTENUATE_4X` | -| `CIRQUE_PINNACLE_CURVED_OVERLAY` | (Optional) Applies settings tuned for curved overlay. | _not defined_ | -| `CIRQUE_PINNACLE_POSITION_MODE` | (Optional) Mode of operation. | _not defined_ | +| Setting | Description | Default | +| ------------------------------------ | ---------------------------------------------------------- | ------------------------------------------- | +| `CIRQUE_PINNACLE_DIAMETER_MM` | (Optional) Diameter of the trackpad sensor in millimeters. | `40` | +| `CIRQUE_PINNACLE_ATTENUATION` | (Optional) Sets the attenuation of the sensor data. | `EXTREG__TRACK_ADCCONFIG__ADC_ATTENUATE_4X` | +| `CIRQUE_PINNACLE_CURVED_OVERLAY` | (Optional) Applies settings tuned for curved overlay. | _not defined_ | +| `CIRQUE_PINNACLE_POSITION_MODE` | (Optional) Mode of operation. | _not defined_ | +| `CIRQUE_PINNACLE_SKIP_SENSOR_CHECK` | (Optional) Skips sensor presence check | _not defined_ | **`CIRQUE_PINNACLE_ATTENUATION`** is a measure of how much data is suppressed in regards to sensitivity. The higher the attenuation, the less sensitive the touchpad will be. diff --git a/drivers/sensors/cirque_pinnacle.c b/drivers/sensors/cirque_pinnacle.c index 3131805c200..b5c1abdebce 100644 --- a/drivers/sensors/cirque_pinnacle.c +++ b/drivers/sensors/cirque_pinnacle.c @@ -216,6 +216,13 @@ void cirque_pinnacle_cursor_smoothing(bool enable) { RAP_Write(HOSTREG__FEEDCONFIG3, feedconfig3); } +// Check sensor is connected +bool cirque_pinnacle_connected(void) { + uint8_t zidle = 0; + RAP_ReadBytes(HOSTREG__ZIDLE, &zidle, 1); + return zidle == HOSTREG__ZIDLE_DEFVAL; +} + /* Pinnacle-based TM040040/TM035035/TM023023 Functions */ void cirque_pinnacle_init(void) { #if defined(POINTING_DEVICE_DRIVER_cirque_pinnacle_spi) @@ -274,6 +281,10 @@ void cirque_pinnacle_init(void) { } cirque_pinnacle_enable_feed(true); + +#ifndef CIRQUE_PINNACLE_SKIP_SENSOR_CHECK + touchpad_init = cirque_pinnacle_connected(); +#endif } pinnacle_data_t cirque_pinnacle_read_data(void) {