Merge branch 'master' of master.kernel.org:/pub/scm/linux/kernel/git/davem/net-2.6
[safe/jmp/linux-2.6] / drivers / input / mouse / psmouse.h
index 8b608a1..593e910 100644 (file)
@@ -47,10 +47,11 @@ struct psmouse {
        unsigned char pktcnt;
        unsigned char pktsize;
        unsigned char type;
-       unsigned char acks_disable_command;
+       bool ignore_parity;
+       bool acks_disable_command;
        unsigned int model;
        unsigned long last;
-       unsigned long out_of_sync;
+       unsigned long out_of_sync_cnt;
        unsigned long num_resyncs;
        enum psmouse_state state;
        char devname[64];
@@ -60,7 +61,7 @@ struct psmouse {
        unsigned int resolution;
        unsigned int resetafter;
        unsigned int resync_time;
-       unsigned int smartscroll;       /* Logitech only */
+       bool smartscroll;       /* Logitech only */
 
        psmouse_ret_t (*protocol_handler)(struct psmouse *psmouse);
        void (*set_rate)(struct psmouse *psmouse, unsigned int rate);
@@ -90,6 +91,8 @@ enum psmouse_type {
        PSMOUSE_TOUCHKIT_PS2,
        PSMOUSE_CORTRON,
        PSMOUSE_HGPK,
+       PSMOUSE_ELANTECH,
+       PSMOUSE_FSP,
        PSMOUSE_AUTO            /* This one should always be last */
 };
 
@@ -106,7 +109,7 @@ struct psmouse_attribute {
        ssize_t (*show)(struct psmouse *psmouse, void *data, char *buf);
        ssize_t (*set)(struct psmouse *psmouse, void *data,
                        const char *buf, size_t count);
-       int protect;
+       bool protect;
 };
 #define to_psmouse_attr(a)     container_of((a), struct psmouse_attribute, dattr)
 
@@ -115,9 +118,7 @@ ssize_t psmouse_attr_show_helper(struct device *dev, struct device_attribute *at
 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, _protect)      \
-static ssize_t _show(struct psmouse *, void *data, char *);                    \
-static ssize_t _set(struct psmouse *, void *data, const char *, size_t);       \
+#define __PSMOUSE_DEFINE_ATTR_VAR(_name, _mode, _data, _show, _set, _protect)  \
 static struct psmouse_attribute psmouse_attr_##_name = {                       \
        .dattr  = {                                                             \
                .attr   = {                                                     \
@@ -133,7 +134,20 @@ static struct psmouse_attribute psmouse_attr_##_name = {                   \
        .protect = _protect,                                                    \
 }
 
-#define PSMOUSE_DEFINE_ATTR(_name, _mode, _data, _show, _set)  \
-               __PSMOUSE_DEFINE_ATTR(_name, _mode, _data, _show, _set, 1)
+#define __PSMOUSE_DEFINE_ATTR(_name, _mode, _data, _show, _set, _protect)      \
+       static ssize_t _show(struct psmouse *, void *, char *);                 \
+       static ssize_t _set(struct psmouse *, void *, const char *, size_t);    \
+       __PSMOUSE_DEFINE_ATTR_VAR(_name, _mode, _data, _show, _set, _protect)
+
+#define PSMOUSE_DEFINE_ATTR(_name, _mode, _data, _show, _set)                  \
+       __PSMOUSE_DEFINE_ATTR(_name, _mode, _data, _show, _set, true)
+
+#define PSMOUSE_DEFINE_RO_ATTR(_name, _mode, _data, _show)                     \
+       static ssize_t _show(struct psmouse *, void *, char *);                 \
+       __PSMOUSE_DEFINE_ATTR_VAR(_name, _mode, _data, _show, NULL, true)
+
+#define PSMOUSE_DEFINE_WO_ATTR(_name, _mode, _data, _set)                      \
+       static ssize_t _set(struct psmouse *, void *, const char *, size_t);    \
+       __PSMOUSE_DEFINE_ATTR_VAR(_name, _mode, _data, NULL, _set, true)
 
 #endif /* _PSMOUSE_H */