Avoid PS/2 protocol probing for /dev/input/mice

The kernel will always upconvert to ExplorerPS/2 for all readers of
/dev/input/mice, so don't waste time on startup trying to figure
that out.
This commit is contained in:
Adam Jackson 2007-10-28 09:37:52 +01:00
parent b97518666d
commit 22f0e3a8b0

View File

@ -45,7 +45,8 @@ typedef enum {
MOUSE_PROTO_SERIAL, MOUSE_PROTO_SERIAL,
MOUSE_PROTO_PS2, MOUSE_PROTO_PS2,
MOUSE_PROTO_MSC, MOUSE_PROTO_MSC,
MOUSE_PROTO_GPM MOUSE_PROTO_GPM,
MOUSE_PROTO_EXPPS2,
} protocolTypes; } protocolTypes;
static struct { static struct {
@ -55,7 +56,8 @@ static struct {
{ MOUSE_PROTO_UNKNOWN, NULL }, { MOUSE_PROTO_UNKNOWN, NULL },
{ MOUSE_PROTO_PS2, "PS/2" }, { MOUSE_PROTO_PS2, "PS/2" },
{ MOUSE_PROTO_MSC, "MouseSystems" }, { MOUSE_PROTO_MSC, "MouseSystems" },
{ MOUSE_PROTO_GPM, "GPM" } { MOUSE_PROTO_GPM, "GPM" },
{ MOUSE_PROTO_EXPPS2, "ExplorerPS/2" },
}; };
static const char * static const char *
@ -87,7 +89,7 @@ FindDevice(InputInfoPtr pInfo, const char *protocol, int flags)
} }
static const char * static const char *
GuessProtocol(InputInfoPtr pInfo, int flags) lnxMouseMagic(InputInfoPtr pInfo)
{ {
int fd = -1; int fd = -1;
const char *dev; const char *dev;
@ -137,8 +139,10 @@ GuessProtocol(InputInfoPtr pInfo, int flags)
} }
} }
if (strcmp(realdev, DEFAULT_PS2_DEV) == 0) if (strcmp(realdev, DEFAULT_MOUSE_DEV) == 0)
proto = MOUSE_PROTO_PS2; proto = MOUSE_PROTO_EXPPS2;
else if (strcmp(realdev, DEFAULT_PS2_DEV) == 0)
proto = MOUSE_PROTO_EXPPS2;
else if (strcmp(realdev, DEFAULT_GPM_DATA_DEV) == 0) else if (strcmp(realdev, DEFAULT_GPM_DATA_DEV) == 0)
proto = MOUSE_PROTO_MSC; proto = MOUSE_PROTO_MSC;
else if (strcmp(realdev, DEFAULT_GPM_CTL_DEV) == 0) else if (strcmp(realdev, DEFAULT_GPM_CTL_DEV) == 0)
@ -171,15 +175,14 @@ GuessProtocol(InputInfoPtr pInfo, int flags)
close(fd); close(fd);
} }
if (proto == MOUSE_PROTO_UNKNOWN) { if (proto == MOUSE_PROTO_UNKNOWN) {
xf86Msg(X_ERROR, "%s: GuessProtocol: Cannot find mouse protocol.\n", xf86Msg(X_ERROR, "%s: Cannot find mouse protocol.\n",
pInfo->name); pInfo->name);
return NULL; return NULL;
} else { } else {
for (i = 0; i < sizeof(devproto)/sizeof(devproto[0]); i++) { for (i = 0; i < sizeof(devproto)/sizeof(devproto[0]); i++) {
if (devproto[i].proto == proto) { if (devproto[i].proto == proto) {
xf86Msg(X_INFO, xf86Msg(X_INFO,
"%s: GuessProtocol: " "%s: Setting mouse protocol to \"%s\"\n",
"setting mouse protocol to \"%s\"\n",
pInfo->name, devproto[i].name); pInfo->name, devproto[i].name);
return devproto[i].name; return devproto[i].name;
} }
@ -188,6 +191,18 @@ GuessProtocol(InputInfoPtr pInfo, int flags)
return NULL; return NULL;
} }
static const char *
GuessProtocol(InputInfoPtr pInfo, int flags)
{
return lnxMouseMagic(pInfo);
}
static const char *
SetupAuto(InputInfoPtr pInfo, int *protoPara)
{
return lnxMouseMagic(pInfo);
}
_X_EXPORT OSMouseInfoPtr _X_EXPORT OSMouseInfoPtr
xf86OSMouseInit(int flags) xf86OSMouseInit(int flags)
{ {
@ -200,6 +215,7 @@ xf86OSMouseInit(int flags)
p->DefaultProtocol = DefaultProtocol; p->DefaultProtocol = DefaultProtocol;
p->FindDevice = FindDevice; p->FindDevice = FindDevice;
p->GuessProtocol = GuessProtocol; p->GuessProtocol = GuessProtocol;
p->SetupAuto = SetupAuto;
return p; return p;
} }