Lines Matching refs:fsia6b
55 struct fsia6b {
65 struct fsia6b *fsia6b = serio_get_drvdata(serio);
70 fsia6b->packet.ibuf = (data << 8) | ((fsia6b->packet.ibuf >> 8) & 0xFF);
72 switch (fsia6b->packet.state) {
74 if (fsia6b->packet.ibuf == 0x4020)
75 fsia6b->packet.state = COLLECT;
79 fsia6b->packet.state = PROCESS;
83 fsia6b->packet.channel[fsia6b->packet.offset] =
84 fsia6b->packet.ibuf;
85 fsia6b->packet.offset++;
87 if (fsia6b->packet.offset == IBUS_SERVO_COUNT) {
88 fsia6b->packet.offset = 0;
89 fsia6b->packet.state = SYNC;
91 input_report_abs(fsia6b->dev, fsia6b_axes[i],
92 fsia6b->packet.channel[i]);
95 if (fsia6b->packet.channel[i] > 1900)
97 else if (fsia6b->packet.channel[i] < 1100)
102 input_report_key(fsia6b->dev,
107 input_report_key(fsia6b->dev,
112 input_report_key(fsia6b->dev,
117 input_sync(fsia6b->dev);
119 fsia6b->packet.state = COLLECT;
129 struct fsia6b *fsia6b;
135 fsia6b = kzalloc(sizeof(*fsia6b), GFP_KERNEL);
136 if (!fsia6b)
139 fsia6b->packet.ibuf = 0;
140 fsia6b->packet.offset = 0;
141 fsia6b->packet.state = SYNC;
143 serio_set_drvdata(serio, fsia6b);
150 fsia6b->dev = input_dev;
152 scnprintf(fsia6b->phys, sizeof(fsia6b->phys), "%s/input0", serio->phys);
155 input_dev->phys = fsia6b->phys;
169 dev_err(&fsia6b->dev->dev,
170 "Invalid switch configuration supplied for fsia6b.\n");
185 err = input_register_device(fsia6b->dev);
194 kfree(fsia6b);
200 struct fsia6b *fsia6b = serio_get_drvdata(serio);
204 input_unregister_device(fsia6b->dev);
205 kfree(fsia6b);
222 .name = "fsia6b"