Logo Search packages:      
Sourcecode: linux version File versions  Download package

psmouse.h

#ifndef _PSMOUSE_H
#define _PSMOUSE_H

#define PSMOUSE_CMD_SETSCALE11      0x00e6
#define PSMOUSE_CMD_SETSCALE21      0x00e7
#define PSMOUSE_CMD_SETRES    0x10e8
#define PSMOUSE_CMD_GETINFO   0x03e9
#define PSMOUSE_CMD_SETSTREAM 0x00ea
#define PSMOUSE_CMD_SETPOLL   0x00f0
#define PSMOUSE_CMD_POLL      0x00eb      /* caller sets number of bytes to receive */
#define PSMOUSE_CMD_GETID     0x02f2
#define PSMOUSE_CMD_SETRATE   0x10f3
#define PSMOUSE_CMD_ENABLE    0x00f4
#define PSMOUSE_CMD_DISABLE   0x00f5
#define PSMOUSE_CMD_RESET_DIS 0x00f6
#define PSMOUSE_CMD_RESET_BAT 0x02ff

#define PSMOUSE_RET_BAT       0xaa
#define PSMOUSE_RET_ID        0x00
#define PSMOUSE_RET_ACK       0xfa
#define PSMOUSE_RET_NAK       0xfe

enum psmouse_state {
      PSMOUSE_IGNORE,
      PSMOUSE_INITIALIZING,
      PSMOUSE_RESYNCING,
      PSMOUSE_CMD_MODE,
      PSMOUSE_ACTIVATED,
};

/* psmouse protocol handler return codes */
typedef enum {
      PSMOUSE_BAD_DATA,
      PSMOUSE_GOOD_DATA,
      PSMOUSE_FULL_PACKET
} psmouse_ret_t;

struct psmouse {
      void *private;
      struct input_dev *dev;
      struct ps2dev ps2dev;
      struct work_struct resync_work;
      char *vendor;
      char *name;
      unsigned char packet[8];
      unsigned char badbyte;
      unsigned char pktcnt;
      unsigned char pktsize;
      unsigned char type;
      unsigned char acks_disable_command;
      unsigned int model;
      unsigned long last;
      unsigned long out_of_sync;
      unsigned long num_resyncs;
      enum psmouse_state state;
      char devname[64];
      char phys[32];

      unsigned int rate;
      unsigned int resolution;
      unsigned int resetafter;
      unsigned int resync_time;
      unsigned int smartscroll;     /* Logitech only */

      psmouse_ret_t (*protocol_handler)(struct psmouse *psmouse);
      void (*set_rate)(struct psmouse *psmouse, unsigned int rate);
      void (*set_resolution)(struct psmouse *psmouse, unsigned int resolution);

      int (*reconnect)(struct psmouse *psmouse);
      void (*disconnect)(struct psmouse *psmouse);
      void (*cleanup)(struct psmouse *psmouse);
      int (*poll)(struct psmouse *psmouse);

      void (*pt_activate)(struct psmouse *psmouse);
      void (*pt_deactivate)(struct psmouse *psmouse);
};

enum psmouse_type {
      PSMOUSE_NONE,
      PSMOUSE_PS2,
      PSMOUSE_PS2PP,
      PSMOUSE_THINKPS,
      PSMOUSE_GENPS,
      PSMOUSE_IMPS,
      PSMOUSE_IMEX,
      PSMOUSE_SYNAPTICS,
      PSMOUSE_ALPS,
      PSMOUSE_LIFEBOOK,
      PSMOUSE_TRACKPOINT,
      PSMOUSE_TOUCHKIT_PS2,
      PSMOUSE_CORTRON,
      PSMOUSE_AUTO            /* This one should always be last */
};

int psmouse_sliced_command(struct psmouse *psmouse, unsigned char command);
int psmouse_reset(struct psmouse *psmouse);
void psmouse_set_resolution(struct psmouse *psmouse, unsigned int resolution);


struct psmouse_attribute {
      struct device_attribute dattr;
      void *data;
      ssize_t (*show)(struct psmouse *psmouse, void *data, char *buf);
      ssize_t (*set)(struct psmouse *psmouse, void *data,
                  const char *buf, size_t count);
};
#define to_psmouse_attr(a)    container_of((a), struct psmouse_attribute, dattr)

ssize_t psmouse_attr_show_helper(struct device *dev, struct device_attribute *attr,
                         char *buf);
ssize_t psmouse_attr_set_helper(struct device *dev, struct device_attribute *attr,
                        const char *buf, size_t count);

#define PSMOUSE_DEFINE_ATTR(_name, _mode, _data, _show, _set)                 \
static ssize_t _show(struct psmouse *, void *data, char *);             \
static ssize_t _set(struct psmouse *, void *data, const char *, size_t);      \
static struct psmouse_attribute psmouse_attr_##_name = {                \
      .dattr      = {                                             \
            .attr = {                                       \
                  .name = __stringify(_name),                     \
                  .mode = _mode,                            \
            },                                              \
            .show = psmouse_attr_show_helper,                     \
            .store      = psmouse_attr_set_helper,                      \
      },                                                    \
      .data = _data,                                        \
      .show = _show,                                        \
      .set  = _set,                                               \
}

#endif /* _PSMOUSE_H */

Generated by  Doxygen 1.6.0   Back to index