Lines Matching defs:onkey
74 static int atc2603x_onkey_hw_init(struct atc260x_onkey *onkey,
80 reg_bm = onkey->params->long_int_pnd_bm |
81 onkey->params->short_int_pnd_bm |
82 onkey->params->kdwn_int_pnd_bm |
83 onkey->params->press_int_en_bm |
84 onkey->params->kdwn_int_en_bm;
87 reg_bm |= onkey->params->press_time_bm;
90 reg_bm |= onkey->params->reset_en_bm;
92 reg_bm |= onkey->params->reset_en_bm |
93 onkey->params->reset_time_bm;
94 reg_val |= onkey->params->reset_en_bm | reset_time;
97 return regmap_update_bits(onkey->atc260x->regmap,
98 onkey->params->reg_int_ctl, reg_bm, reg_val);
101 static void atc260x_onkey_query(struct atc260x_onkey *onkey)
106 ret = regmap_read(onkey->atc260x->regmap,
107 onkey->params->reg_int_ctl, &key_down);
110 dev_err(onkey->atc260x->dev,
111 "Failed to read onkey status: %d\n", ret);
113 key_down &= onkey->params->kdwn_state_bm;
117 * The hardware generates interrupt only when the onkey pin is
122 schedule_delayed_work(&onkey->work, msecs_to_jiffies(200));
130 input_report_key(onkey->input_dev, KEY_POWER, 0);
131 input_sync(onkey->input_dev);
133 reg_bits = onkey->params->long_int_pnd_bm |
134 onkey->params->short_int_pnd_bm |
135 onkey->params->kdwn_int_pnd_bm |
136 onkey->params->press_int_en_bm |
137 onkey->params->kdwn_int_en_bm;
140 regmap_update_bits(onkey->atc260x->regmap, onkey->params->reg_int_ctl,
146 struct atc260x_onkey *onkey = container_of(work, struct atc260x_onkey,
148 atc260x_onkey_query(onkey);
153 struct atc260x_onkey *onkey = data;
157 ret = regmap_update_bits(onkey->atc260x->regmap,
158 onkey->params->reg_int_ctl,
159 onkey->params->press_int_en_bm |
160 onkey->params->kdwn_int_en_bm, 0);
162 dev_err(onkey->atc260x->dev,
165 input_report_key(onkey->input_dev, KEY_POWER, 1);
166 input_sync(onkey->input_dev);
168 atc260x_onkey_query(onkey);
175 struct atc260x_onkey *onkey = input_get_drvdata(dev);
177 enable_irq(onkey->irq);
184 struct atc260x_onkey *onkey = input_get_drvdata(dev);
186 disable_irq(onkey->irq);
187 cancel_delayed_work_sync(&onkey->work);
193 struct atc260x_onkey *onkey;
199 onkey = devm_kzalloc(&pdev->dev, sizeof(*onkey), GFP_KERNEL);
200 if (!onkey)
222 onkey->params = &atc2603c_onkey_params;
229 onkey->params = &atc2609a_onkey_params;
248 onkey->input_dev = input_dev;
249 onkey->atc260x = atc260x;
251 input_dev->name = "atc260x-onkey";
252 input_dev->phys = "atc260x-onkey/input0";
257 input_set_drvdata(input_dev, onkey);
259 INIT_DELAYED_WORK(&onkey->work, atc260x_onkey_work);
261 onkey->irq = platform_get_irq(pdev, 0);
262 if (onkey->irq < 0)
263 return onkey->irq;
265 error = devm_request_threaded_irq(&pdev->dev, onkey->irq, NULL,
267 dev_name(&pdev->dev), onkey);
270 "Failed to register IRQ %d: %d\n", onkey->irq, error);
275 disable_irq(onkey->irq);
284 error = atc2603x_onkey_hw_init(onkey, reset_status,
297 .name = "atc260x-onkey",