Lines Matching refs:ddata
88 static int remotectl_keybd_num_lookup(struct rkxx_remotectl_drvdata *ddata) in remotectl_keybd_num_lookup() argument
93 num = ddata->maxkeybdnum; in remotectl_keybd_num_lookup()
95 if (remotectl_button[i].usercode == (ddata->scandata&0xFFFF)) { in remotectl_keybd_num_lookup()
96 ddata->keynum = i; in remotectl_keybd_num_lookup()
104 static int remotectl_keycode_lookup(struct rkxx_remotectl_drvdata *ddata) in remotectl_keycode_lookup() argument
107 unsigned char keydata = (unsigned char)((ddata->scandata >> 8) & 0xff); in remotectl_keycode_lookup()
109 for (i = 0; i < remotectl_button[ddata->keynum].nbuttons; i++) { in remotectl_keycode_lookup()
110 if (remotectl_button[ddata->keynum].key_table[i].scancode == in remotectl_keycode_lookup()
112 ddata->keycode = in remotectl_keycode_lookup()
113 remotectl_button[ddata->keynum].key_table[i].keycode; in remotectl_keycode_lookup()
143 struct rkxx_remotectl_drvdata *ddata = platform_get_drvdata(pdev); in rk_remotectl_parse_ir_keys() local
178 if (boardnum > ddata->maxkeybdnum) in rk_remotectl_parse_ir_keys()
189 struct rkxx_remotectl_drvdata *ddata; in rk_pwm_remotectl_do_something() local
191 ddata = (struct rkxx_remotectl_drvdata *)data; in rk_pwm_remotectl_do_something()
192 switch (ddata->state) { in rk_pwm_remotectl_do_something()
198 mod_timer(&ddata->timer, jiffies + msecs_to_jiffies(140)); in rk_pwm_remotectl_do_something()
199 if ((ddata->period > RK_PWM_TIME_PRE_MIN) && in rk_pwm_remotectl_do_something()
200 (ddata->period < RK_PWM_TIME_PRE_MAX)) { in rk_pwm_remotectl_do_something()
201 ddata->scandata = 0; in rk_pwm_remotectl_do_something()
202 ddata->count = 0; in rk_pwm_remotectl_do_something()
203 ddata->state = RMC_USERCODE; in rk_pwm_remotectl_do_something()
205 ddata->state = RMC_PRELOAD; in rk_pwm_remotectl_do_something()
210 if ((ddata->period > RK_PWM_TIME_BIT1_MIN) && in rk_pwm_remotectl_do_something()
211 (ddata->period < RK_PWM_TIME_BIT1_MAX)) in rk_pwm_remotectl_do_something()
212 ddata->scandata |= (0x01 << ddata->count); in rk_pwm_remotectl_do_something()
213 ddata->count++; in rk_pwm_remotectl_do_something()
214 if (ddata->count == 0x10) { in rk_pwm_remotectl_do_something()
215 DBG_CODE("USERCODE=0x%x\n", ddata->scandata); in rk_pwm_remotectl_do_something()
216 if (remotectl_keybd_num_lookup(ddata)) { in rk_pwm_remotectl_do_something()
217 ddata->state = RMC_GETDATA; in rk_pwm_remotectl_do_something()
218 ddata->scandata = 0; in rk_pwm_remotectl_do_something()
219 ddata->count = 0; in rk_pwm_remotectl_do_something()
222 ddata->state = RMC_GETDATA; in rk_pwm_remotectl_do_something()
223 ddata->scandata = 0; in rk_pwm_remotectl_do_something()
224 ddata->count = 0; in rk_pwm_remotectl_do_something()
226 ddata->state = RMC_PRELOAD; in rk_pwm_remotectl_do_something()
232 if ((ddata->period > RK_PWM_TIME_BIT1_MIN) && in rk_pwm_remotectl_do_something()
233 (ddata->period < RK_PWM_TIME_BIT1_MAX)) in rk_pwm_remotectl_do_something()
234 ddata->scandata |= (0x01<<ddata->count); in rk_pwm_remotectl_do_something()
235 ddata->count++; in rk_pwm_remotectl_do_something()
236 if (ddata->count < 0x10) in rk_pwm_remotectl_do_something()
238 DBG_CODE("RMC_GETDATA=%x\n", (ddata->scandata>>8)); in rk_pwm_remotectl_do_something()
239 if ((ddata->scandata&0x0ff) == in rk_pwm_remotectl_do_something()
240 ((~ddata->scandata >> 8) & 0x0ff)) { in rk_pwm_remotectl_do_something()
241 if (remotectl_keycode_lookup(ddata)) { in rk_pwm_remotectl_do_something()
242 ddata->press = 1; in rk_pwm_remotectl_do_something()
243 input_event(ddata->input, EV_KEY, in rk_pwm_remotectl_do_something()
244 ddata->keycode, 1); in rk_pwm_remotectl_do_something()
245 input_sync(ddata->input); in rk_pwm_remotectl_do_something()
246 ddata->state = RMC_SEQUENCE; in rk_pwm_remotectl_do_something()
248 ddata->state = RMC_PRELOAD; in rk_pwm_remotectl_do_something()
251 ddata->state = RMC_PRELOAD; in rk_pwm_remotectl_do_something()
256 DBG("S=%ld\n", ddata->period); in rk_pwm_remotectl_do_something()
257 if ((ddata->period > RK_PWM_TIME_RPT_MIN) && in rk_pwm_remotectl_do_something()
258 (ddata->period < RK_PWM_TIME_RPT_MAX)) { in rk_pwm_remotectl_do_something()
260 mod_timer(&ddata->timer, jiffies in rk_pwm_remotectl_do_something()
262 } else if ((ddata->period > RK_PWM_TIME_SEQ1_MIN) && in rk_pwm_remotectl_do_something()
263 (ddata->period < RK_PWM_TIME_SEQ1_MAX)) { in rk_pwm_remotectl_do_something()
265 mod_timer(&ddata->timer, jiffies in rk_pwm_remotectl_do_something()
267 } else if ((ddata->period > RK_PWM_TIME_SEQ2_MIN) && in rk_pwm_remotectl_do_something()
268 (ddata->period < RK_PWM_TIME_SEQ2_MAX)) { in rk_pwm_remotectl_do_something()
270 mod_timer(&ddata->timer, jiffies in rk_pwm_remotectl_do_something()
274 input_event(ddata->input, EV_KEY, in rk_pwm_remotectl_do_something()
275 ddata->keycode, 0); in rk_pwm_remotectl_do_something()
276 input_sync(ddata->input); in rk_pwm_remotectl_do_something()
277 ddata->state = RMC_PRELOAD; in rk_pwm_remotectl_do_something()
278 ddata->press = 0; in rk_pwm_remotectl_do_something()
289 struct rkxx_remotectl_drvdata *ddata = from_timer(ddata, t, timer); in rk_pwm_remotectl_timer() local
291 if (ddata->press != ddata->pre_press) { in rk_pwm_remotectl_timer()
292 ddata->pre_press = 0; in rk_pwm_remotectl_timer()
293 ddata->press = 0; in rk_pwm_remotectl_timer()
294 input_event(ddata->input, EV_KEY, ddata->keycode, 0); in rk_pwm_remotectl_timer()
295 input_sync(ddata->input); in rk_pwm_remotectl_timer()
297 ddata->state = RMC_PRELOAD; in rk_pwm_remotectl_timer()
302 struct rkxx_remotectl_drvdata *ddata = dev_id; in rockchip_pwm_pwrirq() local
304 unsigned int id = ddata->remote_pwm_id; in rockchip_pwm_pwrirq()
309 val = readl_relaxed(ddata->base + PWM_REG_INTSTS(id)); in rockchip_pwm_pwrirq()
312 DBG("pwr=0x%x\n", readl_relaxed(ddata->base + PWM_PWRCAPTURE_VALUE(id))); in rockchip_pwm_pwrirq()
313 writel_relaxed(PWM_PWR_KEY_INT, ddata->base + PWM_REG_INTSTS(id)); in rockchip_pwm_pwrirq()
314 ddata->pwrkey_wakeup = 1; in rockchip_pwm_pwrirq()
323 struct rkxx_remotectl_drvdata *ddata = dev_id; in rockchip_pwm_irq() local
328 unsigned int id = ddata->remote_pwm_id; in rockchip_pwm_irq()
332 val = readl_relaxed(ddata->base + PWM_REG_INTSTS(id)); in rockchip_pwm_irq()
337 temp_hpr = readl_relaxed(ddata->base + PWM_REG_HPR); in rockchip_pwm_irq()
338 writel_relaxed(0, ddata->base + PWM_REG_HPR); in rockchip_pwm_irq()
339 temp_lpr = readl_relaxed(ddata->base + PWM_REG_LPR); in rockchip_pwm_irq()
340 writel_relaxed(0, ddata->base + PWM_REG_LPR); in rockchip_pwm_irq()
344 temp_period = ddata->pwm_freq_nstime * temp_lpr / 1000; in rockchip_pwm_irq()
346 ddata->period = ddata->temp_period in rockchip_pwm_irq()
347 + ddata->pwm_freq_nstime * temp_hpr / 1000; in rockchip_pwm_irq()
348 tasklet_hi_schedule(&ddata->remote_tasklet); in rockchip_pwm_irq()
349 ddata->temp_period = 0; in rockchip_pwm_irq()
350 DBG("period+ =%ld\n", ddata->period); in rockchip_pwm_irq()
352 ddata->temp_period += ddata->pwm_freq_nstime in rockchip_pwm_irq()
356 writel_relaxed(PWM_CH_INT(id), ddata->base + PWM_REG_INTSTS(id)); in rockchip_pwm_irq()
357 if (ddata->state == RMC_PRELOAD) in rockchip_pwm_irq()
358 wake_lock_timeout(&ddata->remotectl_wake_lock, HZ); in rockchip_pwm_irq()
364 struct rkxx_remotectl_drvdata *ddata = platform_get_drvdata(pdev); in rk_pwm_pwrkey_wakeup_init() local
366 unsigned int pwm_id = ddata->remote_pwm_id; in rk_pwm_pwrkey_wakeup_init()
373 ddata->pwm_pwrkey_capture = 0; in rk_pwm_pwrkey_wakeup_init()
374 version = readl_relaxed(ddata->base + RK_PWM_VERSION_ID(pwm_id)); in rk_pwm_pwrkey_wakeup_init()
386 IRQF_NO_SUSPEND, "rk_pwm_pwr_irq", ddata); in rk_pwm_pwrkey_wakeup_init()
391 val = readl_relaxed(ddata->base + PWM_REG_CTRL); in rk_pwm_pwrkey_wakeup_init()
393 writel_relaxed(val, ddata->base + PWM_REG_CTRL); in rk_pwm_pwrkey_wakeup_init()
396 min_temp = RK_PWM_TIME_PRE_MIN_LOW * 1000 / ddata->pwm_freq_nstime; in rk_pwm_pwrkey_wakeup_init()
397 max_temp = RK_PWM_TIME_PRE_MAX_LOW * 1000 / ddata->pwm_freq_nstime; in rk_pwm_pwrkey_wakeup_init()
399 writel_relaxed(val, ddata->base + PWM_REG_PWRMATCH_LPRE(pwm_id)); in rk_pwm_pwrkey_wakeup_init()
402 min_temp = RK_PWM_TIME_PRE_MIN * 1000 / ddata->pwm_freq_nstime; in rk_pwm_pwrkey_wakeup_init()
403 max_temp = RK_PWM_TIME_PRE_MAX * 1000 / ddata->pwm_freq_nstime; in rk_pwm_pwrkey_wakeup_init()
405 writel_relaxed(val, ddata->base + PWM_REG_PWRMATCH_HPRE(pwm_id)); in rk_pwm_pwrkey_wakeup_init()
408 min_temp = RK_PWM_TIME_BIT_MIN_LOW * 1000 / ddata->pwm_freq_nstime; in rk_pwm_pwrkey_wakeup_init()
409 max_temp = RK_PWM_TIME_BIT_MAX_LOW * 1000 / ddata->pwm_freq_nstime; in rk_pwm_pwrkey_wakeup_init()
411 writel_relaxed(val, ddata->base + PWM_REG_PWRMATCH_LD(pwm_id)); in rk_pwm_pwrkey_wakeup_init()
414 min_temp = RK_PWM_TIME_BIT0_MIN * 1000 / ddata->pwm_freq_nstime; in rk_pwm_pwrkey_wakeup_init()
415 max_temp = RK_PWM_TIME_BIT0_MAX * 1000 / ddata->pwm_freq_nstime; in rk_pwm_pwrkey_wakeup_init()
417 writel_relaxed(val, ddata->base + PWM_REG_PWRMATCH_HD_ZERO(pwm_id)); in rk_pwm_pwrkey_wakeup_init()
420 min_temp = RK_PWM_TIME_BIT1_MIN * 1000 / ddata->pwm_freq_nstime; in rk_pwm_pwrkey_wakeup_init()
421 max_temp = RK_PWM_TIME_BIT1_MAX * 1000 / ddata->pwm_freq_nstime; in rk_pwm_pwrkey_wakeup_init()
423 writel_relaxed(val, ddata->base + PWM_REG_PWRMATCH_HD_ONE(pwm_id)); in rk_pwm_pwrkey_wakeup_init()
425 for (j = 0; j < ddata->maxkeybdnum; j++) { in rk_pwm_pwrkey_wakeup_init()
437 writel_relaxed(pwrkey, ddata->base in rk_pwm_pwrkey_wakeup_init()
445 val = readl_relaxed(ddata->base + PWM_REG_INT_EN(pwm_id)); in rk_pwm_pwrkey_wakeup_init()
447 writel_relaxed(val, ddata->base + PWM_REG_INT_EN(pwm_id)); in rk_pwm_pwrkey_wakeup_init()
450 writel_relaxed(val, ddata->base + PWM_REG_PWRMATCH_CTRL(pwm_id)); in rk_pwm_pwrkey_wakeup_init()
452 val = readl_relaxed(ddata->base + PWM_REG_CTRL); in rk_pwm_pwrkey_wakeup_init()
454 writel_relaxed(val, ddata->base + PWM_REG_CTRL); in rk_pwm_pwrkey_wakeup_init()
455 ddata->pwm_pwrkey_capture = 1; in rk_pwm_pwrkey_wakeup_init()
507 struct rkxx_remotectl_drvdata *ddata = platform_get_drvdata(pdev); in rk_pwm_sip_wakeup_init() local
525 irq = ddata->irq; in rk_pwm_sip_wakeup_init()
539 pwm_id = ddata->remote_pwm_id; in rk_pwm_sip_wakeup_init()
540 num = ddata->maxkeybdnum; in rk_pwm_sip_wakeup_init()
560 ddata->support_psci = support_psci; in rk_pwm_sip_wakeup_init()
565 ddata->support_psci = 0; in rk_pwm_sip_wakeup_init()
578 struct rkxx_remotectl_drvdata *ddata; in rk_pwm_probe() local
600 ddata = devm_kzalloc(&pdev->dev, sizeof(struct rkxx_remotectl_drvdata), in rk_pwm_probe()
602 if (!ddata) { in rk_pwm_probe()
606 ddata->state = RMC_PRELOAD; in rk_pwm_probe()
607 ddata->temp_period = 0; in rk_pwm_probe()
608 ddata->base = devm_ioremap_resource(&pdev->dev, r); in rk_pwm_probe()
609 if (IS_ERR(ddata->base)) in rk_pwm_probe()
610 return PTR_ERR(ddata->base); in rk_pwm_probe()
641 platform_set_drvdata(pdev, ddata); in rk_pwm_probe()
648 ddata->maxkeybdnum = num; in rk_pwm_probe()
670 ddata->input = input; in rk_pwm_probe()
676 ddata->irq = irq; in rk_pwm_probe()
677 ddata->wakeup = 1; in rk_pwm_probe()
680 ddata->remote_pwm_id = pwm_id; in rk_pwm_probe()
687 ddata->handle_cpu_id = cpu_id; in rk_pwm_probe()
690 tasklet_init(&ddata->remote_tasklet, rk_pwm_remotectl_do_something, in rk_pwm_probe()
691 (unsigned long)ddata); in rk_pwm_probe()
707 timer_setup(&ddata->timer, rk_pwm_remotectl_timer, 0); in rk_pwm_probe()
708 wake_lock_init(&ddata->remotectl_wake_lock, in rk_pwm_probe()
714 IRQF_NO_SUSPEND, "rk_pwm_irq", ddata); in rk_pwm_probe()
721 ddata->pwm_freq_nstime = 1000000000 / pwm_freq; in rk_pwm_probe()
722 rk_pwm_remotectl_hw_init(ddata->base, pwm_id); in rk_pwm_probe()
740 wake_lock_destroy(&ddata->remotectl_wake_lock); in rk_pwm_probe()
760 struct rkxx_remotectl_drvdata *ddata = platform_get_drvdata(pdev); in remotectl_suspend() local
762 if (ddata->pwm_pwrkey_capture) { in remotectl_suspend()
763 pwm_id = ddata->remote_pwm_id; in remotectl_suspend()
764 ddata->pwrkey_wakeup = 0; in remotectl_suspend()
765 rk_pwm_int_ctrl(ddata->base, pwm_id, PWM_INT_DISABLE); in remotectl_suspend()
769 irq_set_affinity_hint(ddata->irq, &cpumask); in remotectl_suspend()
779 struct rkxx_remotectl_drvdata *ddata = platform_get_drvdata(pdev); in remotectl_resume() local
783 cpumask_set_cpu(ddata->handle_cpu_id, &cpumask); in remotectl_resume()
784 irq_set_affinity_hint(ddata->irq, &cpumask); in remotectl_resume()
785 if (ddata->support_psci) { in remotectl_resume()
792 rk_pwm_wakeup(ddata->input); in remotectl_resume()
793 } else if (ddata->pwm_pwrkey_capture) { in remotectl_resume()
794 pwm_id = ddata->remote_pwm_id; in remotectl_resume()
795 rk_pwm_int_ctrl(ddata->base, pwm_id, PWM_INT_ENABLE); in remotectl_resume()
796 if (ddata->pwrkey_wakeup == 0) in remotectl_resume()
798 ddata->pwrkey_wakeup = 0; in remotectl_resume()
799 rk_pwm_wakeup(ddata->input); in remotectl_resume()