Lines Matching refs:keys
78 struct mtk_pmic_keys *keys; member
89 struct mtk_pmic_keys_info keys[MTK_PMIC_MAX_KEY_COUNT]; member
98 static void mtk_pmic_keys_lp_reset_setup(struct mtk_pmic_keys *keys, in mtk_pmic_keys_lp_reset_setup() argument
104 ret = of_property_read_u32(keys->dev->of_node, in mtk_pmic_keys_lp_reset_setup()
109 regmap_update_bits(keys->regmap, pmic_rst_reg, in mtk_pmic_keys_lp_reset_setup()
113 ret = of_property_read_u32(keys->dev->of_node, in mtk_pmic_keys_lp_reset_setup()
120 regmap_update_bits(keys->regmap, pmic_rst_reg, in mtk_pmic_keys_lp_reset_setup()
123 regmap_update_bits(keys->regmap, pmic_rst_reg, in mtk_pmic_keys_lp_reset_setup()
128 regmap_update_bits(keys->regmap, pmic_rst_reg, in mtk_pmic_keys_lp_reset_setup()
131 regmap_update_bits(keys->regmap, pmic_rst_reg, in mtk_pmic_keys_lp_reset_setup()
136 regmap_update_bits(keys->regmap, pmic_rst_reg, in mtk_pmic_keys_lp_reset_setup()
139 regmap_update_bits(keys->regmap, pmic_rst_reg, in mtk_pmic_keys_lp_reset_setup()
153 regmap_read(info->keys->regmap, info->regs->deb_reg, &key_deb); in mtk_pmic_keys_irq_handler_thread()
159 input_report_key(info->keys->input_dev, info->keycode, pressed); in mtk_pmic_keys_irq_handler_thread()
160 input_sync(info->keys->input_dev); in mtk_pmic_keys_irq_handler_thread()
162 dev_dbg(info->keys->dev, "(%s) key =%d using PMIC\n", in mtk_pmic_keys_irq_handler_thread()
168 static int mtk_pmic_key_setup(struct mtk_pmic_keys *keys, in mtk_pmic_key_setup() argument
173 info->keys = keys; in mtk_pmic_key_setup()
175 ret = regmap_update_bits(keys->regmap, info->regs->intsel_reg, in mtk_pmic_key_setup()
181 ret = devm_request_threaded_irq(keys->dev, info->irq, NULL, in mtk_pmic_key_setup()
186 dev_err(keys->dev, "Failed to request IRQ: %d: %d\n", in mtk_pmic_key_setup()
191 input_set_capability(keys->input_dev, EV_KEY, info->keycode); in mtk_pmic_key_setup()
198 struct mtk_pmic_keys *keys = dev_get_drvdata(dev); in mtk_pmic_keys_suspend() local
202 if (keys->keys[index].wakeup) in mtk_pmic_keys_suspend()
203 enable_irq_wake(keys->keys[index].irq); in mtk_pmic_keys_suspend()
211 struct mtk_pmic_keys *keys = dev_get_drvdata(dev); in mtk_pmic_keys_resume() local
215 if (keys->keys[index].wakeup) in mtk_pmic_keys_resume()
216 disable_irq_wake(keys->keys[index].irq); in mtk_pmic_keys_resume()
244 struct mtk_pmic_keys *keys; in mtk_pmic_keys_probe() local
250 keys = devm_kzalloc(&pdev->dev, sizeof(*keys), GFP_KERNEL); in mtk_pmic_keys_probe()
251 if (!keys) in mtk_pmic_keys_probe()
254 keys->dev = &pdev->dev; in mtk_pmic_keys_probe()
255 keys->regmap = pmic_chip->regmap; in mtk_pmic_keys_probe()
258 keys->input_dev = input_dev = devm_input_allocate_device(keys->dev); in mtk_pmic_keys_probe()
260 dev_err(keys->dev, "input allocate device fail.\n"); in mtk_pmic_keys_probe()
272 dev_err(keys->dev, "too many keys defined (%d)\n", keycount); in mtk_pmic_keys_probe()
277 keys->keys[index].regs = &mtk_pmic_regs->keys_regs[index]; in mtk_pmic_keys_probe()
279 keys->keys[index].irq = platform_get_irq(pdev, index); in mtk_pmic_keys_probe()
280 if (keys->keys[index].irq < 0) { in mtk_pmic_keys_probe()
282 return keys->keys[index].irq; in mtk_pmic_keys_probe()
286 "linux,keycodes", &keys->keys[index].keycode); in mtk_pmic_keys_probe()
288 dev_err(keys->dev, in mtk_pmic_keys_probe()
296 keys->keys[index].wakeup = true; in mtk_pmic_keys_probe()
298 error = mtk_pmic_key_setup(keys, &keys->keys[index]); in mtk_pmic_keys_probe()
314 mtk_pmic_keys_lp_reset_setup(keys, mtk_pmic_regs->pmic_rst_reg); in mtk_pmic_keys_probe()
316 platform_set_drvdata(pdev, keys); in mtk_pmic_keys_probe()