Lines Matching full:keys

107 	struct mtk_pmic_keys *keys;  member
119 struct mtk_pmic_keys_info keys[MTK_PMIC_MAX_KEY_COUNT]; member
128 static void mtk_pmic_keys_lp_reset_setup(struct mtk_pmic_keys *keys, in mtk_pmic_keys_lp_reset_setup() argument
136 kregs_home = keys->keys[MTK_PMIC_HOMEKEY_INDEX].regs; in mtk_pmic_keys_lp_reset_setup()
137 kregs_pwr = keys->keys[MTK_PMIC_PWRKEY_INDEX].regs; in mtk_pmic_keys_lp_reset_setup()
139 error = of_property_read_u32(keys->dev->of_node, "power-off-time-sec", in mtk_pmic_keys_lp_reset_setup()
147 error = of_property_read_u32(keys->dev->of_node, in mtk_pmic_keys_lp_reset_setup()
171 regmap_update_bits(keys->regmap, regs->pmic_rst_reg, mask, value); in mtk_pmic_keys_lp_reset_setup()
179 regmap_read(info->keys->regmap, info->regs->deb_reg, &key_deb); in mtk_pmic_keys_irq_handler_thread()
185 input_report_key(info->keys->input_dev, info->keycode, pressed); in mtk_pmic_keys_irq_handler_thread()
186 input_sync(info->keys->input_dev); in mtk_pmic_keys_irq_handler_thread()
188 dev_dbg(info->keys->dev, "(%s) key =%d using PMIC\n", in mtk_pmic_keys_irq_handler_thread()
194 static int mtk_pmic_key_setup(struct mtk_pmic_keys *keys, in mtk_pmic_key_setup() argument
199 info->keys = keys; in mtk_pmic_key_setup()
201 ret = regmap_update_bits(keys->regmap, info->regs->intsel_reg, in mtk_pmic_key_setup()
207 ret = devm_request_threaded_irq(keys->dev, info->irq, NULL, in mtk_pmic_key_setup()
210 "mtk-pmic-keys", info); in mtk_pmic_key_setup()
212 dev_err(keys->dev, "Failed to request IRQ: %d: %d\n", in mtk_pmic_key_setup()
218 ret = devm_request_threaded_irq(keys->dev, info->irq_r, NULL, in mtk_pmic_key_setup()
221 "mtk-pmic-keys", info); in mtk_pmic_key_setup()
223 dev_err(keys->dev, "Failed to request IRQ_r: %d: %d\n", in mtk_pmic_key_setup()
229 input_set_capability(keys->input_dev, EV_KEY, info->keycode); in mtk_pmic_key_setup()
236 struct mtk_pmic_keys *keys = dev_get_drvdata(dev); in mtk_pmic_keys_suspend() local
240 if (keys->keys[index].wakeup) { in mtk_pmic_keys_suspend()
241 enable_irq_wake(keys->keys[index].irq); in mtk_pmic_keys_suspend()
242 if (keys->keys[index].irq_r > 0) in mtk_pmic_keys_suspend()
243 enable_irq_wake(keys->keys[index].irq_r); in mtk_pmic_keys_suspend()
252 struct mtk_pmic_keys *keys = dev_get_drvdata(dev); in mtk_pmic_keys_resume() local
256 if (keys->keys[index].wakeup) { in mtk_pmic_keys_resume()
257 disable_irq_wake(keys->keys[index].irq); in mtk_pmic_keys_resume()
258 if (keys->keys[index].irq_r > 0) in mtk_pmic_keys_resume()
259 disable_irq_wake(keys->keys[index].irq_r); in mtk_pmic_keys_resume()
271 .compatible = "mediatek,mt6397-keys",
274 .compatible = "mediatek,mt6323-keys",
277 .compatible = "mediatek,mt6331-keys",
280 .compatible = "mediatek,mt6358-keys",
296 struct mtk_pmic_keys *keys; in mtk_pmic_keys_probe() local
302 keys = devm_kzalloc(&pdev->dev, sizeof(*keys), GFP_KERNEL); in mtk_pmic_keys_probe()
303 if (!keys) in mtk_pmic_keys_probe()
306 keys->dev = &pdev->dev; in mtk_pmic_keys_probe()
307 keys->regmap = pmic_chip->regmap; in mtk_pmic_keys_probe()
310 keys->input_dev = input_dev = devm_input_allocate_device(keys->dev); in mtk_pmic_keys_probe()
312 dev_err(keys->dev, "input allocate device fail.\n"); in mtk_pmic_keys_probe()
316 input_dev->name = "mtk-pmic-keys"; in mtk_pmic_keys_probe()
325 dev_err(keys->dev, "too many keys defined (%d)\n", keycount); in mtk_pmic_keys_probe()
330 keys->keys[index].regs = &mtk_pmic_regs->keys_regs[index]; in mtk_pmic_keys_probe()
332 keys->keys[index].irq = in mtk_pmic_keys_probe()
334 if (keys->keys[index].irq < 0) { in mtk_pmic_keys_probe()
336 return keys->keys[index].irq; in mtk_pmic_keys_probe()
339 if (of_device_is_compatible(node, "mediatek,mt6358-keys")) { in mtk_pmic_keys_probe()
340 keys->keys[index].irq_r = platform_get_irq_byname(pdev, in mtk_pmic_keys_probe()
343 if (keys->keys[index].irq_r < 0) { in mtk_pmic_keys_probe()
345 return keys->keys[index].irq_r; in mtk_pmic_keys_probe()
350 "linux,keycodes", &keys->keys[index].keycode); in mtk_pmic_keys_probe()
352 dev_err(keys->dev, in mtk_pmic_keys_probe()
360 keys->keys[index].wakeup = true; in mtk_pmic_keys_probe()
362 error = mtk_pmic_key_setup(keys, &keys->keys[index]); in mtk_pmic_keys_probe()
378 mtk_pmic_keys_lp_reset_setup(keys, mtk_pmic_regs); in mtk_pmic_keys_probe()
380 platform_set_drvdata(pdev, keys); in mtk_pmic_keys_probe()
388 .name = "mtk-pmic-keys",
398 MODULE_DESCRIPTION("MTK pmic-keys driver v0.1");