mirror of https://gitee.com/openkylin/linux.git
Input: psmouse - move protocol descriptions around
We move protocol descriptions and psmouse_find_by_type() and pmouse_find_by_name() so that we can use them without forward declarations in the subsequent patches. Reviewed-by: Hans de Goede <hdegoede@redhat.com> Reviewed-by: Pali Rohár <pali.rohar@gmail.com> Tested-by: Marcin Sochacki <msochacki+kernel@gmail.com> Tested-by: Till <till2.schaefer@uni-dortmund.de> Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
This commit is contained in:
parent
24a06f3e3a
commit
5fa75cfe23
|
@ -683,6 +683,195 @@ static int cortron_detect(struct psmouse *psmouse, bool set_properties)
|
|||
return 0;
|
||||
}
|
||||
|
||||
static const struct psmouse_protocol psmouse_protocols[] = {
|
||||
{
|
||||
.type = PSMOUSE_PS2,
|
||||
.name = "PS/2",
|
||||
.alias = "bare",
|
||||
.maxproto = true,
|
||||
.ignore_parity = true,
|
||||
.detect = ps2bare_detect,
|
||||
},
|
||||
#ifdef CONFIG_MOUSE_PS2_LOGIPS2PP
|
||||
{
|
||||
.type = PSMOUSE_PS2PP,
|
||||
.name = "PS2++",
|
||||
.alias = "logitech",
|
||||
.detect = ps2pp_init,
|
||||
},
|
||||
#endif
|
||||
{
|
||||
.type = PSMOUSE_THINKPS,
|
||||
.name = "ThinkPS/2",
|
||||
.alias = "thinkps",
|
||||
.detect = thinking_detect,
|
||||
},
|
||||
#ifdef CONFIG_MOUSE_PS2_CYPRESS
|
||||
{
|
||||
.type = PSMOUSE_CYPRESS,
|
||||
.name = "CyPS/2",
|
||||
.alias = "cypress",
|
||||
.detect = cypress_detect,
|
||||
.init = cypress_init,
|
||||
},
|
||||
#endif
|
||||
{
|
||||
.type = PSMOUSE_GENPS,
|
||||
.name = "GenPS/2",
|
||||
.alias = "genius",
|
||||
.detect = genius_detect,
|
||||
},
|
||||
{
|
||||
.type = PSMOUSE_IMPS,
|
||||
.name = "ImPS/2",
|
||||
.alias = "imps",
|
||||
.maxproto = true,
|
||||
.ignore_parity = true,
|
||||
.detect = intellimouse_detect,
|
||||
},
|
||||
{
|
||||
.type = PSMOUSE_IMEX,
|
||||
.name = "ImExPS/2",
|
||||
.alias = "exps",
|
||||
.maxproto = true,
|
||||
.ignore_parity = true,
|
||||
.detect = im_explorer_detect,
|
||||
},
|
||||
#ifdef CONFIG_MOUSE_PS2_SYNAPTICS
|
||||
{
|
||||
.type = PSMOUSE_SYNAPTICS,
|
||||
.name = "SynPS/2",
|
||||
.alias = "synaptics",
|
||||
.detect = synaptics_detect,
|
||||
.init = synaptics_init,
|
||||
},
|
||||
{
|
||||
.type = PSMOUSE_SYNAPTICS_RELATIVE,
|
||||
.name = "SynRelPS/2",
|
||||
.alias = "synaptics-relative",
|
||||
.detect = synaptics_detect,
|
||||
.init = synaptics_init_relative,
|
||||
},
|
||||
#endif
|
||||
#ifdef CONFIG_MOUSE_PS2_ALPS
|
||||
{
|
||||
.type = PSMOUSE_ALPS,
|
||||
.name = "AlpsPS/2",
|
||||
.alias = "alps",
|
||||
.detect = alps_detect,
|
||||
.init = alps_init,
|
||||
},
|
||||
#endif
|
||||
#ifdef CONFIG_MOUSE_PS2_LIFEBOOK
|
||||
{
|
||||
.type = PSMOUSE_LIFEBOOK,
|
||||
.name = "LBPS/2",
|
||||
.alias = "lifebook",
|
||||
.init = lifebook_init,
|
||||
},
|
||||
#endif
|
||||
#ifdef CONFIG_MOUSE_PS2_TRACKPOINT
|
||||
{
|
||||
.type = PSMOUSE_TRACKPOINT,
|
||||
.name = "TPPS/2",
|
||||
.alias = "trackpoint",
|
||||
.detect = trackpoint_detect,
|
||||
},
|
||||
#endif
|
||||
#ifdef CONFIG_MOUSE_PS2_TOUCHKIT
|
||||
{
|
||||
.type = PSMOUSE_TOUCHKIT_PS2,
|
||||
.name = "touchkitPS/2",
|
||||
.alias = "touchkit",
|
||||
.detect = touchkit_ps2_detect,
|
||||
},
|
||||
#endif
|
||||
#ifdef CONFIG_MOUSE_PS2_OLPC
|
||||
{
|
||||
.type = PSMOUSE_HGPK,
|
||||
.name = "OLPC HGPK",
|
||||
.alias = "hgpk",
|
||||
.detect = hgpk_detect,
|
||||
},
|
||||
#endif
|
||||
#ifdef CONFIG_MOUSE_PS2_ELANTECH
|
||||
{
|
||||
.type = PSMOUSE_ELANTECH,
|
||||
.name = "ETPS/2",
|
||||
.alias = "elantech",
|
||||
.detect = elantech_detect,
|
||||
.init = elantech_init,
|
||||
},
|
||||
#endif
|
||||
#ifdef CONFIG_MOUSE_PS2_SENTELIC
|
||||
{
|
||||
.type = PSMOUSE_FSP,
|
||||
.name = "FSPPS/2",
|
||||
.alias = "fsp",
|
||||
.detect = fsp_detect,
|
||||
.init = fsp_init,
|
||||
},
|
||||
#endif
|
||||
{
|
||||
.type = PSMOUSE_CORTRON,
|
||||
.name = "CortronPS/2",
|
||||
.alias = "cortps",
|
||||
.detect = cortron_detect,
|
||||
},
|
||||
#ifdef CONFIG_MOUSE_PS2_FOCALTECH
|
||||
{
|
||||
.type = PSMOUSE_FOCALTECH,
|
||||
.name = "FocalTechPS/2",
|
||||
.alias = "focaltech",
|
||||
.detect = focaltech_detect,
|
||||
.init = focaltech_init,
|
||||
},
|
||||
#endif
|
||||
#ifdef CONFIG_MOUSE_PS2_VMMOUSE
|
||||
{
|
||||
.type = PSMOUSE_VMMOUSE,
|
||||
.name = VMMOUSE_PSNAME,
|
||||
.alias = "vmmouse",
|
||||
.detect = vmmouse_detect,
|
||||
.init = vmmouse_init,
|
||||
},
|
||||
#endif
|
||||
{
|
||||
.type = PSMOUSE_AUTO,
|
||||
.name = "auto",
|
||||
.alias = "any",
|
||||
.maxproto = true,
|
||||
},
|
||||
};
|
||||
|
||||
static const struct psmouse_protocol *psmouse_protocol_by_type(enum psmouse_type type)
|
||||
{
|
||||
int i;
|
||||
|
||||
for (i = 0; i < ARRAY_SIZE(psmouse_protocols); i++)
|
||||
if (psmouse_protocols[i].type == type)
|
||||
return &psmouse_protocols[i];
|
||||
|
||||
WARN_ON(1);
|
||||
return &psmouse_protocols[0];
|
||||
}
|
||||
|
||||
static const struct psmouse_protocol *psmouse_protocol_by_name(const char *name, size_t len)
|
||||
{
|
||||
const struct psmouse_protocol *p;
|
||||
int i;
|
||||
|
||||
for (i = 0; i < ARRAY_SIZE(psmouse_protocols); i++) {
|
||||
p = &psmouse_protocols[i];
|
||||
|
||||
if ((strlen(p->name) == len && !strncmp(p->name, name, len)) ||
|
||||
(strlen(p->alias) == len && !strncmp(p->alias, name, len)))
|
||||
return &psmouse_protocols[i];
|
||||
}
|
||||
|
||||
return NULL;
|
||||
}
|
||||
|
||||
/*
|
||||
* Apply default settings to the psmouse structure. Most of them will
|
||||
* be overridden by individual protocol initialization routines.
|
||||
|
@ -950,196 +1139,6 @@ static int psmouse_extensions(struct psmouse *psmouse,
|
|||
return PSMOUSE_PS2;
|
||||
}
|
||||
|
||||
static const struct psmouse_protocol psmouse_protocols[] = {
|
||||
{
|
||||
.type = PSMOUSE_PS2,
|
||||
.name = "PS/2",
|
||||
.alias = "bare",
|
||||
.maxproto = true,
|
||||
.ignore_parity = true,
|
||||
.detect = ps2bare_detect,
|
||||
},
|
||||
#ifdef CONFIG_MOUSE_PS2_LOGIPS2PP
|
||||
{
|
||||
.type = PSMOUSE_PS2PP,
|
||||
.name = "PS2++",
|
||||
.alias = "logitech",
|
||||
.detect = ps2pp_init,
|
||||
},
|
||||
#endif
|
||||
{
|
||||
.type = PSMOUSE_THINKPS,
|
||||
.name = "ThinkPS/2",
|
||||
.alias = "thinkps",
|
||||
.detect = thinking_detect,
|
||||
},
|
||||
#ifdef CONFIG_MOUSE_PS2_CYPRESS
|
||||
{
|
||||
.type = PSMOUSE_CYPRESS,
|
||||
.name = "CyPS/2",
|
||||
.alias = "cypress",
|
||||
.detect = cypress_detect,
|
||||
.init = cypress_init,
|
||||
},
|
||||
#endif
|
||||
{
|
||||
.type = PSMOUSE_GENPS,
|
||||
.name = "GenPS/2",
|
||||
.alias = "genius",
|
||||
.detect = genius_detect,
|
||||
},
|
||||
{
|
||||
.type = PSMOUSE_IMPS,
|
||||
.name = "ImPS/2",
|
||||
.alias = "imps",
|
||||
.maxproto = true,
|
||||
.ignore_parity = true,
|
||||
.detect = intellimouse_detect,
|
||||
},
|
||||
{
|
||||
.type = PSMOUSE_IMEX,
|
||||
.name = "ImExPS/2",
|
||||
.alias = "exps",
|
||||
.maxproto = true,
|
||||
.ignore_parity = true,
|
||||
.detect = im_explorer_detect,
|
||||
},
|
||||
#ifdef CONFIG_MOUSE_PS2_SYNAPTICS
|
||||
{
|
||||
.type = PSMOUSE_SYNAPTICS,
|
||||
.name = "SynPS/2",
|
||||
.alias = "synaptics",
|
||||
.detect = synaptics_detect,
|
||||
.init = synaptics_init,
|
||||
},
|
||||
{
|
||||
.type = PSMOUSE_SYNAPTICS_RELATIVE,
|
||||
.name = "SynRelPS/2",
|
||||
.alias = "synaptics-relative",
|
||||
.detect = synaptics_detect,
|
||||
.init = synaptics_init_relative,
|
||||
},
|
||||
#endif
|
||||
#ifdef CONFIG_MOUSE_PS2_ALPS
|
||||
{
|
||||
.type = PSMOUSE_ALPS,
|
||||
.name = "AlpsPS/2",
|
||||
.alias = "alps",
|
||||
.detect = alps_detect,
|
||||
.init = alps_init,
|
||||
},
|
||||
#endif
|
||||
#ifdef CONFIG_MOUSE_PS2_LIFEBOOK
|
||||
{
|
||||
.type = PSMOUSE_LIFEBOOK,
|
||||
.name = "LBPS/2",
|
||||
.alias = "lifebook",
|
||||
.init = lifebook_init,
|
||||
},
|
||||
#endif
|
||||
#ifdef CONFIG_MOUSE_PS2_TRACKPOINT
|
||||
{
|
||||
.type = PSMOUSE_TRACKPOINT,
|
||||
.name = "TPPS/2",
|
||||
.alias = "trackpoint",
|
||||
.detect = trackpoint_detect,
|
||||
},
|
||||
#endif
|
||||
#ifdef CONFIG_MOUSE_PS2_TOUCHKIT
|
||||
{
|
||||
.type = PSMOUSE_TOUCHKIT_PS2,
|
||||
.name = "touchkitPS/2",
|
||||
.alias = "touchkit",
|
||||
.detect = touchkit_ps2_detect,
|
||||
},
|
||||
#endif
|
||||
#ifdef CONFIG_MOUSE_PS2_OLPC
|
||||
{
|
||||
.type = PSMOUSE_HGPK,
|
||||
.name = "OLPC HGPK",
|
||||
.alias = "hgpk",
|
||||
.detect = hgpk_detect,
|
||||
},
|
||||
#endif
|
||||
#ifdef CONFIG_MOUSE_PS2_ELANTECH
|
||||
{
|
||||
.type = PSMOUSE_ELANTECH,
|
||||
.name = "ETPS/2",
|
||||
.alias = "elantech",
|
||||
.detect = elantech_detect,
|
||||
.init = elantech_init,
|
||||
},
|
||||
#endif
|
||||
#ifdef CONFIG_MOUSE_PS2_SENTELIC
|
||||
{
|
||||
.type = PSMOUSE_FSP,
|
||||
.name = "FSPPS/2",
|
||||
.alias = "fsp",
|
||||
.detect = fsp_detect,
|
||||
.init = fsp_init,
|
||||
},
|
||||
#endif
|
||||
{
|
||||
.type = PSMOUSE_CORTRON,
|
||||
.name = "CortronPS/2",
|
||||
.alias = "cortps",
|
||||
.detect = cortron_detect,
|
||||
},
|
||||
#ifdef CONFIG_MOUSE_PS2_FOCALTECH
|
||||
{
|
||||
.type = PSMOUSE_FOCALTECH,
|
||||
.name = "FocalTechPS/2",
|
||||
.alias = "focaltech",
|
||||
.detect = focaltech_detect,
|
||||
.init = focaltech_init,
|
||||
},
|
||||
#endif
|
||||
#ifdef CONFIG_MOUSE_PS2_VMMOUSE
|
||||
{
|
||||
.type = PSMOUSE_VMMOUSE,
|
||||
.name = VMMOUSE_PSNAME,
|
||||
.alias = "vmmouse",
|
||||
.detect = vmmouse_detect,
|
||||
.init = vmmouse_init,
|
||||
},
|
||||
#endif
|
||||
{
|
||||
.type = PSMOUSE_AUTO,
|
||||
.name = "auto",
|
||||
.alias = "any",
|
||||
.maxproto = true,
|
||||
},
|
||||
};
|
||||
|
||||
static const struct psmouse_protocol *psmouse_protocol_by_type(enum psmouse_type type)
|
||||
{
|
||||
int i;
|
||||
|
||||
for (i = 0; i < ARRAY_SIZE(psmouse_protocols); i++)
|
||||
if (psmouse_protocols[i].type == type)
|
||||
return &psmouse_protocols[i];
|
||||
|
||||
WARN_ON(1);
|
||||
return &psmouse_protocols[0];
|
||||
}
|
||||
|
||||
static const struct psmouse_protocol *psmouse_protocol_by_name(const char *name, size_t len)
|
||||
{
|
||||
const struct psmouse_protocol *p;
|
||||
int i;
|
||||
|
||||
for (i = 0; i < ARRAY_SIZE(psmouse_protocols); i++) {
|
||||
p = &psmouse_protocols[i];
|
||||
|
||||
if ((strlen(p->name) == len && !strncmp(p->name, name, len)) ||
|
||||
(strlen(p->alias) == len && !strncmp(p->alias, name, len)))
|
||||
return &psmouse_protocols[i];
|
||||
}
|
||||
|
||||
return NULL;
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* psmouse_probe() probes for a PS/2 mouse.
|
||||
*/
|
||||
|
|
Loading…
Reference in New Issue