ir_rx51 33 drivers/media/rc/ir-rx51.c static inline void ir_rx51_on(struct ir_rx51 *ir_rx51) ir_rx51 35 drivers/media/rc/ir-rx51.c pwm_enable(ir_rx51->pwm); ir_rx51 38 drivers/media/rc/ir-rx51.c static inline void ir_rx51_off(struct ir_rx51 *ir_rx51) ir_rx51 40 drivers/media/rc/ir-rx51.c pwm_disable(ir_rx51->pwm); ir_rx51 43 drivers/media/rc/ir-rx51.c static int init_timing_params(struct ir_rx51 *ir_rx51) ir_rx51 45 drivers/media/rc/ir-rx51.c struct pwm_device *pwm = ir_rx51->pwm; ir_rx51 46 drivers/media/rc/ir-rx51.c int duty, period = DIV_ROUND_CLOSEST(NSEC_PER_SEC, ir_rx51->freq); ir_rx51 48 drivers/media/rc/ir-rx51.c duty = DIV_ROUND_CLOSEST(ir_rx51->duty_cycle * period, 100); ir_rx51 57 drivers/media/rc/ir-rx51.c struct ir_rx51 *ir_rx51 = container_of(timer, struct ir_rx51, timer); ir_rx51 60 drivers/media/rc/ir-rx51.c if (ir_rx51->wbuf_index < 0) { ir_rx51 61 drivers/media/rc/ir-rx51.c dev_err_ratelimited(ir_rx51->dev, ir_rx51 63 drivers/media/rc/ir-rx51.c ir_rx51->wbuf_index); ir_rx51 74 drivers/media/rc/ir-rx51.c if (ir_rx51->wbuf_index >= WBUF_LEN) ir_rx51 76 drivers/media/rc/ir-rx51.c if (ir_rx51->wbuf[ir_rx51->wbuf_index] == -1) ir_rx51 79 drivers/media/rc/ir-rx51.c if (ir_rx51->wbuf_index % 2) ir_rx51 80 drivers/media/rc/ir-rx51.c ir_rx51_off(ir_rx51); ir_rx51 82 drivers/media/rc/ir-rx51.c ir_rx51_on(ir_rx51); ir_rx51 84 drivers/media/rc/ir-rx51.c ns = US_TO_NS(ir_rx51->wbuf[ir_rx51->wbuf_index]); ir_rx51 87 drivers/media/rc/ir-rx51.c ir_rx51->wbuf_index++; ir_rx51 96 drivers/media/rc/ir-rx51.c ir_rx51_off(ir_rx51); ir_rx51 97 drivers/media/rc/ir-rx51.c ir_rx51->wbuf_index = -1; ir_rx51 99 drivers/media/rc/ir-rx51.c wake_up_interruptible(&ir_rx51->wqueue); ir_rx51 107 drivers/media/rc/ir-rx51.c struct ir_rx51 *ir_rx51 = dev->priv; ir_rx51 112 drivers/media/rc/ir-rx51.c memcpy(ir_rx51->wbuf, buffer, count * sizeof(unsigned int)); ir_rx51 115 drivers/media/rc/ir-rx51.c wait_event_interruptible(ir_rx51->wqueue, ir_rx51->wbuf_index < 0); ir_rx51 117 drivers/media/rc/ir-rx51.c init_timing_params(ir_rx51); ir_rx51 119 drivers/media/rc/ir-rx51.c ir_rx51->wbuf[count] = -1; /* Insert termination mark */ ir_rx51 126 drivers/media/rc/ir-rx51.c ir_rx51_on(ir_rx51); ir_rx51 127 drivers/media/rc/ir-rx51.c ir_rx51->wbuf_index = 1; ir_rx51 128 drivers/media/rc/ir-rx51.c hrtimer_start(&ir_rx51->timer, ir_rx51 129 drivers/media/rc/ir-rx51.c ns_to_ktime(US_TO_NS(ir_rx51->wbuf[0])), ir_rx51 135 drivers/media/rc/ir-rx51.c wait_event_interruptible(ir_rx51->wqueue, ir_rx51->wbuf_index < 0); ir_rx51 144 drivers/media/rc/ir-rx51.c struct ir_rx51 *ir_rx51 = dev->priv; ir_rx51 146 drivers/media/rc/ir-rx51.c if (test_and_set_bit(1, &ir_rx51->device_is_open)) ir_rx51 149 drivers/media/rc/ir-rx51.c ir_rx51->pwm = pwm_get(ir_rx51->dev, NULL); ir_rx51 150 drivers/media/rc/ir-rx51.c if (IS_ERR(ir_rx51->pwm)) { ir_rx51 151 drivers/media/rc/ir-rx51.c int res = PTR_ERR(ir_rx51->pwm); ir_rx51 153 drivers/media/rc/ir-rx51.c dev_err(ir_rx51->dev, "pwm_get failed: %d\n", res); ir_rx51 162 drivers/media/rc/ir-rx51.c struct ir_rx51 *ir_rx51 = dev->priv; ir_rx51 164 drivers/media/rc/ir-rx51.c hrtimer_cancel(&ir_rx51->timer); ir_rx51 165 drivers/media/rc/ir-rx51.c ir_rx51_off(ir_rx51); ir_rx51 166 drivers/media/rc/ir-rx51.c pwm_put(ir_rx51->pwm); ir_rx51 168 drivers/media/rc/ir-rx51.c clear_bit(1, &ir_rx51->device_is_open); ir_rx51 171 drivers/media/rc/ir-rx51.c static struct ir_rx51 ir_rx51 = { ir_rx51 178 drivers/media/rc/ir-rx51.c struct ir_rx51 *ir_rx51 = dev->priv; ir_rx51 180 drivers/media/rc/ir-rx51.c ir_rx51->duty_cycle = duty; ir_rx51 187 drivers/media/rc/ir-rx51.c struct ir_rx51 *ir_rx51 = dev->priv; ir_rx51 192 drivers/media/rc/ir-rx51.c ir_rx51->freq = carrier; ir_rx51 209 drivers/media/rc/ir-rx51.c if (test_and_set_bit(1, &ir_rx51.device_is_open)) ir_rx51 212 drivers/media/rc/ir-rx51.c clear_bit(1, &ir_rx51.device_is_open); ir_rx51 244 drivers/media/rc/ir-rx51.c ir_rx51.freq = DIV_ROUND_CLOSEST(pwm_get_period(pwm), NSEC_PER_SEC); ir_rx51 247 drivers/media/rc/ir-rx51.c hrtimer_init(&ir_rx51.timer, CLOCK_MONOTONIC, HRTIMER_MODE_REL); ir_rx51 248 drivers/media/rc/ir-rx51.c ir_rx51.timer.function = ir_rx51_timer_cb; ir_rx51 250 drivers/media/rc/ir-rx51.c ir_rx51.dev = &dev->dev; ir_rx51 256 drivers/media/rc/ir-rx51.c rcdev->priv = &ir_rx51; ir_rx51 264 drivers/media/rc/ir-rx51.c ir_rx51.rcdev = rcdev; ir_rx51 266 drivers/media/rc/ir-rx51.c return devm_rc_register_device(&dev->dev, ir_rx51.rcdev);