• Enric Balletbo i Serra's avatar
    platform/chrome: cros_ec_chardev: Add a poll handler to receive MKBP events · 96a0a807
    Enric Balletbo i Serra authored
    Allow to poll on the cros_ec device to receive the MKBP events.
    
    The /dev/cros_[ec|fp|..] file operations now implements the poll
    operation. The userspace can now receive specific MKBP events by doing
    the following:
    
    - Open the /dev/cros_XX file.
    - Call the CROS_EC_DEV_IOCEVENTMASK ioctl with the bitmap of the MKBP
      events it wishes to receive as argument.
    - Poll on the file descriptor.
    - When it gets POLLIN, do a read on the file descriptor, the first
      queued event will be returned (using the struct
      ec_response_get_next_event format: one byte of event type, then
      the payload).
    
    The read() operation returns at most one event even if there are several
    queued, and it might be truncated if the buffer is smaller than the
    event (but the caller should know the maximum size of the events it is
    reading).
    
    read() used to return the EC version string, it still does it when no
    event mask or an empty event is set for backward compatibility (despite
    nobody really using this feature).
    
    This will be used, for example, by the userspace daemon to receive and
    treat the EC_MKBP_EVENT_FINGERPRINT sent by the FP MCU.
    Signed-off-by: default avatarVincent Palatin <vpalatin@chromium.org>
    Signed-off-by: default avatarEnric Balletbo i Serra <enric.balletbo@collabora.com>
    Acked-by: default avatarAndy Shevchenko <andriy.shevchenko@linux.intel.com>
    Reviewed-by: default avatarGwendal Grignou <gwendal@chromium.org>
    96a0a807
cros_ec_chardev.c 9.88 KB