diff options
Diffstat (limited to 'drivers/media/rc/ir-spi.c')
| -rw-r--r-- | drivers/media/rc/ir-spi.c | 6 |
1 files changed, 5 insertions, 1 deletions
diff --git a/drivers/media/rc/ir-spi.c b/drivers/media/rc/ir-spi.c index 50e30e2fae22..0b54ad74cec0 100644 --- a/drivers/media/rc/ir-spi.c +++ b/drivers/media/rc/ir-spi.c @@ -21,6 +21,7 @@ #define IR_SPI_DRIVER_NAME "ir-spi" #define IR_SPI_DEFAULT_FREQUENCY 38000 +#define IR_SPI_BITS_PER_PULSE 16 struct ir_spi_data { u32 freq; @@ -70,7 +71,7 @@ static int ir_spi_tx(struct rc_dev *dev, unsigned int *buffer, unsigned int coun memset(&xfer, 0, sizeof(xfer)); - xfer.speed_hz = idata->freq * 16; + xfer.speed_hz = idata->freq * IR_SPI_BITS_PER_PULSE; xfer.len = len * sizeof(*tx_buf); xfer.tx_buf = tx_buf; @@ -98,6 +99,9 @@ static int ir_spi_set_tx_carrier(struct rc_dev *dev, u32 carrier) if (!carrier) return -EINVAL; + if (carrier > idata->spi->max_speed_hz / IR_SPI_BITS_PER_PULSE) + return -EINVAL; + idata->freq = carrier; return 0; |