diff --git a/libfprint/drivers/crfpmoc/crfpmoc.c b/libfprint/drivers/crfpmoc/crfpmoc.c index 92dfc6ef..a16564de 100644 --- a/libfprint/drivers/crfpmoc/crfpmoc.c +++ b/libfprint/drivers/crfpmoc/crfpmoc.c @@ -91,6 +91,30 @@ crfpmoc_strresult (int i) return crfpmoc_meanings[i]; } +static const gchar *const crfpmoc_mkbp_event_names[] = { + "KEY_MATRIX", + "HOST_EVENT", + "SENSOR_FIFO", + "BUTTON", + "SWITCH", + "FINGERPRINT", + "SYSRQ", + "HOST_EVENT64", + "CEC_EVENT", + "CEC_MESSAGE", + "DP_ALT_MODE_ENTERED", + "ONLINE_CALIBRATION", + "PCHG", +}; + +static const gchar * +crfpmoc_mkbp_event_strresult (int i) +{ + if (i < 0 || i >= G_N_ELEMENTS (crfpmoc_mkbp_event_names)) + return ""; + return crfpmoc_mkbp_event_names[i]; +} + static char * get_print_data_descriptor (FpPrint *print, gint8 template) { @@ -345,12 +369,16 @@ crfpmoc_read_bytes (gint fd, GIOCondition condition, { FpiDeviceCrfpMoc *self = FPI_DEVICE_CRFPMOC (user_data); int rv; + gint event; + gboolean has_more; struct crfpmoc_ec_response_get_next_event_v1 buffer = {0}; + fp_dbg ("crfpmoc_read_bytes: called"); if (fd != self->fd) goto one_shot_out; rv = read (fd, &buffer, sizeof (buffer)); + fp_dbg ("crfpmoc_read_bytes: read %d bytes", rv); if (rv == 0) { @@ -367,7 +395,97 @@ crfpmoc_read_bytes (gint fd, GIOCondition condition, goto one_shot_out; } - fp_dbg ("MKBP event %d data", buffer.event_type); + event = buffer.event_type & CRFPMOC_EC_MKBP_EVENT_TYPE_MASK; + has_more = buffer.event_type & CRFPMOC_EC_MKBP_HAS_MORE_EVENTS; + + fp_dbg ("MKBP event %d (%s) data, more %d", + event, crfpmoc_mkbp_event_strresult (event), has_more); + switch (buffer.event_type) + { + case CRFPMOC_EC_MKBP_EVENT_FINGERPRINT: + fp_dbg ("crfpmoc_read_bytes: fingerprint 0x%08x", buffer.data.fp_events); + if (buffer.data.fp_events & CRFPMOC_EC_MKBP_FP_ENROLL) + { + guint error = CRFPMOC_EC_MKBP_FP_ERRCODE (buffer.data.fp_events); + const gchar *reason = NULL; + + fp_dbg (" Enroll progress %d", CRFPMOC_EC_MKBP_FP_ENROLL_PROGRESS (buffer.data.fp_events)); + switch (error) + { + case CRFPMOC_EC_MKBP_FP_ERR_ENROLL_OK: + reason = "OK"; + break; + + case CRFPMOC_EC_MKBP_FP_ERR_ENROLL_LOW_QUALITY: + reason = "LOW QUALITY"; + break; + + case CRFPMOC_EC_MKBP_FP_ERR_ENROLL_IMMOBILE: + break; + + case CRFPMOC_EC_MKBP_FP_ERR_ENROLL_LOW_COVERAGE: + break; + + case CRFPMOC_EC_MKBP_FP_ERR_ENROLL_INTERNAL: + break; + } + fp_dbg (" status: %d (%s)", error, reason ? reason : ""); + } + if (buffer.data.fp_events & CRFPMOC_EC_MKBP_FP_MATCH) + { + guint error = CRFPMOC_EC_MKBP_FP_ERRCODE (buffer.data.fp_events); + guint index = CRFPMOC_EC_MKBP_FP_MATCH_IDX (buffer.data.fp_events); + const gchar *reason = NULL; + + fp_dbg (" Match index %d, ok %s", index, error & 1 ? "yes" : "no"); + switch (error) + { + case CRFPMOC_EC_MKBP_FP_ERR_MATCH_NO: + reason = "NO"; + break; + + case CRFPMOC_EC_MKBP_FP_ERR_MATCH_NO_INTERNAL: + reason = "INTERNAL"; + break; + + case CRFPMOC_EC_MKBP_FP_ERR_MATCH_NO_TEMPLATES: + reason = "TEMPLATES"; + break; + + case CRFPMOC_EC_MKBP_FP_ERR_MATCH_NO_AUTH_FAIL: + reason = "AUTH FAIL"; + break; + + case CRFPMOC_EC_MKBP_FP_ERR_MATCH_NO_LOW_QUALITY: + reason = "LOW QUALITY"; + break; + + case CRFPMOC_EC_MKBP_FP_ERR_MATCH_NO_LOW_COVERAGE: + reason = "LOW COVERAGE"; + break; + + case CRFPMOC_EC_MKBP_FP_ERR_MATCH_YES: + reason = "YES"; + break; + + case CRFPMOC_EC_MKBP_FP_ERR_MATCH_YES_UPDATED: + reason = "UPDATED"; + break; + + case CRFPMOC_EC_MKBP_FP_ERR_MATCH_YES_UPDATE_FAILED: + reason = "UPDATE FAILED"; + break; + } + fp_dbg (" status: %d (%s)", error, reason ? reason : ""); + } + if (buffer.data.fp_events & CRFPMOC_EC_MKBP_FP_FINGER_DOWN) + fp_dbg (" Finger down"); + if (buffer.data.fp_events & CRFPMOC_EC_MKBP_FP_FINGER_UP) + fp_dbg (" Finger up"); + if (buffer.data.fp_events & CRFPMOC_EC_MKBP_FP_IMAGE_READY) + fp_dbg (" Image ready"); + break; + } fpi_ssm_next_state (self->task_ssm); one_shot_out: @@ -398,6 +516,7 @@ crfpmoc_ec_pollevent (FpiDeviceCrfpMoc *self, unsigned long mask) } self->poll_source = g_unix_fd_add (self->fd, G_IO_IN, crfpmoc_read_bytes, self); + fp_dbg ("crfpmoc_ec_pollevent: created poll source %d", self->poll_source); } static gboolean @@ -540,6 +659,8 @@ crfpmoc_cmd_fp_info (FpiDeviceCrfpMoc *self, GError **error) { struct crfpmoc_ec_response_fp_info r; + gchar vendor[5]; + const gchar *model = NULL; gboolean rv; rv = crfpmoc_ec_command (self, CRFPMOC_EC_CMD_FP_INFO, 1, NULL, 0, &r, @@ -547,8 +668,31 @@ crfpmoc_cmd_fp_info (FpiDeviceCrfpMoc *self, if (rv != EC_RES_SUCCESS) return FALSE; - fp_dbg ("Fingerprint sensor: vendor %x product %x model %x version %x", - r.vendor_id, r.product_id, r.model_id, r.version); + vendor[0] = r.vendor_id; + vendor[1] = r.vendor_id >> 8; + vendor[2] = r.vendor_id >> 16; + vendor[3] = r.vendor_id >> 24; + vendor[4] = '\0'; + + if (strcmp (vendor, "FPC ") == 0) + { + switch ((r.model_id >> 4) & 0xfff) + { + case 0x021: + model = "FPC1025"; + break; + + case 0x011: + model = "FPC1035"; + break; + + case 0x140: + model = "FPC1145"; + break; + } + } + fp_dbg ("Fingerprint sensor: vendor %s product %x model %x (%s) version %x", + vendor, r.product_id, r.model_id, model ? model : "", r.version); fp_dbg ("Image: size %dx%d %d bpp", r.width, r.height, r.bpp); fp_dbg ("Templates: version %d size %d count %d/%d dirty bitmap %x", r.template_version, r.template_size, r.template_valid, r.template_max, @@ -937,7 +1081,11 @@ crfpmoc_cancel (FpDevice *device) /* Cancel any poll source */ if (self->poll_source) - g_source_remove (self->poll_source); + { + fp_dbg ("crfpmoc_cancel: remove poll source %d", self->poll_source); + g_source_remove (self->poll_source); + self->poll_source = 0; + } /* Cancel the running state machine, if any */ if (self->task_ssm != NULL) @@ -1001,8 +1149,8 @@ handle_enroll_sensor_enroll (FpiSsm *ssm, FpiDeviceCrfpMoc *self) } static void -handle_enroll_wait_finger (FpDevice *device, - FpiDeviceCrfpMoc *self) +handle_enroll_wait_enroll_complete (FpDevice *device, + FpiDeviceCrfpMoc *self) { fpi_device_report_finger_status (device, FP_FINGER_STATUS_NEEDED); crfpmoc_cmd_wait_event_fingerprint (self); @@ -1028,7 +1176,7 @@ handle_enroll_sensor_check (FpiSsm *ssm, FpDevice *device, { if (mode & CRFPMOC_FP_MODE_ENROLL_IMAGE) { - fpi_ssm_jump_to_state (ssm, ENROLL_WAIT_FINGER); + fpi_ssm_jump_to_state (ssm, ENROLL_WAIT_ENROLL_COMPLETE); } else { @@ -1133,8 +1281,8 @@ crfpmoc_enroll_run_state (FpiSsm *ssm, FpDevice *device) handle_enroll_sensor_enroll (ssm, self); break; - case ENROLL_WAIT_FINGER: - handle_enroll_wait_finger (device, self); + case ENROLL_WAIT_ENROLL_COMPLETE: + handle_enroll_wait_enroll_complete (device, self); break; case ENROLL_SENSOR_CHECK: @@ -1287,10 +1435,9 @@ handle_verify_sensor_match (FpiSsm *ssm, FpiDeviceCrfpMoc *self) fpi_ssm_next_state (ssm); } -#ifndef HACK_FINGER static void -handle_verify_wait_finger (FpDevice *device, - FpiDeviceCrfpMoc *self) +handle_verify_wait_match_complete (FpDevice *device, + FpiDeviceCrfpMoc *self) { fpi_device_report_finger_status (device, FP_FINGER_STATUS_NEEDED); crfpmoc_cmd_wait_event_fingerprint (self); @@ -1313,7 +1460,7 @@ handle_verify_sensor_check (FpiSsm *ssm, FpDevice *device, { if (mode & CRFPMOC_FP_MODE_MATCH) { - fpi_ssm_jump_to_state (ssm, VERIFY_WAIT_FINGER); + fpi_ssm_jump_to_state (ssm, VERIFY_WAIT_MATCH_COMPLETE); } else if (mode == 0) { @@ -1329,7 +1476,6 @@ handle_verify_sensor_check (FpiSsm *ssm, FpDevice *device, } } } -#endif static void handle_verify_check (FpiSsm *ssm, FpDevice *device, @@ -1422,46 +1568,23 @@ crfpmoc_verify_run_state (FpiSsm *ssm, FpDevice *device) { FpiDeviceCrfpMoc *self = FPI_DEVICE_CRFPMOC (device); -#ifdef HACK_FINGER - guint32 mode; - GError * error = NULL; -#endif - switch (fpi_ssm_get_cur_state (ssm)) { case VERIFY_UPLOAD_TEMPLATE: handle_verify_upload_template (ssm, device, self); break; -#ifdef HACK_FINGER - case VERIFY_FINGER_DOWN: - if (!crfpmoc_cmd_fp_mode (self, CRFPMOC_FP_MODE_FINGER_DOWN, &mode, &error)) - fpi_ssm_mark_failed (ssm, error); - fpi_ssm_next_state (ssm); - break; - - case VERIFY_FINGER_DOWN_WAIT: - crfpmoc_cmd_wait_for_it (ssm, device); - break; -#endif - case VERIFY_SENSOR_MATCH: handle_verify_sensor_match (ssm, self); break; - case VERIFY_SENSOR_MATCH_WAIT: - crfpmoc_cmd_wait_for_it (ssm, device); - break; - -#ifndef HACK_FINGER - case VERIFY_WAIT_FINGER: - handle_verify_wait_finger (device, self); + case VERIFY_WAIT_MATCH_COMPLETE: + handle_verify_wait_match_complete (device, self); break; case VERIFY_SENSOR_CHECK: handle_verify_sensor_check (ssm, device, self); break; -#endif case VERIFY_CHECK: handle_verify_check (ssm, device, self); diff --git a/libfprint/drivers/crfpmoc/crfpmoc.h b/libfprint/drivers/crfpmoc/crfpmoc.h index 09a07bed..24711e88 100644 --- a/libfprint/drivers/crfpmoc/crfpmoc.h +++ b/libfprint/drivers/crfpmoc/crfpmoc.h @@ -33,8 +33,6 @@ G_DECLARE_FINAL_TYPE (FpiDeviceCrfpMoc, fpi_device_crfpmoc, FPI, DEVICE_CRFPMOC, FpDevice) -#define HACK_FINGER - #ifndef BIT #define BIT(nr) (1UL << (nr)) #endif @@ -77,7 +75,7 @@ G_DECLARE_FINAL_TYPE (FpiDeviceCrfpMoc, fpi_device_crfpmoc, FPI, DEVICE_CRFPMOC, #define CRFPMOC_FPSTATS_MATCHING_INV BIT (1) /* New Fingerprint sensor event, the event data is fp_events bitmap. */ -#define CRFPMOC_EC_MKBP_EVENT_FINGERPRINT 5 +//#define CRFPMOC_EC_MKBP_EVENT_FINGERPRINT 5 /* Version of the format of the encrypted templates. */ #define CRFPMOC_FP_TEMPLATE_FORMAT_VERSION 4 @@ -261,6 +259,101 @@ struct crfpmoc_ec_response_motion_sense_fifo_info guint16 lost[0]; }; +#define CRFPMOC_EC_MKBP_HAS_MORE_EVENTS_SHIFT 7 + +/* + * We use the most significant bit of the event type to indicate to the host + * that the EC has more MKBP events available to provide. + */ +#define CRFPMOC_EC_MKBP_HAS_MORE_EVENTS BIT (CRFPMOC_EC_MKBP_HAS_MORE_EVENTS_SHIFT) + +/* The mask to apply to get the raw event type */ +#define CRFPMOC_EC_MKBP_EVENT_TYPE_MASK (BIT (CRFPMOC_EC_MKBP_HAS_MORE_EVENTS_SHIFT) - 1) + +enum ec_mkbp_event { + /* Keyboard matrix changed. The event data is the new matrix state. */ + CRFPMOC_EC_MKBP_EVENT_KEY_MATRIX = 0, + + /* New host event. The event data is 4 bytes of host event flags. */ + CRFPMOC_EC_MKBP_EVENT_HOST_EVENT = 1, + + /* New Sensor FIFO data. The event data is fifo_info structure. */ + CRFPMOC_EC_MKBP_EVENT_SENSOR_FIFO = 2, + + /* The state of the non-matrixed buttons have changed. */ + CRFPMOC_EC_MKBP_EVENT_BUTTON = 3, + + /* The state of the switches have changed. */ + CRFPMOC_EC_MKBP_EVENT_SWITCH = 4, + + /* New Fingerprint sensor event, the event data is fp_events bitmap. */ + CRFPMOC_EC_MKBP_EVENT_FINGERPRINT = 5, + + /* + * Sysrq event: send emulated sysrq. The event data is sysrq, + * corresponding to the key to be pressed. + */ + CRFPMOC_EC_MKBP_EVENT_SYSRQ = 6, + + /* + * New 64-bit host event. + * The event data is 8 bytes of host event flags. + */ + CRFPMOC_EC_MKBP_EVENT_HOST_EVENT64 = 7, + + /* Notify the AP that something happened on CEC */ + CRFPMOC_EC_MKBP_EVENT_CEC_EVENT = 8, + + /* Send an incoming CEC message to the AP */ + CRFPMOC_EC_MKBP_EVENT_CEC_MESSAGE = 9, + + /* We have entered DisplayPort Alternate Mode on a Type-C port. */ + CRFPMOC_EC_MKBP_EVENT_DP_ALT_MODE_ENTERED = 10, + + /* New online calibration values are available. */ + CRFPMOC_EC_MKBP_EVENT_ONLINE_CALIBRATION = 11, + + /* Peripheral device charger event */ + CRFPMOC_EC_MKBP_EVENT_PCHG = 12, + + /* Number of MKBP events */ + CRFPMOC_EC_MKBP_EVENT_COUNT, +}; + +/* Fingerprint events in 'fp_events' for CRFPMOC_EC_MKBP_EVENT_FINGERPRINT */ +#define CRFPMOC_EC_MKBP_FP_RAW_EVENT(fp_events) ((fp_events) & 0x00FFFFFF) +#define CRFPMOC_EC_MKBP_FP_ERRCODE(fp_events) ((fp_events) & 0x0000000F) +#define CRFPMOC_EC_MKBP_FP_ENROLL_PROGRESS_OFFSET 4 +#define CRFPMOC_EC_MKBP_FP_ENROLL_PROGRESS(fpe) \ + (((fpe) & 0x00000FF0) >> CRFPMOC_EC_MKBP_FP_ENROLL_PROGRESS_OFFSET) +#define CRFPMOC_EC_MKBP_FP_MATCH_IDX_OFFSET 12 +#define CRFPMOC_EC_MKBP_FP_MATCH_IDX_MASK 0x0000F000 +#define CRFPMOC_EC_MKBP_FP_MATCH_IDX(fpe) \ + (((fpe)&CRFPMOC_EC_MKBP_FP_MATCH_IDX_MASK) >> CRFPMOC_EC_MKBP_FP_MATCH_IDX_OFFSET) +#define CRFPMOC_EC_MKBP_FP_ENROLL BIT (27) +#define CRFPMOC_EC_MKBP_FP_MATCH BIT (28) +#define CRFPMOC_EC_MKBP_FP_FINGER_DOWN BIT (29) +#define CRFPMOC_EC_MKBP_FP_FINGER_UP BIT (30) +#define CRFPMOC_EC_MKBP_FP_IMAGE_READY BIT (31) +/* code given by CRFPMOC_EC_MKBP_FP_ERRCODE() when CRFPMOC_EC_MKBP_FP_ENROLL is set */ +#define CRFPMOC_EC_MKBP_FP_ERR_ENROLL_OK 0 +#define CRFPMOC_EC_MKBP_FP_ERR_ENROLL_LOW_QUALITY 1 +#define CRFPMOC_EC_MKBP_FP_ERR_ENROLL_IMMOBILE 2 +#define CRFPMOC_EC_MKBP_FP_ERR_ENROLL_LOW_COVERAGE 3 +#define CRFPMOC_EC_MKBP_FP_ERR_ENROLL_INTERNAL 5 +/* Can be used to detect if image was usable for enrollment or not. */ +#define CRFPMOC_EC_MKBP_FP_ERR_ENROLL_PROBLEM_MASK 1 +/* code given by CRFPMOC_EC_MKBP_FP_ERRCODE() when CRFPMOC_EC_MKBP_FP_MATCH is set */ +#define CRFPMOC_EC_MKBP_FP_ERR_MATCH_NO 0 +#define CRFPMOC_EC_MKBP_FP_ERR_MATCH_NO_INTERNAL 6 +#define CRFPMOC_EC_MKBP_FP_ERR_MATCH_NO_TEMPLATES 7 +#define CRFPMOC_EC_MKBP_FP_ERR_MATCH_NO_AUTH_FAIL 8 +#define CRFPMOC_EC_MKBP_FP_ERR_MATCH_NO_LOW_QUALITY 2 +#define CRFPMOC_EC_MKBP_FP_ERR_MATCH_NO_LOW_COVERAGE 4 +#define CRFPMOC_EC_MKBP_FP_ERR_MATCH_YES 1 +#define CRFPMOC_EC_MKBP_FP_ERR_MATCH_YES_UPDATED 3 +#define CRFPMOC_EC_MKBP_FP_ERR_MATCH_YES_UPDATE_FAILED 5 + union __attribute__((packed)) crfpmoc_ec_response_get_next_data_v1 { guint8 key_matrix[16]; @@ -357,7 +450,7 @@ enum crfpmoc_ec_status { typedef enum { ENROLL_SENSOR_ENROLL, - ENROLL_WAIT_FINGER, + ENROLL_WAIT_ENROLL_COMPLETE, ENROLL_SENSOR_CHECK, ENROLL_COMMIT, ENROLL_STATES, @@ -365,13 +458,8 @@ typedef enum { typedef enum { VERIFY_UPLOAD_TEMPLATE, -#ifdef HACK_FINGER - VERIFY_FINGER_DOWN, - VERIFY_FINGER_DOWN_WAIT, -#endif VERIFY_SENSOR_MATCH, - VERIFY_SENSOR_MATCH_WAIT, - VERIFY_WAIT_FINGER, + VERIFY_WAIT_MATCH_COMPLETE, VERIFY_SENSOR_CHECK, VERIFY_CHECK, VERIFY_STATES, diff --git a/tests/crfpmoc/custom.ioctl b/tests/crfpmoc/custom.ioctl index be89a784..15a758de 100644 --- a/tests/crfpmoc/custom.ioctl +++ b/tests/crfpmoc/custom.ioctl @@ -74,18 +74,10 @@ CROS_EC_DEV_IOCXCMD_V2 0 0000000005040000F80000000000000000000000 CROS_EC_DEV_IOCXCMD_V2 0 0000000005040000F80000000000000000000000 CROS_EC_DEV_IOCXCMD_V2 0 0000000005040000F80000000000000000000000 CROS_EC_DEV_IOCXCMD_V2 0 00000000050400007C0000000000000000000000 -CROS_EC_DEV_IOCXCMD_V2 4 000000000204000004000000040000000000000002000000 -CROS_EC_DEV_IOCXCMD_V2 4 000000000204000004000000040000000000000002000000 -CROS_EC_DEV_IOCXCMD_V2 4 000000000204000004000000040000000000000002000000 -CROS_EC_DEV_IOCXCMD_V2 4 000000000204000004000000040000000000000000000000 -CROS_EC_DEV_IOCXCMD_V2 4 000000000204000004000000040000000000000040000000 -CROS_EC_DEV_IOCXCMD_V2 4 000000000204000004000000040000000000000040000000 -CROS_EC_DEV_IOCXCMD_V2 4 000000000204000004000000040000000000000040000000 -CROS_EC_DEV_IOCXCMD_V2 4 000000000204000004000000040000000000000040000000 CROS_EC_DEV_IOCXCMD_V2 4 000000000204000004000000040000000000000040000000 CROS_EC_DEV_IOCXCMD_V2 4 000000000204000004000000040000000000000000000000 CROS_EC_DEV_IOCXCMD_V2 48 010000000304000000000000300000000000000046504320090000001F020000010000009466000047524559A000A0000800FF0324140000050001000100000004000000 -CROS_EC_DEV_IOCXCMD_V2 22 0000000007040000000000001600000000000000C07001006CF50200406B0400D4471CCB240000000000 +CROS_EC_DEV_IOCXCMD_V2 22 00000000070400000000000016000000000000002471010024E802005C5E04003CD54A503A0000000000 CROS_EC_DEV_IOCXCMD_V2 4 000000000204000004000000040000000000000000000000 CROS_EC_DEV_IOCXCMD_V2 4 000000000204000004000000040000000000000080000000 CROS_EC_DEV_IOCXCMD_V2 4 000000000204000004000000040000000000000080000000 @@ -117,18 +109,10 @@ CROS_EC_DEV_IOCXCMD_V2 0 0000000005040000F80000000000000000000000 CROS_EC_DEV_IOCXCMD_V2 0 0000000005040000F80000000000000000000000 CROS_EC_DEV_IOCXCMD_V2 0 0000000005040000F80000000000000000000000 CROS_EC_DEV_IOCXCMD_V2 0 00000000050400007C0000000000000000000000 -CROS_EC_DEV_IOCXCMD_V2 4 000000000204000004000000040000000000000002000000 -CROS_EC_DEV_IOCXCMD_V2 4 000000000204000004000000040000000000000002000000 -CROS_EC_DEV_IOCXCMD_V2 4 000000000204000004000000040000000000000002000000 -CROS_EC_DEV_IOCXCMD_V2 4 000000000204000004000000040000000000000000000000 -CROS_EC_DEV_IOCXCMD_V2 4 000000000204000004000000040000000000000040000000 -CROS_EC_DEV_IOCXCMD_V2 4 000000000204000004000000040000000000000040000000 -CROS_EC_DEV_IOCXCMD_V2 4 000000000204000004000000040000000000000040000000 -CROS_EC_DEV_IOCXCMD_V2 4 000000000204000004000000040000000000000040000000 CROS_EC_DEV_IOCXCMD_V2 4 000000000204000004000000040000000000000040000000 CROS_EC_DEV_IOCXCMD_V2 4 000000000204000004000000040000000000000000000000 CROS_EC_DEV_IOCXCMD_V2 48 010000000304000000000000300000000000000046504320090000001F020000010000009466000047524559A000A0000800FF0324140000050001000100000004000000 -CROS_EC_DEV_IOCXCMD_V2 22 0000000007040000000000001600000000000000C0700100A4F40200786A0400A8AE2CCB240000000000 +CROS_EC_DEV_IOCXCMD_V2 22 000000000704000000000000160000000000000024710100E0EA020018610400342F58503A0000000000 CROS_EC_DEV_IOCXCMD_V2 4 000000000204000004000000040000000000000000000000 CROS_EC_DEV_IOCXCMD_V2 4 000000000204000004000000040000000000000080000000 CROS_EC_DEV_IOCXCMD_V2 4 000000000204000004000000040000000000000080000000 diff --git a/tests/crfpmoc/device b/tests/crfpmoc/device index e00f1928..c12ab82a 100644 --- a/tests/crfpmoc/device +++ b/tests/crfpmoc/device @@ -52,39 +52,39 @@ A: power/runtime_usage=0\n A: power/wakeup=enabled\n A: power/wakeup_abort_count=0\n A: power/wakeup_active=0\n -A: power/wakeup_active_count=785\n +A: power/wakeup_active_count=856\n A: power/wakeup_count=0\n A: power/wakeup_expire_count=0\n -A: power/wakeup_last_time_ms=153464742\n +A: power/wakeup_last_time_ms=247138441\n A: power/wakeup_max_time_ms=0\n A: power/wakeup_total_time_ms=0\n -A: statistics/bytes=4561436\n -A: statistics/bytes_rx=4561436\n -A: statistics/bytes_tx=962795\n +A: statistics/bytes=5478464\n +A: statistics/bytes_rx=5478464\n +A: statistics/bytes_tx=1240159\n A: statistics/errors=0\n -A: statistics/messages=152584\n +A: statistics/messages=194027\n A: statistics/spi_async=0\n -A: statistics/spi_sync=152584\n -A: statistics/spi_sync_immediate=152584\n +A: statistics/spi_sync=194027\n +A: statistics/spi_sync_immediate=194027\n A: statistics/timedout=0\n -A: statistics/transfer_bytes_histo_0-1=28757\n +A: statistics/transfer_bytes_histo_0-1=39778\n A: statistics/transfer_bytes_histo_1024-2047=0\n -A: statistics/transfer_bytes_histo_128-255=585\n -A: statistics/transfer_bytes_histo_16-31=1443\n +A: statistics/transfer_bytes_histo_128-255=718\n +A: statistics/transfer_bytes_histo_16-31=1581\n A: statistics/transfer_bytes_histo_16384-32767=0\n -A: statistics/transfer_bytes_histo_2-3=380\n +A: statistics/transfer_bytes_histo_2-3=422\n A: statistics/transfer_bytes_histo_2048-4095=0\n -A: statistics/transfer_bytes_histo_256-511=3192\n -A: statistics/transfer_bytes_histo_32-63=89947\n +A: statistics/transfer_bytes_histo_256-511=3907\n +A: statistics/transfer_bytes_histo_32-63=109157\n A: statistics/transfer_bytes_histo_32768-65535=0\n -A: statistics/transfer_bytes_histo_4-7=1494\n +A: statistics/transfer_bytes_histo_4-7=1567\n A: statistics/transfer_bytes_histo_4096-8191=0\n A: statistics/transfer_bytes_histo_512-1023=711\n -A: statistics/transfer_bytes_histo_64-127=686\n +A: statistics/transfer_bytes_histo_64-127=724\n A: statistics/transfer_bytes_histo_65536+=0\n -A: statistics/transfer_bytes_histo_8-15=25389\n +A: statistics/transfer_bytes_histo_8-15=35462\n A: statistics/transfer_bytes_histo_8192-16383=0\n -A: statistics/transfers=152584\n +A: statistics/transfers=194027\n A: statistics/transfers_split_maxsize=0\n P: /devices/pci0000:00/0000:00:1e.3/pxa2xx-spi.8/spi_master/spi1 @@ -100,33 +100,33 @@ A: power/runtime_status=unsupported\n A: power/runtime_suspended_time=0\n A: power/runtime_usage=0\n L: software_node=../../../../../../kernel/software_nodes/node3 -A: statistics/bytes=4561436\n -A: statistics/bytes_rx=4561436\n -A: statistics/bytes_tx=962795\n +A: statistics/bytes=5478464\n +A: statistics/bytes_rx=5478464\n +A: statistics/bytes_tx=1240159\n A: statistics/errors=0\n -A: statistics/messages=152584\n +A: statistics/messages=194027\n A: statistics/spi_async=0\n -A: statistics/spi_sync=152584\n -A: statistics/spi_sync_immediate=152584\n +A: statistics/spi_sync=194027\n +A: statistics/spi_sync_immediate=194027\n A: statistics/timedout=0\n -A: statistics/transfer_bytes_histo_0-1=28757\n +A: statistics/transfer_bytes_histo_0-1=39778\n A: statistics/transfer_bytes_histo_1024-2047=0\n -A: statistics/transfer_bytes_histo_128-255=585\n -A: statistics/transfer_bytes_histo_16-31=1443\n +A: statistics/transfer_bytes_histo_128-255=718\n +A: statistics/transfer_bytes_histo_16-31=1581\n A: statistics/transfer_bytes_histo_16384-32767=0\n -A: statistics/transfer_bytes_histo_2-3=380\n +A: statistics/transfer_bytes_histo_2-3=422\n A: statistics/transfer_bytes_histo_2048-4095=0\n -A: statistics/transfer_bytes_histo_256-511=3192\n -A: statistics/transfer_bytes_histo_32-63=89947\n +A: statistics/transfer_bytes_histo_256-511=3907\n +A: statistics/transfer_bytes_histo_32-63=109157\n A: statistics/transfer_bytes_histo_32768-65535=0\n -A: statistics/transfer_bytes_histo_4-7=1494\n +A: statistics/transfer_bytes_histo_4-7=1567\n A: statistics/transfer_bytes_histo_4096-8191=0\n A: statistics/transfer_bytes_histo_512-1023=711\n -A: statistics/transfer_bytes_histo_64-127=686\n +A: statistics/transfer_bytes_histo_64-127=724\n A: statistics/transfer_bytes_histo_65536+=0\n -A: statistics/transfer_bytes_histo_8-15=25389\n +A: statistics/transfer_bytes_histo_8-15=35462\n A: statistics/transfer_bytes_histo_8192-16383=0\n -A: statistics/transfers=152584\n +A: statistics/transfers=194027\n A: statistics/transfers_split_maxsize=0\n A: waiting_for_supplier=0\n @@ -145,10 +145,10 @@ A: power/async=disabled\n A: power/autosuspend_delay_ms=50\n A: power/control=auto\n A: power/runtime_active_kids=0\n -A: power/runtime_active_time=1159131\n +A: power/runtime_active_time=1738748\n A: power/runtime_enabled=enabled\n A: power/runtime_status=suspended\n -A: power/runtime_suspended_time=153162174\n +A: power/runtime_suspended_time=245399566\n A: power/runtime_usage=0\n L: software_node=../../../../kernel/software_nodes/node3 @@ -191,10 +191,10 @@ A: power/async=enabled\n A: power/control=auto\n A: power/pm_qos_latency_tolerance_us=auto\n A: power/runtime_active_kids=0\n -A: power/runtime_active_time=1613046\n +A: power/runtime_active_time=2432781\n A: power/runtime_enabled=enabled\n A: power/runtime_status=suspended\n -A: power/runtime_suspended_time=152711240\n +A: power/runtime_suspended_time=244708518\n A: power/runtime_usage=0\n A: power_state=D3hot\n A: resource=0x000000007ff55000 0x000000007ff55fff 0x0000000000140204\n0x0000000000000000 0x0000000000000000 0x0000000000000000\n0x0000000000000000 0x0000000000000000 0x0000000000000000\n0x0000000000000000 0x0000000000000000 0x0000000000000000\n0x0000000000000000 0x0000000000000000 0x0000000000000000\n0x0000000000000000 0x0000000000000000 0x0000000000000000\n0x0000000000000000 0x0000000000000000 0x0000000000000000\n0x0000000000000000 0x0000000000000000 0x0000000000000000\n0x0000000000000000 0x0000000000000000 0x0000000000000000\n0x0000000000000000 0x0000000000000000 0x0000000000000000\n0x0000000000000000 0x0000000000000000 0x0000000000000000\n0x0000000000000000 0x0000000000000000 0x0000000000000000\n0x0000000000000000 0x0000000000000000 0x0000000000000000\n diff --git a/tests/meson.build b/tests/meson.build index 2b089bb5..2eb3bee2 100644 --- a/tests/meson.build +++ b/tests/meson.build @@ -56,8 +56,8 @@ drivers_tests = [ 'egismoc-0586', 'egismoc-0587', 'fpcmoc', - 'realtek', - 'realtek-5816', + 'realtek', + 'realtek-5816', 'focaltech_moc', 'crfpmoc', ]