Lines Matching refs:keys

121 	struct mtk_pmic_keys *keys;
133 struct mtk_pmic_keys_info keys[MTK_PMIC_MAX_KEY_COUNT];
142 static void mtk_pmic_keys_lp_reset_setup(struct mtk_pmic_keys *keys,
150 kregs_home = keys->keys[MTK_PMIC_HOMEKEY_INDEX].regs;
151 kregs_pwr = keys->keys[MTK_PMIC_PWRKEY_INDEX].regs;
153 error = of_property_read_u32(keys->dev->of_node, "power-off-time-sec",
161 error = of_property_read_u32(keys->dev->of_node,
185 regmap_update_bits(keys->regmap, regs->pmic_rst_reg, mask, value);
193 regmap_read(info->keys->regmap, info->regs->deb_reg, &key_deb);
199 input_report_key(info->keys->input_dev, info->keycode, pressed);
200 input_sync(info->keys->input_dev);
202 dev_dbg(info->keys->dev, "(%s) key =%d using PMIC\n",
208 static int mtk_pmic_key_setup(struct mtk_pmic_keys *keys,
213 info->keys = keys;
215 ret = regmap_update_bits(keys->regmap, info->regs->intsel_reg,
221 ret = devm_request_threaded_irq(keys->dev, info->irq, NULL,
224 "mtk-pmic-keys", info);
226 dev_err(keys->dev, "Failed to request IRQ: %d: %d\n",
232 ret = devm_request_threaded_irq(keys->dev, info->irq_r, NULL,
235 "mtk-pmic-keys", info);
237 dev_err(keys->dev, "Failed to request IRQ_r: %d: %d\n",
243 input_set_capability(keys->input_dev, EV_KEY, info->keycode);
250 struct mtk_pmic_keys *keys = dev_get_drvdata(dev);
254 if (keys->keys[index].wakeup) {
255 enable_irq_wake(keys->keys[index].irq);
256 if (keys->keys[index].irq_r > 0)
257 enable_irq_wake(keys->keys[index].irq_r);
266 struct mtk_pmic_keys *keys = dev_get_drvdata(dev);
270 if (keys->keys[index].wakeup) {
271 disable_irq_wake(keys->keys[index].irq);
272 if (keys->keys[index].irq_r > 0)
273 disable_irq_wake(keys->keys[index].irq_r);
285 .compatible = "mediatek,mt6397-keys",
288 .compatible = "mediatek,mt6323-keys",
291 .compatible = "mediatek,mt6331-keys",
294 .compatible = "mediatek,mt6357-keys",
297 .compatible = "mediatek,mt6358-keys",
313 struct mtk_pmic_keys *keys;
319 keys = devm_kzalloc(&pdev->dev, sizeof(*keys), GFP_KERNEL);
320 if (!keys)
323 keys->dev = &pdev->dev;
324 keys->regmap = pmic_chip->regmap;
327 keys->input_dev = input_dev = devm_input_allocate_device(keys->dev);
329 dev_err(keys->dev, "input allocate device fail.\n");
333 input_dev->name = "mtk-pmic-keys";
342 dev_err(keys->dev, "too many keys defined (%d)\n", keycount);
347 keys->keys[index].regs = &mtk_pmic_regs->keys_regs[index];
349 keys->keys[index].irq =
351 if (keys->keys[index].irq < 0) {
353 return keys->keys[index].irq;
356 if (of_device_is_compatible(node, "mediatek,mt6358-keys")) {
357 keys->keys[index].irq_r = platform_get_irq_byname(pdev,
360 if (keys->keys[index].irq_r < 0) {
362 return keys->keys[index].irq_r;
367 "linux,keycodes", &keys->keys[index].keycode);
369 dev_err(keys->dev,
377 keys->keys[index].wakeup = true;
379 error = mtk_pmic_key_setup(keys, &keys->keys[index]);
395 mtk_pmic_keys_lp_reset_setup(keys, mtk_pmic_regs);
397 platform_set_drvdata(pdev, keys);
405 .name = "mtk-pmic-keys",
415 MODULE_DESCRIPTION("MTK pmic-keys driver v0.1");