ps/2 elantech: Split get_elantech_movement into 2 functions

Keep separated common code from specific v4 code leaving room
for implementing other versions on another stage.

Change-Id: I7e02a395a867c79fcf646125d41add77626d2cac
Reviewed-on: https://review.haiku-os.org/c/haiku/+/9932
Reviewed-by: waddlesplash <[email protected]>
Reviewed-by: Adrien Destugues <[email protected]>
Tested-by: Commit checker robot <[email protected]>
This commit is contained in:
Samuel Rodríguez Pérez
2026-01-02 11:01:29 +00:00
committed by Adrien Destugues
parent 5578783036
commit 82678d33d6
@@ -70,10 +70,14 @@ const char* kElantechPath[4] = {
static touchpad_specs gHardwareSpecs;
static status_t
elantech_process_packet_v4(elantech_cookie *cookie, touchpad_movement *_event,
uint8 packet[PS2_PACKET_ELANTECH]);
static status_t
get_elantech_movement(elantech_cookie *cookie, touchpad_movement *_event, bigtime_t timeout)
{
touchpad_movement event;
uint8 packet[PS2_PACKET_ELANTECH];
status_t status = acquire_sem_etc(cookie->sem, 1, B_CAN_INTERRUPT | B_RELATIVE_TIMEOUT,
@@ -92,6 +96,16 @@ get_elantech_movement(elantech_cookie *cookie, touchpad_movement *_event, bigtim
return B_ERROR;
}
return elantech_process_packet_v4(cookie, _event, packet);
}
static status_t
elantech_process_packet_v4(elantech_cookie *cookie, touchpad_movement *_event,
uint8 packet[PS2_PACKET_ELANTECH])
{
touchpad_movement event;
if (cookie->crcEnabled && (packet[3] & 0x08) != 0) {
TRACE("ELANTECH: bad crc buffer\n");
return B_ERROR;
@@ -155,7 +169,7 @@ get_elantech_movement(elantech_cookie *cookie, touchpad_movement *_event, bigtim
event.fingerWidth = cookie->fingers == 1 ? 4 :0;
*_event = event;
return status;
return B_OK;
}