diff options
author | Michael Hennerich <michael.hennerich@analog.com> | 2011-05-18 09:42:36 -0400 |
---|---|---|
committer | Greg Kroah-Hartman <gregkh@suse.de> | 2011-05-19 19:15:05 -0400 |
commit | a3f02370c9fa6d85fbee2c11649ebc9c84bae919 (patch) | |
tree | 137f547f29e7f5e5954e5d82174b91bcebe8dca6 /drivers/staging/iio/meter/ade7758_core.c | |
parent | 7df86302f4258764a3b8b1d63848dab3aa292654 (diff) |
staging:iio:meter:ade7758: Use private data space from iio_allocate_device
Use private data space from iio_allocate_device.
Drop dev_data in favor of iio_priv().
Fix indention issues from previous patches.
Signed-off-by: Michael Hennerich <michael.hennerich@analog.com>
Acked-by: Jonathan Cameron <jic23@cam.ac.uk>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
Diffstat (limited to 'drivers/staging/iio/meter/ade7758_core.c')
-rw-r--r-- | drivers/staging/iio/meter/ade7758_core.c | 92 |
1 files changed, 43 insertions, 49 deletions
diff --git a/drivers/staging/iio/meter/ade7758_core.c b/drivers/staging/iio/meter/ade7758_core.c index 42682ad0b26..d9dfd832122 100644 --- a/drivers/staging/iio/meter/ade7758_core.c +++ b/drivers/staging/iio/meter/ade7758_core.c | |||
@@ -30,7 +30,7 @@ int ade7758_spi_write_reg_8(struct device *dev, | |||
30 | { | 30 | { |
31 | int ret; | 31 | int ret; |
32 | struct iio_dev *indio_dev = dev_get_drvdata(dev); | 32 | struct iio_dev *indio_dev = dev_get_drvdata(dev); |
33 | struct ade7758_state *st = iio_dev_get_devdata(indio_dev); | 33 | struct ade7758_state *st = iio_priv(indio_dev); |
34 | 34 | ||
35 | mutex_lock(&st->buf_lock); | 35 | mutex_lock(&st->buf_lock); |
36 | st->tx[0] = ADE7758_WRITE_REG(reg_address); | 36 | st->tx[0] = ADE7758_WRITE_REG(reg_address); |
@@ -49,7 +49,7 @@ static int ade7758_spi_write_reg_16(struct device *dev, | |||
49 | int ret; | 49 | int ret; |
50 | struct spi_message msg; | 50 | struct spi_message msg; |
51 | struct iio_dev *indio_dev = dev_get_drvdata(dev); | 51 | struct iio_dev *indio_dev = dev_get_drvdata(dev); |
52 | struct ade7758_state *st = iio_dev_get_devdata(indio_dev); | 52 | struct ade7758_state *st = iio_priv(indio_dev); |
53 | struct spi_transfer xfers[] = { | 53 | struct spi_transfer xfers[] = { |
54 | { | 54 | { |
55 | .tx_buf = st->tx, | 55 | .tx_buf = st->tx, |
@@ -78,7 +78,7 @@ static int ade7758_spi_write_reg_24(struct device *dev, | |||
78 | int ret; | 78 | int ret; |
79 | struct spi_message msg; | 79 | struct spi_message msg; |
80 | struct iio_dev *indio_dev = dev_get_drvdata(dev); | 80 | struct iio_dev *indio_dev = dev_get_drvdata(dev); |
81 | struct ade7758_state *st = iio_dev_get_devdata(indio_dev); | 81 | struct ade7758_state *st = iio_priv(indio_dev); |
82 | struct spi_transfer xfers[] = { | 82 | struct spi_transfer xfers[] = { |
83 | { | 83 | { |
84 | .tx_buf = st->tx, | 84 | .tx_buf = st->tx, |
@@ -107,7 +107,7 @@ int ade7758_spi_read_reg_8(struct device *dev, | |||
107 | { | 107 | { |
108 | struct spi_message msg; | 108 | struct spi_message msg; |
109 | struct iio_dev *indio_dev = dev_get_drvdata(dev); | 109 | struct iio_dev *indio_dev = dev_get_drvdata(dev); |
110 | struct ade7758_state *st = iio_dev_get_devdata(indio_dev); | 110 | struct ade7758_state *st = iio_priv(indio_dev); |
111 | int ret; | 111 | int ret; |
112 | struct spi_transfer xfers[] = { | 112 | struct spi_transfer xfers[] = { |
113 | { | 113 | { |
@@ -150,7 +150,7 @@ static int ade7758_spi_read_reg_16(struct device *dev, | |||
150 | { | 150 | { |
151 | struct spi_message msg; | 151 | struct spi_message msg; |
152 | struct iio_dev *indio_dev = dev_get_drvdata(dev); | 152 | struct iio_dev *indio_dev = dev_get_drvdata(dev); |
153 | struct ade7758_state *st = iio_dev_get_devdata(indio_dev); | 153 | struct ade7758_state *st = iio_priv(indio_dev); |
154 | int ret; | 154 | int ret; |
155 | struct spi_transfer xfers[] = { | 155 | struct spi_transfer xfers[] = { |
156 | { | 156 | { |
@@ -196,7 +196,7 @@ static int ade7758_spi_read_reg_24(struct device *dev, | |||
196 | { | 196 | { |
197 | struct spi_message msg; | 197 | struct spi_message msg; |
198 | struct iio_dev *indio_dev = dev_get_drvdata(dev); | 198 | struct iio_dev *indio_dev = dev_get_drvdata(dev); |
199 | struct ade7758_state *st = iio_dev_get_devdata(indio_dev); | 199 | struct ade7758_state *st = iio_priv(indio_dev); |
200 | int ret; | 200 | int ret; |
201 | struct spi_transfer xfers[] = { | 201 | struct spi_transfer xfers[] = { |
202 | { | 202 | { |
@@ -485,10 +485,11 @@ static int ade7758_stop_device(struct device *dev) | |||
485 | return ret; | 485 | return ret; |
486 | } | 486 | } |
487 | 487 | ||
488 | static int ade7758_initial_setup(struct ade7758_state *st) | 488 | static int ade7758_initial_setup(struct iio_dev *indio_dev) |
489 | { | 489 | { |
490 | struct ade7758_state *st = iio_priv(indio_dev); | ||
491 | struct device *dev = &indio_dev->dev; | ||
490 | int ret; | 492 | int ret; |
491 | struct device *dev = &st->indio_dev->dev; | ||
492 | 493 | ||
493 | /* use low spi speed for init */ | 494 | /* use low spi speed for init */ |
494 | st->us->mode = SPI_MODE_1; | 495 | st->us->mode = SPI_MODE_1; |
@@ -727,19 +728,23 @@ static struct iio_chan_spec ade7758_channels[] = { | |||
727 | static int __devinit ade7758_probe(struct spi_device *spi) | 728 | static int __devinit ade7758_probe(struct spi_device *spi) |
728 | { | 729 | { |
729 | int i, ret, regdone = 0; | 730 | int i, ret, regdone = 0; |
730 | struct ade7758_state *st = kzalloc(sizeof *st, GFP_KERNEL); | 731 | struct ade7758_state *st; |
731 | if (!st) { | 732 | struct iio_dev *indio_dev = iio_allocate_device(sizeof(*st)); |
732 | ret = -ENOMEM; | 733 | |
734 | if (indio_dev == NULL) { | ||
735 | ret = -ENOMEM; | ||
733 | goto error_ret; | 736 | goto error_ret; |
734 | } | 737 | } |
738 | |||
739 | st = iio_priv(indio_dev); | ||
735 | /* this is only used for removal purposes */ | 740 | /* this is only used for removal purposes */ |
736 | spi_set_drvdata(spi, st); | 741 | spi_set_drvdata(spi, indio_dev); |
737 | 742 | ||
738 | /* Allocate the comms buffers */ | 743 | /* Allocate the comms buffers */ |
739 | st->rx = kzalloc(sizeof(*st->rx)*ADE7758_MAX_RX, GFP_KERNEL); | 744 | st->rx = kzalloc(sizeof(*st->rx)*ADE7758_MAX_RX, GFP_KERNEL); |
740 | if (st->rx == NULL) { | 745 | if (st->rx == NULL) { |
741 | ret = -ENOMEM; | 746 | ret = -ENOMEM; |
742 | goto error_free_st; | 747 | goto error_free_dev; |
743 | } | 748 | } |
744 | st->tx = kzalloc(sizeof(*st->tx)*ADE7758_MAX_TX, GFP_KERNEL); | 749 | st->tx = kzalloc(sizeof(*st->tx)*ADE7758_MAX_TX, GFP_KERNEL); |
745 | if (st->tx == NULL) { | 750 | if (st->tx == NULL) { |
@@ -749,35 +754,28 @@ static int __devinit ade7758_probe(struct spi_device *spi) | |||
749 | st->us = spi; | 754 | st->us = spi; |
750 | st->ade7758_ring_channels = &ade7758_channels[0]; | 755 | st->ade7758_ring_channels = &ade7758_channels[0]; |
751 | mutex_init(&st->buf_lock); | 756 | mutex_init(&st->buf_lock); |
752 | /* setup the industrialio driver allocated elements */ | ||
753 | st->indio_dev = iio_allocate_device(0); | ||
754 | if (st->indio_dev == NULL) { | ||
755 | ret = -ENOMEM; | ||
756 | goto error_free_tx; | ||
757 | } | ||
758 | 757 | ||
759 | st->indio_dev->name = spi->dev.driver->name; | 758 | indio_dev->name = spi->dev.driver->name; |
760 | st->indio_dev->dev.parent = &spi->dev; | 759 | indio_dev->dev.parent = &spi->dev; |
761 | st->indio_dev->attrs = &ade7758_attribute_group; | 760 | indio_dev->attrs = &ade7758_attribute_group; |
762 | st->indio_dev->dev_data = (void *)(st); | 761 | indio_dev->driver_module = THIS_MODULE; |
763 | st->indio_dev->driver_module = THIS_MODULE; | 762 | indio_dev->modes = INDIO_DIRECT_MODE; |
764 | st->indio_dev->modes = INDIO_DIRECT_MODE; | ||
765 | 763 | ||
766 | for (i = 0; i < AD7758_NUM_WAVESRC; i++) | 764 | for (i = 0; i < AD7758_NUM_WAVESRC; i++) |
767 | st->available_scan_masks[i] = 1 << i; | 765 | st->available_scan_masks[i] = 1 << i; |
768 | 766 | ||
769 | st->indio_dev->available_scan_masks = st->available_scan_masks; | 767 | indio_dev->available_scan_masks = st->available_scan_masks; |
770 | 768 | ||
771 | ret = ade7758_configure_ring(st->indio_dev); | 769 | ret = ade7758_configure_ring(indio_dev); |
772 | if (ret) | 770 | if (ret) |
773 | goto error_free_dev; | 771 | goto error_free_tx; |
774 | 772 | ||
775 | ret = iio_device_register(st->indio_dev); | 773 | ret = iio_device_register(indio_dev); |
776 | if (ret) | 774 | if (ret) |
777 | goto error_unreg_ring_funcs; | 775 | goto error_unreg_ring_funcs; |
778 | regdone = 1; | 776 | regdone = 1; |
779 | 777 | ||
780 | ret = iio_ring_buffer_register_ex(st->indio_dev->ring, 0, | 778 | ret = iio_ring_buffer_register_ex(indio_dev->ring, 0, |
781 | &ade7758_channels[0], | 779 | &ade7758_channels[0], |
782 | ARRAY_SIZE(ade7758_channels)); | 780 | ARRAY_SIZE(ade7758_channels)); |
783 | if (ret) { | 781 | if (ret) { |
@@ -786,12 +784,12 @@ static int __devinit ade7758_probe(struct spi_device *spi) | |||
786 | } | 784 | } |
787 | 785 | ||
788 | /* Get the device into a sane initial state */ | 786 | /* Get the device into a sane initial state */ |
789 | ret = ade7758_initial_setup(st); | 787 | ret = ade7758_initial_setup(indio_dev); |
790 | if (ret) | 788 | if (ret) |
791 | goto error_uninitialize_ring; | 789 | goto error_uninitialize_ring; |
792 | 790 | ||
793 | if (spi->irq) { | 791 | if (spi->irq) { |
794 | ret = ade7758_probe_trigger(st->indio_dev); | 792 | ret = ade7758_probe_trigger(indio_dev); |
795 | if (ret) | 793 | if (ret) |
796 | goto error_remove_trigger; | 794 | goto error_remove_trigger; |
797 | } | 795 | } |
@@ -799,47 +797,43 @@ static int __devinit ade7758_probe(struct spi_device *spi) | |||
799 | return 0; | 797 | return 0; |
800 | 798 | ||
801 | error_remove_trigger: | 799 | error_remove_trigger: |
802 | if (st->indio_dev->modes & INDIO_RING_TRIGGERED) | 800 | if (indio_dev->modes & INDIO_RING_TRIGGERED) |
803 | ade7758_remove_trigger(st->indio_dev); | 801 | ade7758_remove_trigger(indio_dev); |
804 | error_uninitialize_ring: | 802 | error_uninitialize_ring: |
805 | ade7758_uninitialize_ring(st->indio_dev->ring); | 803 | ade7758_uninitialize_ring(indio_dev->ring); |
806 | error_unreg_ring_funcs: | 804 | error_unreg_ring_funcs: |
807 | ade7758_unconfigure_ring(st->indio_dev); | 805 | ade7758_unconfigure_ring(indio_dev); |
808 | error_free_dev: | ||
809 | if (regdone) | ||
810 | iio_device_unregister(st->indio_dev); | ||
811 | else | ||
812 | iio_free_device(st->indio_dev); | ||
813 | error_free_tx: | 806 | error_free_tx: |
814 | kfree(st->tx); | 807 | kfree(st->tx); |
815 | error_free_rx: | 808 | error_free_rx: |
816 | kfree(st->rx); | 809 | kfree(st->rx); |
817 | error_free_st: | 810 | error_free_dev: |
818 | kfree(st); | 811 | if (regdone) |
812 | iio_device_unregister(indio_dev); | ||
813 | else | ||
814 | iio_free_device(indio_dev); | ||
819 | error_ret: | 815 | error_ret: |
820 | return ret; | 816 | return ret; |
821 | } | 817 | } |
822 | 818 | ||
823 | static int ade7758_remove(struct spi_device *spi) | 819 | static int ade7758_remove(struct spi_device *spi) |
824 | { | 820 | { |
821 | struct iio_dev *indio_dev = spi_get_drvdata(spi); | ||
822 | struct ade7758_state *st = iio_priv(indio_dev); | ||
825 | int ret; | 823 | int ret; |
826 | struct ade7758_state *st = spi_get_drvdata(spi); | ||
827 | struct iio_dev *indio_dev = st->indio_dev; | ||
828 | 824 | ||
829 | ret = ade7758_stop_device(&(indio_dev->dev)); | 825 | ret = ade7758_stop_device(&indio_dev->dev); |
830 | if (ret) | 826 | if (ret) |
831 | goto err_ret; | 827 | goto err_ret; |
832 | 828 | ||
833 | ade7758_remove_trigger(indio_dev); | 829 | ade7758_remove_trigger(indio_dev); |
834 | ade7758_uninitialize_ring(indio_dev->ring); | 830 | ade7758_uninitialize_ring(indio_dev->ring); |
835 | iio_device_unregister(indio_dev); | ||
836 | ade7758_unconfigure_ring(indio_dev); | 831 | ade7758_unconfigure_ring(indio_dev); |
837 | kfree(st->tx); | 832 | kfree(st->tx); |
838 | kfree(st->rx); | 833 | kfree(st->rx); |
839 | kfree(st); | 834 | iio_device_unregister(indio_dev); |
840 | 835 | ||
841 | return 0; | 836 | return 0; |
842 | |||
843 | err_ret: | 837 | err_ret: |
844 | return ret; | 838 | return ret; |
845 | } | 839 | } |