Lines Matching +full:clk +full:- +full:out

1 // SPDX-License-Identifier: GPL-2.0-or-later
5 * Copyright (C) 2000-2003 Deep Blue Solutions Ltd.
19 #include <linux/clk.h>
24 #define KMI_BASE (kmi->base)
28 struct clk *clk; member
42 serio_interrupt(kmi->io, readb(KMIDATA), 0); in amba_kmi_int()
52 struct amba_kmi_port *kmi = io->port_data; in amba_kmi_write()
55 while ((readb(KMISTAT) & KMISTAT_TXEMPTY) == 0 && --timeleft) in amba_kmi_write()
66 struct amba_kmi_port *kmi = io->port_data; in amba_kmi_open()
70 ret = clk_prepare_enable(kmi->clk); in amba_kmi_open()
72 goto out; in amba_kmi_open()
74 divisor = clk_get_rate(kmi->clk) / 8000000 - 1; in amba_kmi_open()
78 ret = request_irq(kmi->irq, amba_kmi_int, IRQF_SHARED, "kmi-pl050", in amba_kmi_open()
81 printk(KERN_ERR "kmi: failed to claim IRQ%d\n", kmi->irq); in amba_kmi_open()
91 clk_disable_unprepare(kmi->clk); in amba_kmi_open()
92 out: in amba_kmi_open()
98 struct amba_kmi_port *kmi = io->port_data; in amba_kmi_close()
102 free_irq(kmi->irq, kmi); in amba_kmi_close()
103 clk_disable_unprepare(kmi->clk); in amba_kmi_close()
120 ret = -ENOMEM; in amba_kmi_probe()
121 goto out; in amba_kmi_probe()
125 io->id.type = SERIO_8042; in amba_kmi_probe()
126 io->write = amba_kmi_write; in amba_kmi_probe()
127 io->open = amba_kmi_open; in amba_kmi_probe()
128 io->close = amba_kmi_close; in amba_kmi_probe()
129 strlcpy(io->name, dev_name(&dev->dev), sizeof(io->name)); in amba_kmi_probe()
130 strlcpy(io->phys, dev_name(&dev->dev), sizeof(io->phys)); in amba_kmi_probe()
131 io->port_data = kmi; in amba_kmi_probe()
132 io->dev.parent = &dev->dev; in amba_kmi_probe()
134 kmi->io = io; in amba_kmi_probe()
135 kmi->base = ioremap(dev->res.start, resource_size(&dev->res)); in amba_kmi_probe()
136 if (!kmi->base) { in amba_kmi_probe()
137 ret = -ENOMEM; in amba_kmi_probe()
138 goto out; in amba_kmi_probe()
141 kmi->clk = clk_get(&dev->dev, "KMIREFCLK"); in amba_kmi_probe()
142 if (IS_ERR(kmi->clk)) { in amba_kmi_probe()
143 ret = PTR_ERR(kmi->clk); in amba_kmi_probe()
147 kmi->irq = dev->irq[0]; in amba_kmi_probe()
150 serio_register_port(kmi->io); in amba_kmi_probe()
154 iounmap(kmi->base); in amba_kmi_probe()
155 out: in amba_kmi_probe()
166 serio_unregister_port(kmi->io); in amba_kmi_remove()
167 clk_put(kmi->clk); in amba_kmi_remove()
168 iounmap(kmi->base); in amba_kmi_remove()
178 serio_reconnect(kmi->io); in amba_kmi_resume()
197 .name = "kmi-pl050",