As an example, this patch adds support for the new RCIOCSIRTX ioctl to rc-loopback and removes deprecated functions without a loss in functionality (as LIRC will automatically use the new functions). Signed-off-by: David Härdeman <david@xxxxxxxxxxx> --- drivers/media/rc/rc-loopback.c | 59 +++++++++++++--------------------------- 1 file changed, 19 insertions(+), 40 deletions(-) diff --git a/drivers/media/rc/rc-loopback.c b/drivers/media/rc/rc-loopback.c index ba36fbe..628e834 100644 --- a/drivers/media/rc/rc-loopback.c +++ b/drivers/media/rc/rc-loopback.c @@ -49,43 +49,6 @@ struct loopback_dev { static struct loopback_dev loopdev; -static int loop_set_tx_mask(struct rc_dev *dev, u32 mask) -{ - struct loopback_dev *lodev = dev->priv; - - if ((mask & (RXMASK_REGULAR | RXMASK_LEARNING)) != mask) { - dprintk("invalid tx mask: %u\n", mask); - return -EINVAL; - } - - dprintk("setting tx mask: %u\n", mask); - lodev->txmask = mask; - return 0; -} - -static int loop_set_tx_carrier(struct rc_dev *dev, u32 carrier) -{ - struct loopback_dev *lodev = dev->priv; - - dprintk("setting tx carrier: %u\n", carrier); - lodev->txcarrier = carrier; - return 0; -} - -static int loop_set_tx_duty_cycle(struct rc_dev *dev, u32 duty_cycle) -{ - struct loopback_dev *lodev = dev->priv; - - if (duty_cycle < 1 || duty_cycle > 99) { - dprintk("invalid duty cycle: %u\n", duty_cycle); - return -EINVAL; - } - - dprintk("setting duty cycle: %u\n", duty_cycle); - lodev->txduty = duty_cycle; - return 0; -} - static int loop_tx_ir(struct rc_dev *dev, unsigned count) { struct loopback_dev *lodev = dev->priv; @@ -229,6 +192,24 @@ static void loop_get_ir_tx(struct rc_dev *dev, struct rc_ir_tx *tx) tx->resolution_max = 1; } +/** + * loop_set_ir_tx() - changes and returns the current TX settings + * @dev: the &struct rc_dev to change the settings for + * @tx: the &struct rc_ir_tx with the new settings + * + * This function is used to change and return the current TX settings. + */ +static int loop_set_ir_tx(struct rc_dev *dev, struct rc_ir_tx *tx) +{ + struct loopback_dev *lodev = dev->priv; + + lodev->txmask = tx->tx_enabled & (RXMASK_REGULAR | RXMASK_LEARNING); + lodev->txcarrier = tx->freq; + lodev->txduty = tx->duty; + + return 0; +} + static int __init loop_init(void) { struct rc_dev *rc; @@ -254,14 +235,12 @@ static int __init loop_init(void) rc->max_timeout = UINT_MAX; rc->rx_resolution = 1000; rc->tx_resolution = 1000; - rc->s_tx_mask = loop_set_tx_mask; - rc->s_tx_carrier = loop_set_tx_carrier; - rc->s_tx_duty_cycle = loop_set_tx_duty_cycle; rc->tx_ir = loop_tx_ir; rc->s_idle = loop_set_idle; rc->get_ir_rx = loop_get_ir_rx; rc->set_ir_rx = loop_set_ir_rx; rc->get_ir_tx = loop_get_ir_tx; + rc->set_ir_tx = loop_set_ir_tx; loopdev.txmask = RXMASK_REGULAR; loopdev.txcarrier = 36000; -- To unsubscribe from this list: send the line "unsubscribe linux-media" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html