• 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:ps2if

27 struct ps2if {
45 struct ps2if *ps2if = dev_id;
48 status = sa1111_readl(ps2if->base + SA1111_PS2STAT);
51 sa1111_writel(PS2STAT_STP, ps2if->base + SA1111_PS2STAT);
56 scancode = sa1111_readl(ps2if->base + SA1111_PS2DATA) & 0xff;
61 serio_interrupt(ps2if->io, scancode, flag);
63 status = sa1111_readl(ps2if->base + SA1111_PS2STAT);
74 struct ps2if *ps2if = dev_id;
77 spin_lock(&ps2if->lock);
78 status = sa1111_readl(ps2if->base + SA1111_PS2STAT);
79 if (ps2if->head == ps2if->tail) {
83 sa1111_writel(ps2if->buf[ps2if->tail], ps2if->base + SA1111_PS2DATA);
84 ps2if->tail = (ps2if->tail + 1) & (sizeof(ps2if->buf) - 1);
86 spin_unlock(&ps2if->lock);
97 struct ps2if *ps2if = io->port_data;
101 spin_lock_irqsave(&ps2if->lock, flags);
106 if (sa1111_readl(ps2if->base + SA1111_PS2STAT) & PS2STAT_TXE) {
107 sa1111_writel(val, ps2if->base + SA1111_PS2DATA);
109 if (ps2if->head == ps2if->tail)
110 enable_irq(ps2if->dev->irq[1]);
111 head = (ps2if->head + 1) & (sizeof(ps2if->buf) - 1);
112 if (head != ps2if->tail) {
113 ps2if->buf[ps2if->head] = val;
114 ps2if->head = head;
118 spin_unlock_irqrestore(&ps2if->lock, flags);
124 struct ps2if *ps2if = io->port_data;
127 sa1111_enable_device(ps2if->dev);
129 ret = request_irq(ps2if->dev->irq[0], ps2_rxint, 0,
130 SA1111_DRIVER_NAME(ps2if->dev), ps2if);
133 ps2if->dev->irq[0], ret);
137 ret = request_irq(ps2if->dev->irq[1], ps2_txint, 0,
138 SA1111_DRIVER_NAME(ps2if->dev), ps2if);
141 ps2if->dev->irq[1], ret);
142 free_irq(ps2if->dev->irq[0], ps2if);
146 ps2if->open = 1;
148 enable_irq_wake(ps2if->dev->irq[0]);
150 sa1111_writel(PS2CR_ENA, ps2if->base + SA1111_PS2CR);
156 struct ps2if *ps2if = io->port_data;
158 sa1111_writel(0, ps2if->base + SA1111_PS2CR);
160 disable_irq_wake(ps2if->dev->irq[0]);
162 ps2if->open = 0;
164 free_irq(ps2if->dev->irq[1], ps2if);
165 free_irq(ps2if->dev->irq[0], ps2if);
167 sa1111_disable_device(ps2if->dev);
173 static void __devinit ps2_clear_input(struct ps2if *ps2if)
178 if ((sa1111_readl(ps2if->base + SA1111_PS2DATA) & 0xff) == 0xff)
183 static unsigned int __devinit ps2_test_one(struct ps2if *ps2if,
188 sa1111_writel(PS2CR_ENA | mask, ps2if->base + SA1111_PS2CR);
192 val = sa1111_readl(ps2if->base + SA1111_PS2STAT);
200 static int __devinit ps2_test(struct ps2if *ps2if)
205 stat = ps2_test_one(ps2if, PS2CR_FKC);
211 stat = ps2_test_one(ps2if, 0);
217 stat = ps2_test_one(ps2if, PS2CR_FKD);
223 sa1111_writel(0, ps2if->base + SA1111_PS2CR);
233 struct ps2if *ps2if;
237 ps2if = kzalloc(sizeof(struct ps2if), GFP_KERNEL);
239 if (!ps2if || !serio) {
251 serio->port_data = ps2if;
253 ps2if->io = serio;
254 ps2if->dev = dev;
255 sa1111_set_drvdata(dev, ps2if);
257 spin_lock_init(&ps2if->lock);
272 ps2if->base = dev->mapbase;
274 sa1111_enable_device(ps2if->dev);
277 sa1111_writel(0, ps2if->base + SA1111_PS2CLKDIV);
278 sa1111_writel(127, ps2if->base + SA1111_PS2PRECNT);
283 ps2_clear_input(ps2if);
288 ret = ps2_test(ps2if);
295 ps2_clear_input(ps2if);
297 sa1111_disable_device(ps2if->dev);
298 serio_register_port(ps2if->io);
302 sa1111_disable_device(ps2if->dev);
307 kfree(ps2if);
317 struct ps2if *ps2if = sa1111_get_drvdata(dev);
319 serio_unregister_port(ps2if->io);
324 kfree(ps2if);