Lines Matching refs:spaceorb
53 struct spaceorb { struct
70 static void spaceorb_process_packet(struct spaceorb *spaceorb) in spaceorb_process_packet() argument
72 struct input_dev *dev = spaceorb->dev; in spaceorb_process_packet()
73 unsigned char *data = spaceorb->data; in spaceorb_process_packet()
78 if (spaceorb->idx < 2) return; in spaceorb_process_packet()
79 for (i = 0; i < spaceorb->idx; i++) c ^= data[i]; in spaceorb_process_packet()
85 spaceorb->data[spaceorb->idx - 1] = 0; in spaceorb_process_packet()
86 for (i = 1; i < spaceorb->idx && spaceorb->data[i] == ' '; i++); in spaceorb_process_packet()
88 dev->name, spaceorb->data + i, spaceorb->phys); in spaceorb_process_packet()
92 if (spaceorb->idx != 12) return; in spaceorb_process_packet()
93 for (i = 0; i < 9; i++) spaceorb->data[i+2] ^= spaceorb_xor[i]; in spaceorb_process_packet()
107 if (spaceorb->idx != 5) return; in spaceorb_process_packet()
114 if (spaceorb->idx != 4) return; in spaceorb_process_packet()
127 struct spaceorb* spaceorb = serio_get_drvdata(serio); in spaceorb_interrupt() local
130 if (spaceorb->idx) spaceorb_process_packet(spaceorb); in spaceorb_interrupt()
131 spaceorb->idx = 0; in spaceorb_interrupt()
133 if (spaceorb->idx < SPACEORB_MAX_LENGTH) in spaceorb_interrupt()
134 spaceorb->data[spaceorb->idx++] = data & 0x7f; in spaceorb_interrupt()
144 struct spaceorb* spaceorb = serio_get_drvdata(serio); in spaceorb_disconnect() local
148 input_unregister_device(spaceorb->dev); in spaceorb_disconnect()
149 kfree(spaceorb); in spaceorb_disconnect()
160 struct spaceorb *spaceorb; in spaceorb_connect() local
165 spaceorb = kzalloc(sizeof(struct spaceorb), GFP_KERNEL); in spaceorb_connect()
167 if (!spaceorb || !input_dev) in spaceorb_connect()
170 spaceorb->dev = input_dev; in spaceorb_connect()
171 snprintf(spaceorb->phys, sizeof(spaceorb->phys), "%s/input0", serio->phys); in spaceorb_connect()
174 input_dev->phys = spaceorb->phys; in spaceorb_connect()
189 serio_set_drvdata(serio, spaceorb); in spaceorb_connect()
195 err = input_register_device(spaceorb->dev); in spaceorb_connect()
204 kfree(spaceorb); in spaceorb_connect()