Fixes warnings found by checkpatch.pl: - AD7280A_DEVADDR macro to use typeof, because of possible side effects - sysfs entries user/group modes to use their octal representation - coding style (open parenthesis alignment, CamelCase...) Signed-off-by: Boyan Vladinov <nayobix@xxxxxxxxxxx> --- drivers/staging/iio/adc/ad7280a.c | 141 +++++++++++++++++++++++++------------- drivers/staging/iio/adc/ad7280a.h | 6 ++ 2 files changed, 101 insertions(+), 46 deletions(-) diff --git a/drivers/staging/iio/adc/ad7280a.c b/drivers/staging/iio/adc/ad7280a.c index ee679ac0368f..5f687c6aaaeb 100644 --- a/drivers/staging/iio/adc/ad7280a.c +++ b/drivers/staging/iio/adc/ad7280a.c @@ -99,9 +99,11 @@ #define AD7280A_DEVADDR_MASTER 0 #define AD7280A_DEVADDR_ALL 0x1F /* 5-bit device address is sent LSB first */ -#define AD7280A_DEVADDR(addr) (((addr & 0x1) << 4) | ((addr & 0x2) << 3) | \ - (addr & 0x4) | ((addr & 0x8) >> 3) | \ - ((addr & 0x10) >> 4)) +#define AD7280A_DEVADDR(addr) \ + ({ typeof(addr) _addr = (addr); \ + ((_addr & 0x1) << 4) | ((_addr & 0x2) << 3) | \ + (_addr & 0x4) | ((_addr & 0x8) >> 3) | \ + ((_addr & 0x10) >> 4); }) /* During a read a valid write is mandatory. * So writing to the highest available address (Address 0x1F) @@ -159,8 +161,8 @@ static unsigned char ad7280_calc_crc8(unsigned char *crc_tab, unsigned int val) { unsigned char crc; - crc = crc_tab[val >> 16 & 0xFF]; - crc = crc_tab[crc ^ (val >> 8 & 0xFF)]; + crc = crc_tab[val >> 16 & 0xff]; + crc = crc_tab[crc ^ (val >> 8 & 0xff)]; return crc ^ (val & 0xFF); } @@ -559,7 +561,7 @@ static int ad7280_attr_init(struct ad7280_state *st) st->iio_attr[cnt].address = AD7280A_DEVADDR(dev) << 8 | ch; st->iio_attr[cnt].dev_attr.attr.mode = - S_IWUSR | S_IRUGO; + 0644; st->iio_attr[cnt].dev_attr.show = ad7280_show_balance_sw; st->iio_attr[cnt].dev_attr.store = @@ -576,7 +578,7 @@ static int ad7280_attr_init(struct ad7280_state *st) AD7280A_DEVADDR(dev) << 8 | (AD7280A_CB1_TIMER + ch); st->iio_attr[cnt].dev_attr.attr.mode = - S_IWUSR | S_IRUGO; + 0644; st->iio_attr[cnt].dev_attr.show = ad7280_show_balance_timer; st->iio_attr[cnt].dev_attr.store = @@ -679,6 +681,51 @@ static ssize_t ad7280_write_channel_config(struct device *dev, return ret ? ret : len; } +static void ad7280a_push_event(struct iio_dev *indio_dev, + enum event_code_type event_code_t, + enum iio_chan_type iio_chan_t, + int diff, + int modifier, + enum iio_event_direction iio_event_dir, + enum iio_event_type iio_event_t, + int chan, + int chan1, + int chan2, + int number) +{ + switch (event_code_t) { + case AD7280A_IIO_EVENT_CODE: + iio_push_event(indio_dev, + IIO_EVENT_CODE(iio_chan_t, + diff, + modifier, + iio_event_dir, + iio_event_t, + chan, + chan1, + chan2), + iio_get_time_ns(indio_dev)); + break; + case AD7280A_IIO_MOD_EVENT_CODE: + iio_push_event(indio_dev, + IIO_MOD_EVENT_CODE(iio_chan_t, + number, + modifier, + iio_event_t, + iio_event_dir), + iio_get_time_ns(indio_dev)); + break; + case AD7280A_IIO_UNMOD_EVENT_CODE: + iio_push_event(indio_dev, + IIO_UNMOD_EVENT_CODE(iio_chan_t, + number, + iio_event_t, + iio_event_dir), + iio_get_time_ns(indio_dev)); + break; + } +} + static irqreturn_t ad7280_event_handler(int irq, void *private) { struct iio_dev *indio_dev = private; @@ -698,42 +745,44 @@ static irqreturn_t ad7280_event_handler(int irq, void *private) if (((channels[i] >> 23) & 0xF) <= AD7280A_CELL_VOLTAGE_6) { if (((channels[i] >> 11) & 0xFFF) >= st->cell_threshhigh) - iio_push_event(indio_dev, - IIO_EVENT_CODE(IIO_VOLTAGE, - 1, - 0, - IIO_EV_DIR_RISING, - IIO_EV_TYPE_THRESH, - 0, 0, 0), - iio_get_time_ns(indio_dev)); + ad7280a_push_event(indio_dev, + AD7280A_IIO_EVENT_CODE, + IIO_VOLTAGE, + 1, + 0, + IIO_EV_DIR_RISING, + IIO_EV_TYPE_THRESH, + 0, 0, 0, 0); else if (((channels[i] >> 11) & 0xFFF) <= st->cell_threshlow) - iio_push_event(indio_dev, - IIO_EVENT_CODE(IIO_VOLTAGE, - 1, - 0, - IIO_EV_DIR_FALLING, - IIO_EV_TYPE_THRESH, - 0, 0, 0), - iio_get_time_ns(indio_dev)); + ad7280a_push_event(indio_dev, + AD7280A_IIO_EVENT_CODE, + IIO_VOLTAGE, + 1, + 0, + IIO_EV_DIR_FALLING, + IIO_EV_TYPE_THRESH, + 0, 0, 0, 0); } else { if (((channels[i] >> 11) & 0xFFF) >= st->aux_threshhigh) - iio_push_event(indio_dev, - IIO_UNMOD_EVENT_CODE( - IIO_TEMP, - 0, - IIO_EV_TYPE_THRESH, - IIO_EV_DIR_RISING), - iio_get_time_ns(indio_dev)); + ad7280a_push_event(indio_dev, + AD7280A_IIO_UNMOD_EVENT_CODE, + IIO_TEMP, + 0, + 0, + IIO_EV_DIR_RISING, + IIO_EV_TYPE_THRESH, + 0, 0, 0, 0); else if (((channels[i] >> 11) & 0xFFF) <= st->aux_threshlow) - iio_push_event(indio_dev, - IIO_UNMOD_EVENT_CODE( - IIO_TEMP, - 0, - IIO_EV_TYPE_THRESH, - IIO_EV_DIR_FALLING), - iio_get_time_ns(indio_dev)); + ad7280a_push_event(indio_dev, + AD7280A_IIO_UNMOD_EVENT_CODE, + IIO_TEMP, + 0, + 0, + IIO_EV_DIR_FALLING, + IIO_EV_TYPE_THRESH, + 0, 0, 0, 0); } } @@ -745,26 +794,26 @@ static irqreturn_t ad7280_event_handler(int irq, void *private) static IIO_DEVICE_ATTR_NAMED(in_thresh_low_value, in_voltage-voltage_thresh_low_value, - S_IRUGO | S_IWUSR, + 0644, ad7280_read_channel_config, ad7280_write_channel_config, AD7280A_CELL_UNDERVOLTAGE); static IIO_DEVICE_ATTR_NAMED(in_thresh_high_value, in_voltage-voltage_thresh_high_value, - S_IRUGO | S_IWUSR, + 0644, ad7280_read_channel_config, ad7280_write_channel_config, AD7280A_CELL_OVERVOLTAGE); static IIO_DEVICE_ATTR(in_temp_thresh_low_value, - S_IRUGO | S_IWUSR, + 0644, ad7280_read_channel_config, ad7280_write_channel_config, AD7280A_AUX_ADC_UNDERVOLTAGE); static IIO_DEVICE_ATTR(in_temp_thresh_high_value, - S_IRUGO | S_IWUSR, + 0644, ad7280_read_channel_config, ad7280_write_channel_config, AD7280A_AUX_ADC_OVERVOLTAGE); @@ -836,8 +885,8 @@ static int ad7280_probe(struct spi_device *spi) const struct ad7280_platform_data *pdata = dev_get_platdata(&spi->dev); struct ad7280_state *st; int ret; - const unsigned short tACQ_ns[4] = {465, 1010, 1460, 1890}; - const unsigned short nAVG[4] = {1, 2, 4, 8}; + const unsigned short t_acq_ns[4] = {465, 1010, 1460, 1890}; + const unsigned short n_avg[4] = {1, 2, 4, 8}; struct iio_dev *indio_dev; indio_dev = devm_iio_device_alloc(&spi->dev, sizeof(*st)); @@ -880,9 +929,9 @@ static int ad7280_probe(struct spi_device *spi) */ st->readback_delay_us = - ((tACQ_ns[pdata->acquisition_time & 0x3] + 695) * - (AD7280A_NUM_CH * nAVG[pdata->conversion_averaging & 0x3])) - - tACQ_ns[pdata->acquisition_time & 0x3] + + ((t_acq_ns[pdata->acquisition_time & 0x3] + 695) * + (AD7280A_NUM_CH * n_avg[pdata->conversion_averaging & 0x3])) + - t_acq_ns[pdata->acquisition_time & 0x3] + st->slave_num * 250; /* Convert to usecs */ diff --git a/drivers/staging/iio/adc/ad7280a.h b/drivers/staging/iio/adc/ad7280a.h index ccfb90d20e71..157c33e0e128 100644 --- a/drivers/staging/iio/adc/ad7280a.h +++ b/drivers/staging/iio/adc/ad7280a.h @@ -35,4 +35,10 @@ struct ad7280_platform_data { bool thermistor_term_en; }; +enum event_code_type { + AD7280A_IIO_EVENT_CODE, + AD7280A_IIO_MOD_EVENT_CODE, + AD7280A_IIO_UNMOD_EVENT_CODE, +}; + #endif /* IIO_ADC_AD7280_H_ */ -- 2.7.4 -- To unsubscribe from this list: send the line "unsubscribe linux-iio" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html