Lines Matching refs:keys
88 struct mtk_pmic_keys *keys; member
99 struct mtk_pmic_keys_info keys[MTK_PMIC_MAX_KEY_COUNT]; member
108 static void mtk_pmic_keys_lp_reset_setup(struct mtk_pmic_keys *keys, in mtk_pmic_keys_lp_reset_setup() argument
114 ret = of_property_read_u32(keys->dev->of_node, in mtk_pmic_keys_lp_reset_setup()
119 regmap_update_bits(keys->regmap, pmic_rst_reg, in mtk_pmic_keys_lp_reset_setup()
123 ret = of_property_read_u32(keys->dev->of_node, in mtk_pmic_keys_lp_reset_setup()
130 regmap_update_bits(keys->regmap, pmic_rst_reg, in mtk_pmic_keys_lp_reset_setup()
133 regmap_update_bits(keys->regmap, pmic_rst_reg, in mtk_pmic_keys_lp_reset_setup()
138 regmap_update_bits(keys->regmap, pmic_rst_reg, in mtk_pmic_keys_lp_reset_setup()
141 regmap_update_bits(keys->regmap, pmic_rst_reg, in mtk_pmic_keys_lp_reset_setup()
146 regmap_update_bits(keys->regmap, pmic_rst_reg, in mtk_pmic_keys_lp_reset_setup()
149 regmap_update_bits(keys->regmap, pmic_rst_reg, in mtk_pmic_keys_lp_reset_setup()
163 regmap_read(info->keys->regmap, info->regs->deb_reg, &key_deb); in mtk_pmic_keys_irq_handler_thread()
169 input_report_key(info->keys->input_dev, info->keycode, pressed); in mtk_pmic_keys_irq_handler_thread()
170 input_sync(info->keys->input_dev); in mtk_pmic_keys_irq_handler_thread()
172 dev_dbg(info->keys->dev, "(%s) key =%d using PMIC\n", in mtk_pmic_keys_irq_handler_thread()
178 static int mtk_pmic_key_setup(struct mtk_pmic_keys *keys, in mtk_pmic_key_setup() argument
183 info->keys = keys; in mtk_pmic_key_setup()
185 ret = regmap_update_bits(keys->regmap, info->regs->intsel_reg, in mtk_pmic_key_setup()
191 ret = devm_request_threaded_irq(keys->dev, info->irq, NULL, in mtk_pmic_key_setup()
196 dev_err(keys->dev, "Failed to request IRQ: %d: %d\n", in mtk_pmic_key_setup()
201 input_set_capability(keys->input_dev, EV_KEY, info->keycode); in mtk_pmic_key_setup()
208 struct mtk_pmic_keys *keys = dev_get_drvdata(dev); in mtk_pmic_keys_suspend() local
212 if (keys->keys[index].wakeup) in mtk_pmic_keys_suspend()
213 enable_irq_wake(keys->keys[index].irq); in mtk_pmic_keys_suspend()
221 struct mtk_pmic_keys *keys = dev_get_drvdata(dev); in mtk_pmic_keys_resume() local
225 if (keys->keys[index].wakeup) in mtk_pmic_keys_resume()
226 disable_irq_wake(keys->keys[index].irq); in mtk_pmic_keys_resume()
254 struct mtk_pmic_keys *keys; in mtk_pmic_keys_probe() local
260 keys = devm_kzalloc(&pdev->dev, sizeof(*keys), GFP_KERNEL); in mtk_pmic_keys_probe()
261 if (!keys) in mtk_pmic_keys_probe()
264 keys->dev = &pdev->dev; in mtk_pmic_keys_probe()
265 keys->regmap = pmic_chip->regmap; in mtk_pmic_keys_probe()
268 keys->input_dev = input_dev = devm_input_allocate_device(keys->dev); in mtk_pmic_keys_probe()
270 dev_err(keys->dev, "input allocate device fail.\n"); in mtk_pmic_keys_probe()
282 dev_err(keys->dev, "too many keys defined (%d)\n", keycount); in mtk_pmic_keys_probe()
287 keys->keys[index].regs = &mtk_pmic_regs->keys_regs[index]; in mtk_pmic_keys_probe()
289 keys->keys[index].irq = platform_get_irq(pdev, index); in mtk_pmic_keys_probe()
290 if (keys->keys[index].irq < 0) in mtk_pmic_keys_probe()
291 return keys->keys[index].irq; in mtk_pmic_keys_probe()
294 "linux,keycodes", &keys->keys[index].keycode); in mtk_pmic_keys_probe()
296 dev_err(keys->dev, in mtk_pmic_keys_probe()
303 keys->keys[index].wakeup = true; in mtk_pmic_keys_probe()
305 error = mtk_pmic_key_setup(keys, &keys->keys[index]); in mtk_pmic_keys_probe()
319 mtk_pmic_keys_lp_reset_setup(keys, mtk_pmic_regs->pmic_rst_reg); in mtk_pmic_keys_probe()
321 platform_set_drvdata(pdev, keys); in mtk_pmic_keys_probe()