Lines Matching refs:keys
135 struct mtk_pmic_keys *keys; member
147 struct mtk_pmic_keys_info keys[MTK_PMIC_MAX_KEY_COUNT]; member
156 static void mtk_pmic_keys_lp_reset_setup(struct mtk_pmic_keys *keys, in mtk_pmic_keys_lp_reset_setup() argument
167 error = of_property_read_u32(keys->dev->of_node, "power-off-time-sec", in mtk_pmic_keys_lp_reset_setup()
175 error = of_property_read_u32(keys->dev->of_node, in mtk_pmic_keys_lp_reset_setup()
199 regmap_update_bits(keys->regmap, regs->pmic_rst_reg, mask, value); in mtk_pmic_keys_lp_reset_setup()
207 regmap_read(info->keys->regmap, info->regs->deb_reg, &key_deb); in mtk_pmic_keys_irq_handler_thread()
213 input_report_key(info->keys->input_dev, info->keycode, pressed); in mtk_pmic_keys_irq_handler_thread()
214 input_sync(info->keys->input_dev); in mtk_pmic_keys_irq_handler_thread()
216 dev_dbg(info->keys->dev, "(%s) key =%d using PMIC\n", in mtk_pmic_keys_irq_handler_thread()
222 static int mtk_pmic_key_setup(struct mtk_pmic_keys *keys, in mtk_pmic_key_setup() argument
227 info->keys = keys; in mtk_pmic_key_setup()
229 ret = regmap_update_bits(keys->regmap, info->regs->intsel_reg, in mtk_pmic_key_setup()
235 ret = devm_request_threaded_irq(keys->dev, info->irq, NULL, in mtk_pmic_key_setup()
240 dev_err(keys->dev, "Failed to request IRQ: %d: %d\n", in mtk_pmic_key_setup()
246 ret = devm_request_threaded_irq(keys->dev, info->irq_r, NULL, in mtk_pmic_key_setup()
251 dev_err(keys->dev, "Failed to request IRQ_r: %d: %d\n", in mtk_pmic_key_setup()
257 input_set_capability(keys->input_dev, EV_KEY, info->keycode); in mtk_pmic_key_setup()
264 struct mtk_pmic_keys *keys = dev_get_drvdata(dev); in mtk_pmic_keys_suspend() local
268 if (keys->keys[index].wakeup) { in mtk_pmic_keys_suspend()
269 enable_irq_wake(keys->keys[index].irq); in mtk_pmic_keys_suspend()
270 if (keys->keys[index].irq_r > 0) in mtk_pmic_keys_suspend()
271 enable_irq_wake(keys->keys[index].irq_r); in mtk_pmic_keys_suspend()
280 struct mtk_pmic_keys *keys = dev_get_drvdata(dev); in mtk_pmic_keys_resume() local
284 if (keys->keys[index].wakeup) { in mtk_pmic_keys_resume()
285 disable_irq_wake(keys->keys[index].irq); in mtk_pmic_keys_resume()
286 if (keys->keys[index].irq_r > 0) in mtk_pmic_keys_resume()
287 disable_irq_wake(keys->keys[index].irq_r); in mtk_pmic_keys_resume()
330 struct mtk_pmic_keys *keys; in mtk_pmic_keys_probe() local
336 keys = devm_kzalloc(&pdev->dev, sizeof(*keys), GFP_KERNEL); in mtk_pmic_keys_probe()
337 if (!keys) in mtk_pmic_keys_probe()
340 keys->dev = &pdev->dev; in mtk_pmic_keys_probe()
341 keys->regmap = pmic_chip->regmap; in mtk_pmic_keys_probe()
344 keys->input_dev = input_dev = devm_input_allocate_device(keys->dev); in mtk_pmic_keys_probe()
346 dev_err(keys->dev, "input allocate device fail.\n"); in mtk_pmic_keys_probe()
359 dev_err(keys->dev, "too many keys defined (%d)\n", keycount); in mtk_pmic_keys_probe()
364 keys->keys[index].regs = &mtk_pmic_regs->keys_regs[index]; in mtk_pmic_keys_probe()
366 keys->keys[index].irq = in mtk_pmic_keys_probe()
368 if (keys->keys[index].irq < 0) in mtk_pmic_keys_probe()
369 return keys->keys[index].irq; in mtk_pmic_keys_probe()
372 keys->keys[index].irq_r = platform_get_irq_byname(pdev, in mtk_pmic_keys_probe()
375 if (keys->keys[index].irq_r < 0) in mtk_pmic_keys_probe()
376 return keys->keys[index].irq_r; in mtk_pmic_keys_probe()
380 "linux,keycodes", &keys->keys[index].keycode); in mtk_pmic_keys_probe()
382 dev_err(keys->dev, in mtk_pmic_keys_probe()
389 keys->keys[index].wakeup = true; in mtk_pmic_keys_probe()
391 error = mtk_pmic_key_setup(keys, &keys->keys[index]); in mtk_pmic_keys_probe()
405 mtk_pmic_keys_lp_reset_setup(keys, mtk_pmic_regs); in mtk_pmic_keys_probe()
407 platform_set_drvdata(pdev, keys); in mtk_pmic_keys_probe()