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()
70 static void gpio_ir_tx_unmodulated(struct gpio_ir *gpio_ir, uint *txbuf, in gpio_ir_tx_unmodulated() argument
81 gpiod_set_value(gpio_ir->gpio, !(i % 2)); in gpio_ir_tx_unmodulated()
87 gpiod_set_value(gpio_ir->gpio, 0); in gpio_ir_tx_unmodulated()
90 static void gpio_ir_tx_modulated(struct gpio_ir *gpio_ir, uint *txbuf, in gpio_ir_tx_modulated() argument
103 pulse = DIV_ROUND_CLOSEST(gpio_ir->duty_cycle * (NSEC_PER_SEC / 100), in gpio_ir_tx_modulated()
104 gpio_ir->carrier); in gpio_ir_tx_modulated()
105 space = DIV_ROUND_CLOSEST((100 - gpio_ir->duty_cycle) * in gpio_ir_tx_modulated()
106 (NSEC_PER_SEC / 100), gpio_ir->carrier); in gpio_ir_tx_modulated()
122 gpiod_set_value(gpio_ir->gpio, 1); in gpio_ir_tx_modulated()
128 gpiod_set_value(gpio_ir->gpio, 0); in gpio_ir_tx_modulated()
144 struct gpio_ir *gpio_ir = dev->priv; in gpio_ir_tx() local
148 if (gpio_ir->carrier) in gpio_ir_tx()
149 gpio_ir_tx_modulated(gpio_ir, txbuf, count); in gpio_ir_tx()
151 gpio_ir_tx_unmodulated(gpio_ir, txbuf, count); in gpio_ir_tx()
159 struct gpio_ir *gpio_ir; in gpio_ir_tx_probe() local
163 gpio_ir = devm_kmalloc(&pdev->dev, sizeof(*gpio_ir), GFP_KERNEL); in gpio_ir_tx_probe()
164 if (!gpio_ir) in gpio_ir_tx_probe()
171 gpio_ir->gpio = devm_gpiod_get(&pdev->dev, NULL, GPIOD_OUT_LOW); in gpio_ir_tx_probe()
172 if (IS_ERR(gpio_ir->gpio)) { in gpio_ir_tx_probe()
173 if (PTR_ERR(gpio_ir->gpio) != -EPROBE_DEFER) in gpio_ir_tx_probe()
175 PTR_ERR(gpio_ir->gpio)); in gpio_ir_tx_probe()
176 return PTR_ERR(gpio_ir->gpio); in gpio_ir_tx_probe()
179 rcdev->priv = gpio_ir; in gpio_ir_tx_probe()
186 gpio_ir->carrier = 38000; in gpio_ir_tx_probe()
187 gpio_ir->duty_cycle = 50; in gpio_ir_tx_probe()