110
110
static int __devinit xenkbd_probe(struct xenbus_device *dev,
111
111
const struct xenbus_device_id *id)
114
114
struct xenkbd_info *info;
115
115
struct input_dev *kbd, *ptr;
129
129
goto error_nomem;
131
if (xenbus_scanf(XBT_NIL, dev->otherend, "feature-abs-pointer", "%d", &abs) < 0)
134
xenbus_printf(XBT_NIL, dev->nodename, "request-abs-pointer", "1");
132
137
kbd = input_allocate_device();
137
142
kbd->id.bustype = BUS_PCI;
138
143
kbd->id.vendor = 0x5853;
139
144
kbd->id.product = 0xffff;
140
kbd->evbit[0] = BIT(EV_KEY);
146
__set_bit(EV_KEY, kbd->evbit);
141
147
for (i = KEY_ESC; i < KEY_UNKNOWN; i++)
142
set_bit(i, kbd->keybit);
148
__set_bit(i, kbd->keybit);
143
149
for (i = KEY_OK; i < KEY_MAX; i++)
144
set_bit(i, kbd->keybit);
150
__set_bit(i, kbd->keybit);
146
152
ret = input_register_device(kbd);
160
166
ptr->id.bustype = BUS_PCI;
161
167
ptr->id.vendor = 0x5853;
162
168
ptr->id.product = 0xfffe;
163
ptr->evbit[0] = BIT(EV_KEY) | BIT(EV_REL) | BIT(EV_ABS);
171
__set_bit(EV_ABS, ptr->evbit);
172
input_set_abs_params(ptr, ABS_X, 0, XENFB_WIDTH, 0, 0);
173
input_set_abs_params(ptr, ABS_Y, 0, XENFB_HEIGHT, 0, 0);
175
input_set_capability(ptr, EV_REL, REL_X);
176
input_set_capability(ptr, EV_REL, REL_Y);
178
input_set_capability(ptr, EV_REL, REL_WHEEL);
180
__set_bit(EV_KEY, ptr->evbit);
164
181
for (i = BTN_LEFT; i <= BTN_TASK; i++)
165
set_bit(i, ptr->keybit);
166
ptr->relbit[0] = BIT(REL_X) | BIT(REL_Y) | BIT(REL_WHEEL);
167
input_set_abs_params(ptr, ABS_X, 0, XENFB_WIDTH, 0, 0);
168
input_set_abs_params(ptr, ABS_Y, 0, XENFB_HEIGHT, 0, 0);
182
__set_bit(i, ptr->keybit);
170
184
ret = input_register_device(ptr);
286
300
case XenbusStateInitWait:
288
ret = xenbus_scanf(XBT_NIL, info->xbdev->otherend,
289
"feature-abs-pointer", "%d", &val);
293
ret = xenbus_printf(XBT_NIL, info->xbdev->nodename,
294
"request-abs-pointer", "1");
296
pr_warning("can't request abs-pointer\n");
298
302
xenbus_switch_state(dev, XenbusStateConnected);