staging: pi433: allow max bit rate of 300kps
PATCH 1/1 staging: pi433: allow max bit rate of 300kps
bit_rate data type is u16 which cannot support max bit rate of 300kps. Change bit_rate data type to u32.
Signed-off-by Nam Cao <[email protected]>
--- drivers/staging/pi433/TODO | 2 -- drivers/staging/pi433/pi433_if.h | 4 ++-- drivers/staging/pi433/rf69.c | 6 ++++-- drivers/staging/pi433/rf69.h | 2 +- 4 files changed, 7 insertions(+), 7 deletions(-)
drivers/staging/pi433/TODO +0 -2
@@ -1,5 +1,3 @@ * currently the code introduces new IOCTLs. I'm afraid this is a bad idea. -> Replace this with another interface, hints are welcome! * Some missing data (marked with ###) needs to be added in the documentation -* Change (struct pi433_tx_cfg)->bit_rate to be a u32 so that we can support - bit rates up to 300kbps per the spec.
drivers/staging/pi433/pi433_if.h +2 -2
@@ -51,7 +51,7 @@ enum option_on_off {#define PI433_TX_CFG_IOCTL_NR 0struct pi433_tx_cfg {__u32 frequency; -__u16 bit_rate; +__u32 bit_rate;__u32 dev_frequency;enum modulation modulation;enum mod_shaping mod_shaping;
@@ -99,7 +99,7 @@ struct pi433_tx_cfg {#define PI433_RX_CFG_IOCTL_NR 1struct pi433_rx_cfg {__u32 frequency; -__u16 bit_rate; +__u32 bit_rate;__u32 dev_frequency;enum modulation modulation;
drivers/staging/pi433/rf69.c +4 -2
@@ -185,7 +185,7 @@ int rf69_set_modulation_shaping(struct spi_device *spi, } } -int rf69_set_bit_rate (struct spi_device *spi,u16 bit_rate) +int rf69_set_bit_rate (struct spi_device *spi,u32 bit_rate) {int retval;u32 bit_rate_reg;
@@ -201,7 +201,9 @@ int rf69_set_bit_rate(struct spi_device *spi, u16 bit_rate) }// check input value -if (bit_rate <1200 || (mod ==OOK && bit_rate >32768 )) { +if (bit_rate <1200 || + (mod ==FSK && bit_rate >300000 ) || + (mod ==OOK && bit_rate >32768 )) {dev_dbg (&spi->dev,"setBitRate: illegal input param\n" );return -EINVAL ; }
drivers/staging/pi433/rf69.h +1 -1
@@ -24,7 +24,7 @@ int rf69_set_data_mode(struct spi_device *spi, u8 data_mode);int rf69_set_modulation (struct spi_device *spi,enum modulation modulation);int rf69_set_modulation_shaping (struct spi_device *spi,enum mod_shaping mod_shaping); -int rf69_set_bit_rate (struct spi_device *spi,u16 bit_rate); +int rf69_set_bit_rate (struct spi_device *spi,u32 bit_rate);int rf69_set_deviation (struct spi_device *spi,u32 deviation);int rf69_set_frequency (struct spi_device *spi,u32 frequency);int rf69_enable_amplifier (struct spi_device *spi,u8 amplifier_mask);
Signature · 1 line
2.25.1
Quoted 24 lines · Nam Cao
drivers/staging/pi433/TODO +0
-2@@ -1,5 +1,3 @@ * currently the code introduces new IOCTLs. I'm afraid this is a bad idea. -> Replace this with another interface, hints are welcome! * Some missing data (marked with ###) needs to be added in the documentation -* Change (struct pi433_tx_cfg)->bit_rate to be a u32 so that we can support - bit rates up to 300kbps per the spec.drivers/staging/pi433/pi433_if.h +1
-1@@ -51,7 +51,7 @@ enum option_on_off {#define PI433_TX_CFG_IOCTL_NR 0struct pi433_tx_cfg {__u32 frequency; -__u16 bit_rate; +__u32 bit_rate;__u32 dev_frequency;enum modulation modulation;enum mod_shaping mod_shaping;
drivers/staging/pi433/pi433_if.h struct pi433_tx_cfg { · line 105
Quoted 8 lines
drivers/staging/pi433/pi433_if.h +1
-1@@ -99,7 +99,7 @@ struct pi433_tx_cfg {#define PI433_RX_CFG_IOCTL_NR 1struct pi433_rx_cfg {__u32 frequency; -__u16 bit_rate; +__u32 bit_rate;__u32 dev_frequency;enum modulation modulation;
You cannot change this because it is part of the UAPI.
Also this API is rubbish. Instead you should create sysfs files to set the bit_rate.
regards,
dan carpenter