Lines Matching refs:rotary

55 static void report_rotary_event(struct bfin_rot *rotary, int delta)  in report_rotary_event()  argument
57 struct input_dev *input = rotary->input; in report_rotary_event()
59 if (rotary->up_key) { in report_rotary_event()
61 delta > 0 ? rotary->up_key : rotary->down_key); in report_rotary_event()
63 input_report_rel(input, rotary->rel_code, delta); in report_rotary_event()
70 struct bfin_rot *rotary = dev_id; in bfin_rotary_isr() local
73 switch (readw(rotary->base + CNT_STATUS_OFF)) { in bfin_rotary_isr()
80 delta = readl(rotary->base + CNT_COUNTER_OFF); in bfin_rotary_isr()
82 report_rotary_event(rotary, delta); in bfin_rotary_isr()
86 report_key_event(rotary->input, rotary->button_key); in bfin_rotary_isr()
93 writew(W1LCNT_ZERO, rotary->base + CNT_COMMAND_OFF); /* Clear COUNTER */ in bfin_rotary_isr()
94 writew(-1, rotary->base + CNT_STATUS_OFF); /* Clear STATUS */ in bfin_rotary_isr()
101 struct bfin_rot *rotary = input_get_drvdata(input); in bfin_rotary_open() local
104 if (rotary->mode & ROT_DEBE) in bfin_rotary_open()
105 writew(rotary->debounce & DPRESCALE, in bfin_rotary_open()
106 rotary->base + CNT_DEBOUNCE_OFF); in bfin_rotary_open()
108 writew(rotary->mode & ~CNTE, rotary->base + CNT_CONFIG_OFF); in bfin_rotary_open()
111 if (rotary->button_key) in bfin_rotary_open()
113 writew(val, rotary->base + CNT_IMASK_OFF); in bfin_rotary_open()
115 writew(rotary->mode | CNTE, rotary->base + CNT_CONFIG_OFF); in bfin_rotary_open()
122 struct bfin_rot *rotary = input_get_drvdata(input); in bfin_rotary_close() local
124 writew(0, rotary->base + CNT_CONFIG_OFF); in bfin_rotary_close()
125 writew(0, rotary->base + CNT_IMASK_OFF); in bfin_rotary_close()
137 struct bfin_rot *rotary; in bfin_rotary_probe() local
167 rotary = devm_kzalloc(dev, sizeof(struct bfin_rot), GFP_KERNEL); in bfin_rotary_probe()
168 if (!rotary) in bfin_rotary_probe()
172 rotary->base = devm_ioremap_resource(dev, res); in bfin_rotary_probe()
173 if (IS_ERR(rotary->base)) in bfin_rotary_probe()
174 return PTR_ERR(rotary->base); in bfin_rotary_probe()
180 rotary->input = input; in bfin_rotary_probe()
182 rotary->up_key = pdata->rotary_up_key; in bfin_rotary_probe()
183 rotary->down_key = pdata->rotary_down_key; in bfin_rotary_probe()
184 rotary->button_key = pdata->rotary_button_key; in bfin_rotary_probe()
185 rotary->rel_code = pdata->rotary_rel_code; in bfin_rotary_probe()
187 rotary->mode = pdata->mode; in bfin_rotary_probe()
188 rotary->debounce = pdata->debounce; in bfin_rotary_probe()
194 input_set_drvdata(input, rotary); in bfin_rotary_probe()
204 if (rotary->up_key) { in bfin_rotary_probe()
206 __set_bit(rotary->up_key, input->keybit); in bfin_rotary_probe()
207 __set_bit(rotary->down_key, input->keybit); in bfin_rotary_probe()
210 __set_bit(rotary->rel_code, input->relbit); in bfin_rotary_probe()
213 if (rotary->button_key) { in bfin_rotary_probe()
215 __set_bit(rotary->button_key, input->keybit); in bfin_rotary_probe()
221 rotary->irq = platform_get_irq(pdev, 0); in bfin_rotary_probe()
222 if (rotary->irq < 0) { in bfin_rotary_probe()
227 error = devm_request_irq(dev, rotary->irq, bfin_rotary_isr, in bfin_rotary_probe()
228 0, dev_name(dev), rotary); in bfin_rotary_probe()
231 rotary->irq, error); in bfin_rotary_probe()
241 platform_set_drvdata(pdev, rotary); in bfin_rotary_probe()
250 struct bfin_rot *rotary = platform_get_drvdata(pdev); in bfin_rotary_suspend() local
252 rotary->cnt_config = readw(rotary->base + CNT_CONFIG_OFF); in bfin_rotary_suspend()
253 rotary->cnt_imask = readw(rotary->base + CNT_IMASK_OFF); in bfin_rotary_suspend()
254 rotary->cnt_debounce = readw(rotary->base + CNT_DEBOUNCE_OFF); in bfin_rotary_suspend()
257 enable_irq_wake(rotary->irq); in bfin_rotary_suspend()
265 struct bfin_rot *rotary = platform_get_drvdata(pdev); in bfin_rotary_resume() local
267 writew(rotary->cnt_debounce, rotary->base + CNT_DEBOUNCE_OFF); in bfin_rotary_resume()
268 writew(rotary->cnt_imask, rotary->base + CNT_IMASK_OFF); in bfin_rotary_resume()
269 writew(rotary->cnt_config & ~CNTE, rotary->base + CNT_CONFIG_OFF); in bfin_rotary_resume()
272 disable_irq_wake(rotary->irq); in bfin_rotary_resume()
274 if (rotary->cnt_config & CNTE) in bfin_rotary_resume()
275 writew(rotary->cnt_config, rotary->base + CNT_CONFIG_OFF); in bfin_rotary_resume()