Lines Matching defs:kbd

71 	struct spear_kbd *kbd = dev_id;
72 struct input_dev *input = kbd->input;
76 sts = readl_relaxed(kbd->io_base + STATUS_REG);
80 if (kbd->last_key != KEY_RESERVED) {
81 input_report_key(input, kbd->last_key, 0);
82 kbd->last_key = KEY_RESERVED;
86 val = readl_relaxed(kbd->io_base + DATA_REG) &
88 key = kbd->keycodes[val];
94 kbd->last_key = key;
97 writel_relaxed(0, kbd->io_base + STATUS_REG);
104 struct spear_kbd *kbd = input_get_drvdata(dev);
108 kbd->last_key = KEY_RESERVED;
110 error = clk_enable(kbd->clk);
115 val = clk_get_rate(kbd->clk) / 1000000 - 1;
120 (kbd->mode << MODE_CTL_KEYNUM_SHIFT);
121 writel_relaxed(val, kbd->io_base + MODE_CTL_REG);
122 writel_relaxed(1, kbd->io_base + STATUS_REG);
125 val = readl_relaxed(kbd->io_base + MODE_CTL_REG);
127 writel_relaxed(val, kbd->io_base + MODE_CTL_REG);
134 struct spear_kbd *kbd = input_get_drvdata(dev);
138 val = readl_relaxed(kbd->io_base + MODE_CTL_REG);
140 writel_relaxed(val, kbd->io_base + MODE_CTL_REG);
142 clk_disable(kbd->clk);
144 kbd->last_key = KEY_RESERVED;
149 struct spear_kbd *kbd)
161 kbd->rep = true;
164 kbd->suspended_rate = suspended_rate;
172 kbd->mode = val;
177 struct spear_kbd *kbd)
187 struct spear_kbd *kbd;
196 kbd = devm_kzalloc(&pdev->dev, sizeof(*kbd), GFP_KERNEL);
197 if (!kbd) {
208 kbd->input = input_dev;
209 kbd->irq = irq;
212 error = spear_kbd_parse_dt(pdev, kbd);
216 kbd->mode = pdata->mode;
217 kbd->rep = pdata->rep;
218 kbd->suspended_rate = pdata->suspended_rate;
221 kbd->io_base = devm_platform_get_and_ioremap_resource(pdev, 0, NULL);
222 if (IS_ERR(kbd->io_base))
223 return PTR_ERR(kbd->io_base);
225 kbd->clk = devm_clk_get(&pdev->dev, NULL);
226 if (IS_ERR(kbd->clk))
227 return PTR_ERR(kbd->clk);
239 kbd->keycodes, input_dev);
245 if (kbd->rep)
249 input_set_drvdata(input_dev, kbd);
252 "keyboard", kbd);
258 error = clk_prepare(kbd->clk);
265 clk_unprepare(kbd->clk);
270 platform_set_drvdata(pdev, kbd);
277 struct spear_kbd *kbd = platform_get_drvdata(pdev);
279 input_unregister_device(kbd->input);
280 clk_unprepare(kbd->clk);
286 struct spear_kbd *kbd = platform_get_drvdata(pdev);
287 struct input_dev *input_dev = kbd->input;
293 clk_enable(kbd->clk);
295 mode_ctl_reg = readl_relaxed(kbd->io_base + MODE_CTL_REG);
298 if (!enable_irq_wake(kbd->irq))
299 kbd->irq_wake_enabled = true;
305 if (kbd->suspended_rate)
306 rate = kbd->suspended_rate / 1000000 - 1;
308 rate = clk_get_rate(kbd->clk) / 1000000 - 1;
314 writel_relaxed(val, kbd->io_base + MODE_CTL_REG);
319 kbd->io_base + MODE_CTL_REG);
320 clk_disable(kbd->clk);
326 kbd->mode_ctl_reg = mode_ctl_reg;
329 clk_disable(kbd->clk);
339 struct spear_kbd *kbd = platform_get_drvdata(pdev);
340 struct input_dev *input_dev = kbd->input;
345 if (kbd->irq_wake_enabled) {
346 kbd->irq_wake_enabled = false;
347 disable_irq_wake(kbd->irq);
351 clk_enable(kbd->clk);
356 writel_relaxed(kbd->mode_ctl_reg, kbd->io_base + MODE_CTL_REG);
368 { .compatible = "st,spear300-kbd" },