ps2dev
typedef enum ps2_disposition (*ps2_pre_receive_handler_t)(struct ps2dev *, u8,
typedef void (*ps2_receive_handler_t)(struct ps2dev *, u8);
void ps2_init(struct ps2dev *ps2dev, struct serio *serio,
int ps2_sendbyte(struct ps2dev *ps2dev, u8 byte, unsigned int timeout);
void ps2_drain(struct ps2dev *ps2dev, size_t maxbytes, unsigned int timeout);
void ps2_begin_command(struct ps2dev *ps2dev);
void ps2_end_command(struct ps2dev *ps2dev);
int __ps2_command(struct ps2dev *ps2dev, u8 *param, unsigned int command);
int ps2_command(struct ps2dev *ps2dev, u8 *param, unsigned int command);
int ps2_sliced_command(struct ps2dev *ps2dev, u8 command);