Lines Matching refs:ir_rx51

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