14 #include <linux/module.h>
16 #include <linux/input.h>
17 #include <linux/serio.h>
21 #include <linux/slab.h>
24 #define DRV_NAME "altera_ps2"
43 while ((status =
readl(ps2if->
base)) & 0xffff0000) {
54 static int altera_ps2_write(
struct serio *
io,
unsigned char val)
62 static int altera_ps2_open(
struct serio *
io)
74 static void altera_ps2_close(
struct serio *io)
90 ps2if = kzalloc(
sizeof(
struct ps2if),
GFP_KERNEL);
91 serio = kzalloc(
sizeof(
struct serio),
GFP_KERNEL);
92 if (!ps2if || !serio) {
98 serio->
write = altera_ps2_write;
99 serio->
open = altera_ps2_open;
100 serio->
close = altera_ps2_close;
104 serio->
dev.parent = &pdev->
dev;
136 dev_err(&pdev->
dev,
"could not allocate IRQ %d: %d\n",
144 platform_set_drvdata(pdev, ps2if);
164 struct ps2if *ps2if = platform_get_drvdata(pdev);
166 platform_set_drvdata(pdev,
NULL);
189 .probe = altera_ps2_probe,