• Home
  • Raw
  • Download

Lines Matching +full:pwm +full:- +full:ir +full:- +full:tx

1 // SPDX-License-Identifier: GPL-2.0-or-later
8 #include <linux/pwm.h>
13 #include <media/rc-core.h>
15 #define DRIVER_NAME "pwm-ir-tx"
16 #define DEVICE_NAME "PWM IR Transmitter"
19 struct pwm_device *pwm; member
25 { .compatible = "pwm-ir-tx", },
32 struct pwm_ir *pwm_ir = dev->priv; in pwm_ir_set_duty_cycle()
34 pwm_ir->duty_cycle = duty_cycle; in pwm_ir_set_duty_cycle()
41 struct pwm_ir *pwm_ir = dev->priv; in pwm_ir_set_carrier()
44 return -EINVAL; in pwm_ir_set_carrier()
46 pwm_ir->carrier = carrier; in pwm_ir_set_carrier()
54 struct pwm_ir *pwm_ir = dev->priv; in pwm_ir_tx()
55 struct pwm_device *pwm = pwm_ir->pwm; in pwm_ir_tx() local
61 pwm_init_state(pwm, &state); in pwm_ir_tx()
63 state.period = DIV_ROUND_CLOSEST(NSEC_PER_SEC, pwm_ir->carrier); in pwm_ir_tx()
64 pwm_set_relative_duty_cycle(&state, pwm_ir->duty_cycle, 100); in pwm_ir_tx()
70 pwm_apply_might_sleep(pwm, &state); in pwm_ir_tx()
79 pwm_apply_might_sleep(pwm, &state); in pwm_ir_tx()
90 pwm_ir = devm_kmalloc(&pdev->dev, sizeof(*pwm_ir), GFP_KERNEL); in pwm_ir_probe()
92 return -ENOMEM; in pwm_ir_probe()
94 pwm_ir->pwm = devm_pwm_get(&pdev->dev, NULL); in pwm_ir_probe()
95 if (IS_ERR(pwm_ir->pwm)) in pwm_ir_probe()
96 return PTR_ERR(pwm_ir->pwm); in pwm_ir_probe()
98 pwm_ir->carrier = 38000; in pwm_ir_probe()
99 pwm_ir->duty_cycle = 50; in pwm_ir_probe()
101 rcdev = devm_rc_allocate_device(&pdev->dev, RC_DRIVER_IR_RAW_TX); in pwm_ir_probe()
103 return -ENOMEM; in pwm_ir_probe()
105 rcdev->priv = pwm_ir; in pwm_ir_probe()
106 rcdev->driver_name = DRIVER_NAME; in pwm_ir_probe()
107 rcdev->device_name = DEVICE_NAME; in pwm_ir_probe()
108 rcdev->tx_ir = pwm_ir_tx; in pwm_ir_probe()
109 rcdev->s_tx_duty_cycle = pwm_ir_set_duty_cycle; in pwm_ir_probe()
110 rcdev->s_tx_carrier = pwm_ir_set_carrier; in pwm_ir_probe()
112 rc = devm_rc_register_device(&pdev->dev, rcdev); in pwm_ir_probe()
114 dev_err(&pdev->dev, "failed to register rc device\n"); in pwm_ir_probe()
128 MODULE_DESCRIPTION("PWM IR Transmitter");