Support Touchpad MCU as a special of CrOS EC devices. The current Touchpad MCU is used on Eve Chromebook and used the same protocol as other CrOS EC devices. When a MCU has touchpad support (aka EC_FEATURE_TOUCHPAD), it is instantiated as a special CrOS EC device with device name 'cros_tp'. So regardless of the probing order between the actual cros_ec and cros_tp, the userspace and other kernel drivers should not confuse them.
Unified · Split
| @@ -442,6 +442,16 @@ static int ec_device_probe(struct platform_device *pdev) · 441 unmodified lines | |||
| 442 | ec_platform->ec_name = CROS_EC_DEV_ISH_NAME; | 442 | ec_platform->ec_name = CROS_EC_DEV_ISH_NAME; |
| 443 | } | 443 | } |
| 444 | 444 | ||
| 445 | /* Check whether this is actually a Touchpad MCU rather than an EC */ | ||
| 446 | if (cros_ec_check_features(ec, EC_FEATURE_TOUCHPAD)) { | ||
| 447 | dev_info(dev, "CrOS Touchpad MCU detected.\n"); | ||
| 448 | /* | ||
| 449 | * Help userspace differentiating ECs from TP MCU, | ||
| 450 | * regardless of the probing order. | ||
| 451 | */ | ||
| 452 | ec_platform->ec_name = CROS_EC_DEV_TP_NAME; | ||
| 453 | } | ||
| 454 | |||
| 445 | /* | 455 | /* |
| 446 | * Add the class device | 456 | * Add the class device |
| 447 | * Link to the character device for creating the /dev entry | 457 | * Link to the character device for creating the /dev entry |
| @@ -25,6 +25,7 @@ · 24 unmodified lines | |||
| 25 | #define CROS_EC_DEV_NAME "cros_ec" | 25 | #define CROS_EC_DEV_NAME "cros_ec" |
| 26 | #define CROS_EC_DEV_FP_NAME "cros_fp" | 26 | #define CROS_EC_DEV_FP_NAME "cros_fp" |
| 27 | #define CROS_EC_DEV_PD_NAME "cros_pd" | 27 | #define CROS_EC_DEV_PD_NAME "cros_pd" |
| 28 | #define CROS_EC_DEV_TP_NAME "cros_tp" | ||
| 28 | #define CROS_EC_DEV_ISH_NAME "cros_ish" | 29 | #define CROS_EC_DEV_ISH_NAME "cros_ish" |
| 29 | 30 | ||
| 30 | /* | 31 | /* |