• Home
  • History
  • Annotate
  • Raw
  • Download
  • only in /netgear-R7000-V1.0.7.12_1.2.5/components/opensource/linux/linux-2.6.36/drivers/input/serio/

Lines Matching defs:ps2port

135 static void gscps2_flush(struct gscps2port *ps2port)
137 while (gscps2_readb_status(ps2port->addr) & GSC_STAT_RBNE)
138 gscps2_readb_input(ps2port->addr);
139 ps2port->act = ps2port->append = 0;
148 static inline int gscps2_writeb_output(struct gscps2port *ps2port, u8 data)
151 char *addr = ps2port->addr;
158 while (gscps2_readb_status(ps2port->addr) & GSC_STAT_RBNE)
161 spin_lock_irqsave(&ps2port->lock, flags);
163 spin_unlock_irqrestore(&ps2port->lock, flags);
180 static void gscps2_enable(struct gscps2port *ps2port, int enable)
186 spin_lock_irqsave(&ps2port->lock, flags);
187 gscps2_flush(ps2port);
188 data = gscps2_readb_control(ps2port->addr);
193 gscps2_writeb_control(data, ps2port->addr);
194 spin_unlock_irqrestore(&ps2port->lock, flags);
195 wait_TBE(ps2port->addr);
196 gscps2_flush(ps2port);
203 static void gscps2_reset(struct gscps2port *ps2port)
205 char *addr = ps2port->addr;
209 spin_lock_irqsave(&ps2port->lock, flags);
210 gscps2_flush(ps2port);
212 gscps2_flush(ps2port);
213 spin_unlock_irqrestore(&ps2port->lock, flags);
232 struct gscps2port *ps2port;
234 list_for_each_entry(ps2port, &ps2port_list, node) {
237 spin_lock_irqsave(&ps2port->lock, flags);
239 while ( (ps2port->buffer[ps2port->append].str =
240 gscps2_readb_status(ps2port->addr)) & GSC_STAT_RBNE ) {
241 ps2port->buffer[ps2port->append].data =
242 gscps2_readb_input(ps2port->addr);
243 ps2port->append = ((ps2port->append+1) & BUFFER_SIZE);
246 spin_unlock_irqrestore(&ps2port->lock, flags);
252 list_for_each_entry(ps2port, &ps2port_list, node) {
254 while (ps2port->act != ps2port->append) {
261 if (gscps2_readb_status(ps2port->addr) & GSC_STAT_CMPINTR)
264 status = ps2port->buffer[ps2port->act].str;
265 data = ps2port->buffer[ps2port->act].data;
267 ps2port->act = ((ps2port->act+1) & BUFFER_SIZE);
271 serio_interrupt(ps2port->port, data, rxflags);
287 struct gscps2port *ps2port = port->port_data;
289 if (!gscps2_writeb_output(ps2port, data)) {
303 struct gscps2port *ps2port = port->port_data;
305 gscps2_reset(ps2port);
308 gscps2_enable(ps2port, ENABLE);
321 struct gscps2port *ps2port = port->port_data;
322 gscps2_enable(ps2port, DISABLE);
332 struct gscps2port *ps2port;
344 ps2port = kzalloc(sizeof(struct gscps2port), GFP_KERNEL);
346 if (!ps2port || !serio) {
351 dev_set_drvdata(&dev->dev, ps2port);
353 ps2port->port = serio;
354 ps2port->padev = dev;
355 ps2port->addr = ioremap_nocache(hpa, GSC_STATUS + 4);
356 spin_lock_init(&ps2port->lock);
358 gscps2_reset(ps2port);
359 ps2port->id = readb(ps2port->addr + GSC_ID) & 0x0f;
362 (ps2port->id == GSC_ID_KEYBOARD) ? "keyboard" : "mouse");
368 serio->port_data = ps2port;
372 if (request_irq(dev->irq, gscps2_interrupt, IRQF_SHARED, ps2port->port->name, ps2port))
375 if (ps2port->id != GSC_ID_KEYBOARD && ps2port->id != GSC_ID_MOUSE) {
377 hpa, ps2port->id);
384 ps2port->port->name,
385 ps2port->addr,
386 ps2port->padev->irq,
387 ps2port->port->phys);
389 serio_register_port(ps2port->port);
391 list_add_tail(&ps2port->node, &ps2port_list);
396 free_irq(dev->irq, ps2port);
399 iounmap(ps2port->addr);
403 kfree(ps2port);
415 struct gscps2port *ps2port = dev_get_drvdata(&dev->dev);
417 serio_unregister_port(ps2port->port);
418 free_irq(dev->irq, ps2port);
419 gscps2_flush(ps2port);
420 list_del(&ps2port->node);
421 iounmap(ps2port->addr);
423 kfree(ps2port);