Lines Matching refs:keypad_data

88 static int kbd_readl(struct omap4_keypad *keypad_data, u32 offset)
90 return __raw_readl(keypad_data->base +
91 keypad_data->reg_offset + offset);
94 static void kbd_writel(struct omap4_keypad *keypad_data, u32 offset, u32 value)
97 keypad_data->base + keypad_data->reg_offset + offset);
100 static int kbd_read_irqreg(struct omap4_keypad *keypad_data, u32 offset)
102 return __raw_readl(keypad_data->base +
103 keypad_data->irqreg_offset + offset);
106 static void kbd_write_irqreg(struct omap4_keypad *keypad_data,
110 keypad_data->base + keypad_data->irqreg_offset + offset);
113 static int omap4_keypad_report_keys(struct omap4_keypad *keypad_data,
116 struct input_dev *input_dev = keypad_data->input;
124 for_each_set_bit(bit, mask, keypad_data->rows * BITS_PER_BYTE) {
127 code = MATRIX_SCAN_CODE(row, col, keypad_data->row_shift);
130 input_report_key(input_dev, keypad_data->keymap[code], down);
141 static void omap4_keypad_scan_keys(struct omap4_keypad *keypad_data, u64 keys)
145 mutex_lock(&keypad_data->lock);
147 changed = keys ^ keypad_data->keys;
153 omap4_keypad_report_keys(keypad_data, changed & ~keys, false);
156 omap4_keypad_report_keys(keypad_data, changed & keys, true);
158 keypad_data->keys = keys;
160 mutex_unlock(&keypad_data->lock);
166 struct omap4_keypad *keypad_data = dev_id;
168 if (kbd_read_irqreg(keypad_data, OMAP4_KBD_IRQSTATUS))
176 struct omap4_keypad *keypad_data = dev_id;
177 struct device *dev = keypad_data->input->dev.parent;
186 low = kbd_readl(keypad_data, OMAP4_KBD_FULLCODE31_0);
187 high = kbd_readl(keypad_data, OMAP4_KBD_FULLCODE63_32);
190 omap4_keypad_scan_keys(keypad_data, keys);
193 kbd_write_irqreg(keypad_data, OMAP4_KBD_IRQSTATUS,
194 kbd_read_irqreg(keypad_data, OMAP4_KBD_IRQSTATUS));
204 struct omap4_keypad *keypad_data = input_get_drvdata(input);
212 disable_irq(keypad_data->irq);
214 kbd_writel(keypad_data, OMAP4_KBD_CTRL,
217 kbd_writel(keypad_data, OMAP4_KBD_DEBOUNCINGTIME,
220 kbd_write_irqreg(keypad_data, OMAP4_KBD_IRQSTATUS,
221 kbd_read_irqreg(keypad_data, OMAP4_KBD_IRQSTATUS));
222 kbd_write_irqreg(keypad_data, OMAP4_KBD_IRQENABLE,
224 kbd_writel(keypad_data, OMAP4_KBD_WAKEUPENABLE,
227 enable_irq(keypad_data->irq);
235 static void omap4_keypad_stop(struct omap4_keypad *keypad_data)
238 kbd_write_irqreg(keypad_data, OMAP4_KBD_IRQENABLE,
240 kbd_writel(keypad_data, OMAP4_KBD_WAKEUPENABLE, 0);
243 kbd_write_irqreg(keypad_data, OMAP4_KBD_IRQSTATUS,
244 kbd_read_irqreg(keypad_data, OMAP4_KBD_IRQSTATUS));
249 struct omap4_keypad *keypad_data = input_get_drvdata(input);
258 disable_irq(keypad_data->irq);
259 omap4_keypad_stop(keypad_data);
260 enable_irq(keypad_data->irq);
267 struct omap4_keypad *keypad_data)
272 err = matrix_keypad_parse_properties(dev, &keypad_data->rows,
273 &keypad_data->cols);
277 keypad_data->no_autorepeat = of_property_read_bool(np, "linux,input-no-autorepeat");
283 struct omap4_keypad *keypad_data)
287 rev = __raw_readl(keypad_data->base + OMAP4_KBD_REVISION);
292 keypad_data->reg_offset = 0x00;
293 keypad_data->irqreg_offset = 0x00;
296 keypad_data->reg_offset = 0x10;
297 keypad_data->irqreg_offset = 0x0c;
315 struct omap4_keypad *keypad_data = platform_get_drvdata(pdev);
318 active = kbd_readl(keypad_data, OMAP4_KBD_STATEMACHINE);
324 omap4_keypad_scan_keys(keypad_data, 0);
342 struct omap4_keypad *keypad_data;
352 keypad_data = devm_kzalloc(dev, sizeof(*keypad_data), GFP_KERNEL);
353 if (!keypad_data) {
354 dev_err(dev, "keypad_data memory allocation failed\n");
358 keypad_data->irq = irq;
359 mutex_init(&keypad_data->lock);
360 platform_set_drvdata(pdev, keypad_data);
362 error = omap4_keypad_parse_dt(dev, keypad_data);
366 keypad_data->base = devm_platform_ioremap_resource(pdev, 0);
367 if (IS_ERR(keypad_data->base))
368 return PTR_ERR(keypad_data->base);
390 error = omap4_keypad_check_revision(dev, keypad_data);
393 omap4_keypad_stop(keypad_data);
402 keypad_data->input = input_dev = devm_input_allocate_device(dev);
416 if (!keypad_data->no_autorepeat)
419 input_set_drvdata(input_dev, keypad_data);
421 keypad_data->row_shift = get_count_order(keypad_data->cols);
422 max_keys = keypad_data->rows << keypad_data->row_shift;
423 keypad_data->keymap = devm_kcalloc(dev,
425 sizeof(keypad_data->keymap[0]),
427 if (!keypad_data->keymap) {
433 keypad_data->rows, keypad_data->cols,
434 keypad_data->keymap, input_dev);
440 error = devm_request_threaded_irq(dev, keypad_data->irq,
444 "omap4-keypad", keypad_data);
450 error = input_register_device(keypad_data->input);
457 error = dev_pm_set_wake_irq(dev, keypad_data->irq);