Re: [PATCH 1/4] include/uapi/linux: add gxfp_ioctl.h for GXFP5130 fingerprint sensor
Greg KH <[email protected]>
| Newsgroups | org.kernel.vger.linux-acpi,org.kernel.vger.linux-gpio,org.kernel.vger.linux-kernel |
|---|---|
| Message-ID | <2026071801-headdress-gab-348e@gregkh> |
On Sat, Jul 18, 2026 at 11:14:28AM +0300, Metehan Günen wrote: > Define the userspace ABI for the Goodix GXFP5130 eSPI fingerprint sensor > driver: > > - struct gxfp_tap_hdr: header prepended to every read(2) record, carries > payload length, MP protocol type and a ktime_get_ns() timestamp. > - struct gxfp_tx_pkt_hdr: header that userspace prepends to write(2) > payloads so the driver can wrap them in the eSPI frame format. > - GXFP_IOCTL_FLUSH_RXQ: flush the kernel-side RX record queue. > > Signed-off-by: Metehan Günen <[email protected]> > --- > include/uapi/linux/gxfp_ioctl.h | 43 +++++++++++++++++++++++++++++++++ > 1 file changed, 43 insertions(+) > create mode 100644 include/uapi/linux/gxfp_ioctl.h > > diff --git a/include/uapi/linux/gxfp_ioctl.h b/include/uapi/linux/gxfp_ioctl.h > new file mode 100644 > index 000000000..c9c6c2d48 > --- /dev/null > +++ b/include/uapi/linux/gxfp_ioctl.h > @@ -0,0 +1,43 @@ > +/* SPDX-License-Identifier: GPL-2.0 */ > +#ifndef __UAPI_GXFP_IOCTL_H > +#define __UAPI_GXFP_IOCTL_H > + > +#include <linux/types.h> > +#include <linux/ioctl.h> > + > +#define GXFP_IOCTL_MAGIC 'G' > + > +/* > + * 4-byte MP header + payload must fit GXFP_TX_BUFFER_SIZE(512). > + */ > +#define GXFP_IOCTL_TX_PAYLOAD_MAX 508u > + > +/* Maximum protocol payload bytes exported via read(2) records. */ > +#define GXFP_IOCTL_TAP_PAYLOAD_MAX (128u * 1024u) > + > +/* > + * Stream tap (read/poll) record header. > + * Followed by `len` bytes of protocol payload. > + */ > +struct gxfp_tap_hdr { > + __u32 len; /* protocol payload bytes */ > + __u32 type; /* MP type */ > + __u32 _rsvd0; C variables do not start with _, this isn't rust :) And are you checking this for 0? > + __u64 ts_ns; /* ktime_get_ns() */ > + __u8 head16[16]; /* first 16 bytes of payload */ > +}; > + > +/* > + * write(2) packet header. > + * Userspace writes: [gxfp_tx_pkt_hdr][payload bytes] > + */ > +struct gxfp_tx_pkt_hdr { > + __u8 mp_flags; > + __u8 _pad0; Are you checking this for 0? > + __u16 payload_len; > + __u32 flags; No definition of what these flags are? thanks, greg k-h