diff options
author | Linus Torvalds <torvalds@linux-foundation.org> | 2014-11-09 17:11:07 -0500 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2014-11-09 17:11:07 -0500 |
commit | 86a7a1676a5a34082470869178d2e5fe54f5c3b9 (patch) | |
tree | 32fac298ecebe48e119855c2d9742c9f5b4baff7 | |
parent | 45a4c0794d6e04e0fff49475fee54569a844e03d (diff) | |
parent | bce20b2396626301c65e08306364bce9a7505ae5 (diff) |
Merge tag 'staging-3.18-rc4' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/staging
Pull staging driver fixes from Greg KH:
"Here are some staging/iio fixes for 3.18-rc4.
Nothing major, just a few bugfixes of things that have been reported"
* tag 'staging-3.18-rc4' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/staging:
staging:iio:ade7758: Remove "raw" from channel name
staging:iio:ade7758: Fix check if channels are enabled in prenable
staging:iio:ade7758: Fix NULL pointer deref when enabling buffer
iio: as3935: allocate correct iio_device size
io: accel: kxcjk-1013: Fix iio_event_spec direction
iio: tsl4531: Fix compiler error when CONFIG_PM_OPS is not defined
iio: adc: mxs-lradc: Disable the clock on probe failure
iio: st_sensors: Fix buffer copy
staging:iio:ad5933: Drop "raw" from channel names
staging:iio:ad5933: Fix NULL pointer deref when enabling buffer
-rw-r--r-- | drivers/iio/accel/kxcjk-1013.c | 2 | ||||
-rw-r--r-- | drivers/iio/light/tsl4531.c | 7 | ||||
-rw-r--r-- | drivers/iio/proximity/as3935.c | 2 | ||||
-rw-r--r-- | drivers/staging/iio/meter/ade7758.h | 1 | ||||
-rw-r--r-- | drivers/staging/iio/meter/ade7758_core.c | 57 | ||||
-rw-r--r-- | drivers/staging/iio/meter/ade7758_ring.c | 5 |
6 files changed, 20 insertions, 54 deletions
diff --git a/drivers/iio/accel/kxcjk-1013.c b/drivers/iio/accel/kxcjk-1013.c index 98909a9e284e..a23e58c4ed99 100644 --- a/drivers/iio/accel/kxcjk-1013.c +++ b/drivers/iio/accel/kxcjk-1013.c | |||
@@ -894,7 +894,7 @@ static const struct attribute_group kxcjk1013_attrs_group = { | |||
894 | 894 | ||
895 | static const struct iio_event_spec kxcjk1013_event = { | 895 | static const struct iio_event_spec kxcjk1013_event = { |
896 | .type = IIO_EV_TYPE_THRESH, | 896 | .type = IIO_EV_TYPE_THRESH, |
897 | .dir = IIO_EV_DIR_RISING | IIO_EV_DIR_FALLING, | 897 | .dir = IIO_EV_DIR_EITHER, |
898 | .mask_separate = BIT(IIO_EV_INFO_VALUE) | | 898 | .mask_separate = BIT(IIO_EV_INFO_VALUE) | |
899 | BIT(IIO_EV_INFO_ENABLE) | | 899 | BIT(IIO_EV_INFO_ENABLE) | |
900 | BIT(IIO_EV_INFO_PERIOD) | 900 | BIT(IIO_EV_INFO_PERIOD) |
diff --git a/drivers/iio/light/tsl4531.c b/drivers/iio/light/tsl4531.c index a15006efa137..0763b8632573 100644 --- a/drivers/iio/light/tsl4531.c +++ b/drivers/iio/light/tsl4531.c | |||
@@ -230,9 +230,12 @@ static int tsl4531_resume(struct device *dev) | |||
230 | return i2c_smbus_write_byte_data(to_i2c_client(dev), TSL4531_CONTROL, | 230 | return i2c_smbus_write_byte_data(to_i2c_client(dev), TSL4531_CONTROL, |
231 | TSL4531_MODE_NORMAL); | 231 | TSL4531_MODE_NORMAL); |
232 | } | 232 | } |
233 | #endif | ||
234 | 233 | ||
235 | static SIMPLE_DEV_PM_OPS(tsl4531_pm_ops, tsl4531_suspend, tsl4531_resume); | 234 | static SIMPLE_DEV_PM_OPS(tsl4531_pm_ops, tsl4531_suspend, tsl4531_resume); |
235 | #define TSL4531_PM_OPS (&tsl4531_pm_ops) | ||
236 | #else | ||
237 | #define TSL4531_PM_OPS NULL | ||
238 | #endif | ||
236 | 239 | ||
237 | static const struct i2c_device_id tsl4531_id[] = { | 240 | static const struct i2c_device_id tsl4531_id[] = { |
238 | { "tsl4531", 0 }, | 241 | { "tsl4531", 0 }, |
@@ -243,7 +246,7 @@ MODULE_DEVICE_TABLE(i2c, tsl4531_id); | |||
243 | static struct i2c_driver tsl4531_driver = { | 246 | static struct i2c_driver tsl4531_driver = { |
244 | .driver = { | 247 | .driver = { |
245 | .name = TSL4531_DRV_NAME, | 248 | .name = TSL4531_DRV_NAME, |
246 | .pm = &tsl4531_pm_ops, | 249 | .pm = TSL4531_PM_OPS, |
247 | .owner = THIS_MODULE, | 250 | .owner = THIS_MODULE, |
248 | }, | 251 | }, |
249 | .probe = tsl4531_probe, | 252 | .probe = tsl4531_probe, |
diff --git a/drivers/iio/proximity/as3935.c b/drivers/iio/proximity/as3935.c index 5e780ef206f3..8349cc0fdf66 100644 --- a/drivers/iio/proximity/as3935.c +++ b/drivers/iio/proximity/as3935.c | |||
@@ -330,7 +330,7 @@ static int as3935_probe(struct spi_device *spi) | |||
330 | return -EINVAL; | 330 | return -EINVAL; |
331 | } | 331 | } |
332 | 332 | ||
333 | indio_dev = devm_iio_device_alloc(&spi->dev, sizeof(st)); | 333 | indio_dev = devm_iio_device_alloc(&spi->dev, sizeof(*st)); |
334 | if (!indio_dev) | 334 | if (!indio_dev) |
335 | return -ENOMEM; | 335 | return -ENOMEM; |
336 | 336 | ||
diff --git a/drivers/staging/iio/meter/ade7758.h b/drivers/staging/iio/meter/ade7758.h index 07318203a836..e8c98cf57070 100644 --- a/drivers/staging/iio/meter/ade7758.h +++ b/drivers/staging/iio/meter/ade7758.h | |||
@@ -119,7 +119,6 @@ struct ade7758_state { | |||
119 | u8 *tx; | 119 | u8 *tx; |
120 | u8 *rx; | 120 | u8 *rx; |
121 | struct mutex buf_lock; | 121 | struct mutex buf_lock; |
122 | const struct iio_chan_spec *ade7758_ring_channels; | ||
123 | struct spi_transfer ring_xfer[4]; | 122 | struct spi_transfer ring_xfer[4]; |
124 | struct spi_message ring_msg; | 123 | struct spi_message ring_msg; |
125 | /* | 124 | /* |
diff --git a/drivers/staging/iio/meter/ade7758_core.c b/drivers/staging/iio/meter/ade7758_core.c index abc60067cd72..fb373b89dcc2 100644 --- a/drivers/staging/iio/meter/ade7758_core.c +++ b/drivers/staging/iio/meter/ade7758_core.c | |||
@@ -634,9 +634,6 @@ static const struct iio_chan_spec ade7758_channels[] = { | |||
634 | .type = IIO_VOLTAGE, | 634 | .type = IIO_VOLTAGE, |
635 | .indexed = 1, | 635 | .indexed = 1, |
636 | .channel = 0, | 636 | .channel = 0, |
637 | .extend_name = "raw", | ||
638 | .info_mask_separate = BIT(IIO_CHAN_INFO_RAW), | ||
639 | .info_mask_shared_by_type = BIT(IIO_CHAN_INFO_SCALE), | ||
640 | .address = AD7758_WT(AD7758_PHASE_A, AD7758_VOLTAGE), | 637 | .address = AD7758_WT(AD7758_PHASE_A, AD7758_VOLTAGE), |
641 | .scan_index = 0, | 638 | .scan_index = 0, |
642 | .scan_type = { | 639 | .scan_type = { |
@@ -648,9 +645,6 @@ static const struct iio_chan_spec ade7758_channels[] = { | |||
648 | .type = IIO_CURRENT, | 645 | .type = IIO_CURRENT, |
649 | .indexed = 1, | 646 | .indexed = 1, |
650 | .channel = 0, | 647 | .channel = 0, |
651 | .extend_name = "raw", | ||
652 | .info_mask_separate = BIT(IIO_CHAN_INFO_RAW), | ||
653 | .info_mask_shared_by_type = BIT(IIO_CHAN_INFO_SCALE), | ||
654 | .address = AD7758_WT(AD7758_PHASE_A, AD7758_CURRENT), | 648 | .address = AD7758_WT(AD7758_PHASE_A, AD7758_CURRENT), |
655 | .scan_index = 1, | 649 | .scan_index = 1, |
656 | .scan_type = { | 650 | .scan_type = { |
@@ -662,9 +656,7 @@ static const struct iio_chan_spec ade7758_channels[] = { | |||
662 | .type = IIO_POWER, | 656 | .type = IIO_POWER, |
663 | .indexed = 1, | 657 | .indexed = 1, |
664 | .channel = 0, | 658 | .channel = 0, |
665 | .extend_name = "apparent_raw", | 659 | .extend_name = "apparent", |
666 | .info_mask_separate = BIT(IIO_CHAN_INFO_RAW), | ||
667 | .info_mask_shared_by_type = BIT(IIO_CHAN_INFO_SCALE), | ||
668 | .address = AD7758_WT(AD7758_PHASE_A, AD7758_APP_PWR), | 660 | .address = AD7758_WT(AD7758_PHASE_A, AD7758_APP_PWR), |
669 | .scan_index = 2, | 661 | .scan_index = 2, |
670 | .scan_type = { | 662 | .scan_type = { |
@@ -676,9 +668,7 @@ static const struct iio_chan_spec ade7758_channels[] = { | |||
676 | .type = IIO_POWER, | 668 | .type = IIO_POWER, |
677 | .indexed = 1, | 669 | .indexed = 1, |
678 | .channel = 0, | 670 | .channel = 0, |
679 | .extend_name = "active_raw", | 671 | .extend_name = "active", |
680 | .info_mask_separate = BIT(IIO_CHAN_INFO_RAW), | ||
681 | .info_mask_shared_by_type = BIT(IIO_CHAN_INFO_SCALE), | ||
682 | .address = AD7758_WT(AD7758_PHASE_A, AD7758_ACT_PWR), | 672 | .address = AD7758_WT(AD7758_PHASE_A, AD7758_ACT_PWR), |
683 | .scan_index = 3, | 673 | .scan_index = 3, |
684 | .scan_type = { | 674 | .scan_type = { |
@@ -690,9 +680,7 @@ static const struct iio_chan_spec ade7758_channels[] = { | |||
690 | .type = IIO_POWER, | 680 | .type = IIO_POWER, |
691 | .indexed = 1, | 681 | .indexed = 1, |
692 | .channel = 0, | 682 | .channel = 0, |
693 | .extend_name = "reactive_raw", | 683 | .extend_name = "reactive", |
694 | .info_mask_separate = BIT(IIO_CHAN_INFO_RAW), | ||
695 | .info_mask_shared_by_type = BIT(IIO_CHAN_INFO_SCALE), | ||
696 | .address = AD7758_WT(AD7758_PHASE_A, AD7758_REACT_PWR), | 684 | .address = AD7758_WT(AD7758_PHASE_A, AD7758_REACT_PWR), |
697 | .scan_index = 4, | 685 | .scan_index = 4, |
698 | .scan_type = { | 686 | .scan_type = { |
@@ -704,9 +692,6 @@ static const struct iio_chan_spec ade7758_channels[] = { | |||
704 | .type = IIO_VOLTAGE, | 692 | .type = IIO_VOLTAGE, |
705 | .indexed = 1, | 693 | .indexed = 1, |
706 | .channel = 1, | 694 | .channel = 1, |
707 | .extend_name = "raw", | ||
708 | .info_mask_separate = BIT(IIO_CHAN_INFO_RAW), | ||
709 | .info_mask_shared_by_type = BIT(IIO_CHAN_INFO_SCALE), | ||
710 | .address = AD7758_WT(AD7758_PHASE_B, AD7758_VOLTAGE), | 695 | .address = AD7758_WT(AD7758_PHASE_B, AD7758_VOLTAGE), |
711 | .scan_index = 5, | 696 | .scan_index = 5, |
712 | .scan_type = { | 697 | .scan_type = { |
@@ -718,9 +703,6 @@ static const struct iio_chan_spec ade7758_channels[] = { | |||
718 | .type = IIO_CURRENT, | 703 | .type = IIO_CURRENT, |
719 | .indexed = 1, | 704 | .indexed = 1, |
720 | .channel = 1, | 705 | .channel = 1, |
721 | .extend_name = "raw", | ||
722 | .info_mask_separate = BIT(IIO_CHAN_INFO_RAW), | ||
723 | .info_mask_shared_by_type = BIT(IIO_CHAN_INFO_SCALE), | ||
724 | .address = AD7758_WT(AD7758_PHASE_B, AD7758_CURRENT), | 706 | .address = AD7758_WT(AD7758_PHASE_B, AD7758_CURRENT), |
725 | .scan_index = 6, | 707 | .scan_index = 6, |
726 | .scan_type = { | 708 | .scan_type = { |
@@ -732,9 +714,7 @@ static const struct iio_chan_spec ade7758_channels[] = { | |||
732 | .type = IIO_POWER, | 714 | .type = IIO_POWER, |
733 | .indexed = 1, | 715 | .indexed = 1, |
734 | .channel = 1, | 716 | .channel = 1, |
735 | .extend_name = "apparent_raw", | 717 | .extend_name = "apparent", |
736 | .info_mask_separate = BIT(IIO_CHAN_INFO_RAW), | ||
737 | .info_mask_shared_by_type = BIT(IIO_CHAN_INFO_SCALE), | ||
738 | .address = AD7758_WT(AD7758_PHASE_B, AD7758_APP_PWR), | 718 | .address = AD7758_WT(AD7758_PHASE_B, AD7758_APP_PWR), |
739 | .scan_index = 7, | 719 | .scan_index = 7, |
740 | .scan_type = { | 720 | .scan_type = { |
@@ -746,9 +726,7 @@ static const struct iio_chan_spec ade7758_channels[] = { | |||
746 | .type = IIO_POWER, | 726 | .type = IIO_POWER, |
747 | .indexed = 1, | 727 | .indexed = 1, |
748 | .channel = 1, | 728 | .channel = 1, |
749 | .extend_name = "active_raw", | 729 | .extend_name = "active", |
750 | .info_mask_separate = BIT(IIO_CHAN_INFO_RAW), | ||
751 | .info_mask_shared_by_type = BIT(IIO_CHAN_INFO_SCALE), | ||
752 | .address = AD7758_WT(AD7758_PHASE_B, AD7758_ACT_PWR), | 730 | .address = AD7758_WT(AD7758_PHASE_B, AD7758_ACT_PWR), |
753 | .scan_index = 8, | 731 | .scan_index = 8, |
754 | .scan_type = { | 732 | .scan_type = { |
@@ -760,9 +738,7 @@ static const struct iio_chan_spec ade7758_channels[] = { | |||
760 | .type = IIO_POWER, | 738 | .type = IIO_POWER, |
761 | .indexed = 1, | 739 | .indexed = 1, |
762 | .channel = 1, | 740 | .channel = 1, |
763 | .extend_name = "reactive_raw", | 741 | .extend_name = "reactive", |
764 | .info_mask_separate = BIT(IIO_CHAN_INFO_RAW), | ||
765 | .info_mask_shared_by_type = BIT(IIO_CHAN_INFO_SCALE), | ||
766 | .address = AD7758_WT(AD7758_PHASE_B, AD7758_REACT_PWR), | 742 | .address = AD7758_WT(AD7758_PHASE_B, AD7758_REACT_PWR), |
767 | .scan_index = 9, | 743 | .scan_index = 9, |
768 | .scan_type = { | 744 | .scan_type = { |
@@ -774,9 +750,6 @@ static const struct iio_chan_spec ade7758_channels[] = { | |||
774 | .type = IIO_VOLTAGE, | 750 | .type = IIO_VOLTAGE, |
775 | .indexed = 1, | 751 | .indexed = 1, |
776 | .channel = 2, | 752 | .channel = 2, |
777 | .extend_name = "raw", | ||
778 | .info_mask_separate = BIT(IIO_CHAN_INFO_RAW), | ||
779 | .info_mask_shared_by_type = BIT(IIO_CHAN_INFO_SCALE), | ||
780 | .address = AD7758_WT(AD7758_PHASE_C, AD7758_VOLTAGE), | 753 | .address = AD7758_WT(AD7758_PHASE_C, AD7758_VOLTAGE), |
781 | .scan_index = 10, | 754 | .scan_index = 10, |
782 | .scan_type = { | 755 | .scan_type = { |
@@ -788,9 +761,6 @@ static const struct iio_chan_spec ade7758_channels[] = { | |||
788 | .type = IIO_CURRENT, | 761 | .type = IIO_CURRENT, |
789 | .indexed = 1, | 762 | .indexed = 1, |
790 | .channel = 2, | 763 | .channel = 2, |
791 | .extend_name = "raw", | ||
792 | .info_mask_separate = BIT(IIO_CHAN_INFO_RAW), | ||
793 | .info_mask_shared_by_type = BIT(IIO_CHAN_INFO_SCALE), | ||
794 | .address = AD7758_WT(AD7758_PHASE_C, AD7758_CURRENT), | 764 | .address = AD7758_WT(AD7758_PHASE_C, AD7758_CURRENT), |
795 | .scan_index = 11, | 765 | .scan_index = 11, |
796 | .scan_type = { | 766 | .scan_type = { |
@@ -802,9 +772,7 @@ static const struct iio_chan_spec ade7758_channels[] = { | |||
802 | .type = IIO_POWER, | 772 | .type = IIO_POWER, |
803 | .indexed = 1, | 773 | .indexed = 1, |
804 | .channel = 2, | 774 | .channel = 2, |
805 | .extend_name = "apparent_raw", | 775 | .extend_name = "apparent", |
806 | .info_mask_separate = BIT(IIO_CHAN_INFO_RAW), | ||
807 | .info_mask_shared_by_type = BIT(IIO_CHAN_INFO_SCALE), | ||
808 | .address = AD7758_WT(AD7758_PHASE_C, AD7758_APP_PWR), | 776 | .address = AD7758_WT(AD7758_PHASE_C, AD7758_APP_PWR), |
809 | .scan_index = 12, | 777 | .scan_index = 12, |
810 | .scan_type = { | 778 | .scan_type = { |
@@ -816,9 +784,7 @@ static const struct iio_chan_spec ade7758_channels[] = { | |||
816 | .type = IIO_POWER, | 784 | .type = IIO_POWER, |
817 | .indexed = 1, | 785 | .indexed = 1, |
818 | .channel = 2, | 786 | .channel = 2, |
819 | .extend_name = "active_raw", | 787 | .extend_name = "active", |
820 | .info_mask_separate = BIT(IIO_CHAN_INFO_RAW), | ||
821 | .info_mask_shared_by_type = BIT(IIO_CHAN_INFO_SCALE), | ||
822 | .address = AD7758_WT(AD7758_PHASE_C, AD7758_ACT_PWR), | 788 | .address = AD7758_WT(AD7758_PHASE_C, AD7758_ACT_PWR), |
823 | .scan_index = 13, | 789 | .scan_index = 13, |
824 | .scan_type = { | 790 | .scan_type = { |
@@ -830,9 +796,7 @@ static const struct iio_chan_spec ade7758_channels[] = { | |||
830 | .type = IIO_POWER, | 796 | .type = IIO_POWER, |
831 | .indexed = 1, | 797 | .indexed = 1, |
832 | .channel = 2, | 798 | .channel = 2, |
833 | .extend_name = "reactive_raw", | 799 | .extend_name = "reactive", |
834 | .info_mask_separate = BIT(IIO_CHAN_INFO_RAW), | ||
835 | .info_mask_shared_by_type = BIT(IIO_CHAN_INFO_SCALE), | ||
836 | .address = AD7758_WT(AD7758_PHASE_C, AD7758_REACT_PWR), | 800 | .address = AD7758_WT(AD7758_PHASE_C, AD7758_REACT_PWR), |
837 | .scan_index = 14, | 801 | .scan_index = 14, |
838 | .scan_type = { | 802 | .scan_type = { |
@@ -873,13 +837,14 @@ static int ade7758_probe(struct spi_device *spi) | |||
873 | goto error_free_rx; | 837 | goto error_free_rx; |
874 | } | 838 | } |
875 | st->us = spi; | 839 | st->us = spi; |
876 | st->ade7758_ring_channels = &ade7758_channels[0]; | ||
877 | mutex_init(&st->buf_lock); | 840 | mutex_init(&st->buf_lock); |
878 | 841 | ||
879 | indio_dev->name = spi->dev.driver->name; | 842 | indio_dev->name = spi->dev.driver->name; |
880 | indio_dev->dev.parent = &spi->dev; | 843 | indio_dev->dev.parent = &spi->dev; |
881 | indio_dev->info = &ade7758_info; | 844 | indio_dev->info = &ade7758_info; |
882 | indio_dev->modes = INDIO_DIRECT_MODE; | 845 | indio_dev->modes = INDIO_DIRECT_MODE; |
846 | indio_dev->channels = ade7758_channels; | ||
847 | indio_dev->num_channels = ARRAY_SIZE(ade7758_channels); | ||
883 | 848 | ||
884 | ret = ade7758_configure_ring(indio_dev); | 849 | ret = ade7758_configure_ring(indio_dev); |
885 | if (ret) | 850 | if (ret) |
diff --git a/drivers/staging/iio/meter/ade7758_ring.c b/drivers/staging/iio/meter/ade7758_ring.c index c0accf8cce93..6e9006490742 100644 --- a/drivers/staging/iio/meter/ade7758_ring.c +++ b/drivers/staging/iio/meter/ade7758_ring.c | |||
@@ -85,17 +85,16 @@ static irqreturn_t ade7758_trigger_handler(int irq, void *p) | |||
85 | **/ | 85 | **/ |
86 | static int ade7758_ring_preenable(struct iio_dev *indio_dev) | 86 | static int ade7758_ring_preenable(struct iio_dev *indio_dev) |
87 | { | 87 | { |
88 | struct ade7758_state *st = iio_priv(indio_dev); | ||
89 | unsigned channel; | 88 | unsigned channel; |
90 | 89 | ||
91 | if (!bitmap_empty(indio_dev->active_scan_mask, indio_dev->masklength)) | 90 | if (bitmap_empty(indio_dev->active_scan_mask, indio_dev->masklength)) |
92 | return -EINVAL; | 91 | return -EINVAL; |
93 | 92 | ||
94 | channel = find_first_bit(indio_dev->active_scan_mask, | 93 | channel = find_first_bit(indio_dev->active_scan_mask, |
95 | indio_dev->masklength); | 94 | indio_dev->masklength); |
96 | 95 | ||
97 | ade7758_write_waveform_type(&indio_dev->dev, | 96 | ade7758_write_waveform_type(&indio_dev->dev, |
98 | st->ade7758_ring_channels[channel].address); | 97 | indio_dev->channels[channel].address); |
99 | 98 | ||
100 | return 0; | 99 | return 0; |
101 | } | 100 | } |