Lines Matching refs:gpio_ir

18 struct gpio_ir {  struct
32 struct gpio_ir *gpio_ir = dev->priv; in gpio_ir_tx_set_duty_cycle() argument
34 gpio_ir->duty_cycle = duty_cycle; in gpio_ir_tx_set_duty_cycle()
41 struct gpio_ir *gpio_ir = dev->priv; in gpio_ir_tx_set_carrier() local
46 gpio_ir->carrier = carrier; in gpio_ir_tx_set_carrier()
51 static void gpio_ir_tx_unmodulated(struct gpio_ir *gpio_ir, uint *txbuf, in gpio_ir_tx_unmodulated() argument
63 gpiod_set_value(gpio_ir->gpio, !(i % 2)); in gpio_ir_tx_unmodulated()
71 gpiod_set_value(gpio_ir->gpio, 0); in gpio_ir_tx_unmodulated()
74 static void gpio_ir_tx_modulated(struct gpio_ir *gpio_ir, uint *txbuf, in gpio_ir_tx_modulated() argument
87 pulse = DIV_ROUND_CLOSEST(gpio_ir->duty_cycle * (NSEC_PER_SEC / 100), in gpio_ir_tx_modulated()
88 gpio_ir->carrier); in gpio_ir_tx_modulated()
89 space = DIV_ROUND_CLOSEST((100 - gpio_ir->duty_cycle) * in gpio_ir_tx_modulated()
90 (NSEC_PER_SEC / 100), gpio_ir->carrier); in gpio_ir_tx_modulated()
108 gpiod_set_value(gpio_ir->gpio, 1); in gpio_ir_tx_modulated()
114 gpiod_set_value(gpio_ir->gpio, 0); in gpio_ir_tx_modulated()
130 struct gpio_ir *gpio_ir = dev->priv; in gpio_ir_tx() local
134 if (gpio_ir->carrier) in gpio_ir_tx()
135 gpio_ir_tx_modulated(gpio_ir, txbuf, count); in gpio_ir_tx()
137 gpio_ir_tx_unmodulated(gpio_ir, txbuf, count); in gpio_ir_tx()
145 struct gpio_ir *gpio_ir; in gpio_ir_tx_probe() local
149 gpio_ir = devm_kmalloc(&pdev->dev, sizeof(*gpio_ir), GFP_KERNEL); in gpio_ir_tx_probe()
150 if (!gpio_ir) in gpio_ir_tx_probe()
157 gpio_ir->gpio = devm_gpiod_get(&pdev->dev, NULL, GPIOD_OUT_LOW); in gpio_ir_tx_probe()
158 if (IS_ERR(gpio_ir->gpio)) { in gpio_ir_tx_probe()
159 if (PTR_ERR(gpio_ir->gpio) != -EPROBE_DEFER) in gpio_ir_tx_probe()
161 PTR_ERR(gpio_ir->gpio)); in gpio_ir_tx_probe()
162 return PTR_ERR(gpio_ir->gpio); in gpio_ir_tx_probe()
165 rcdev->priv = gpio_ir; in gpio_ir_tx_probe()
172 gpio_ir->carrier = 38000; in gpio_ir_tx_probe()
173 gpio_ir->duty_cycle = 50; in gpio_ir_tx_probe()