History

Merge tag 'staging-3.6-rc3' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/staging

Pull staging fixes from Greg Kroah-Hartman: "Here are some staging driver fixes (and iio driver fixes, they get lumped in with the staging stuff due to dependancies) for your 3.6-rc3 tree. Nothing major, just a bunch of fixes that people have reported. Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>" * tag 'staging-3.6-rc3' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/staging: (26 commits) iio: lm3533-als: Fix build warnings staging:iio:ad7780: Mark channels as unsigned staging:iio:ad7192: Report offset and scale for temperature channel staging:iio:ad7192: Report channel offset staging:iio:ad7192: Mark channels as unsigned staging:iio:ad7192: Fix setting ACX staging:iio:ad7192: Add missing break in switch statement staging:iio:ad7793: Fix internal reference value staging:iio:ad7793: Follow new IIO naming spec staging:iio:ad7793: Fix temperature scale and offset staging:iio:ad7793: Report channel offset staging:iio:ad7793: Mark channels as unsigned staging:iio:ad7793: Add missing break in switch statement iio/adjd_s311: Fix potential memory leak in adjd_s311_update_scan_mode() iio: frequency: ADF4350: Fix potential reference div factor overflow. iio: staging: ad7298_ring: Fix maybe-uninitialized warning staging: comedi: usbduxfast: Declare MODULE_FIRMWARE usage staging: comedi: usbdux: Declare MODULE_FIRMWARE usage staging: comedi: usbduxsigma: Declare MODULE_FIRMWARE usage staging: csr: add INET dependancy ...

Linus Torvalds committed 14 years ago

Commit 557e2e22 parents c839179 3a491ae19 files · +150 −118Browse files

Unified · Split

19 files
  1. drivers/iio/frequency/adf4350.c +15 −9
  2. drivers/iio/light/adjd_s311.c +4 −3
  3. drivers/iio/light/lm3533-als.c +2 −2
  4. drivers/staging/comedi/drivers.c +1 −1
  5. drivers/staging/comedi/drivers/adv_pci1710.c +0 −3
  6. drivers/staging/comedi/drivers/adv_pci1723.c +0 −2
  7. drivers/staging/comedi/drivers/adv_pci_dio.c +0 −2
  8. drivers/staging/comedi/drivers/daqboard2000.c +9 −8
  9. drivers/staging/comedi/drivers/dt3000.c +4 −2
  10. drivers/staging/comedi/drivers/rtd520.c +10 −16
  11. drivers/staging/comedi/drivers/usbdux.c +3 −1
  12. drivers/staging/comedi/drivers/usbduxfast.c +3 −1
  13. drivers/staging/comedi/drivers/usbduxsigma.c +3 −1
  14. drivers/staging/csr/Kconfig +1 −1
  15. drivers/staging/iio/adc/ad7192.c +26 −22
  16. drivers/staging/iio/adc/ad7298_ring.c +1 −1
  17. drivers/staging/iio/adc/ad7780.c +6 −4
  18. drivers/staging/iio/adc/ad7793.c +60 −39
  19. include/linux/iio/frequency/adf4350.h +2 −0
drivers/iio/frequency/adf4350.c+15−9
@@ -129,7 +129,7 @@ static int adf4350_set_freq(struct adf4350_state *st, unsigned long long freq) · 128 unmodified lines
129129 {
130130 struct adf4350_platform_data *pdata = st->pdata;
131131 u64 tmp;
132− u32 div_gcd, prescaler;
132+ u32 div_gcd, prescaler, chspc;
133133 u16 mdiv, r_cnt = 0;
134134 u8 band_sel_div;
135135
@@ -158,14 +158,20 @@ static int adf4350_set_freq(struct adf4350_state *st, unsigned long long freq) · 22 unmodified lines
158158 if (pdata->ref_div_factor)
159159 r_cnt = pdata->ref_div_factor - 1;
160160
161− do {
162− r_cnt = adf4350_tune_r_cnt(st, r_cnt);
161+ chspc = st->chspc;
163162
164− st->r1_mod = st->fpfd / st->chspc;
165− while (st->r1_mod > ADF4350_MAX_MODULUS) {
166− r_cnt = adf4350_tune_r_cnt(st, r_cnt);
167− st->r1_mod = st->fpfd / st->chspc;
168− }
163+ do {
164+ do {
165+ do {
166+ r_cnt = adf4350_tune_r_cnt(st, r_cnt);
167+ st->r1_mod = st->fpfd / chspc;
168+ if (r_cnt > ADF4350_MAX_R_CNT) {
169+ /* try higher spacing values */
170+ chspc++;
171+ r_cnt = 0;
172+ }
173+ } while ((st->r1_mod > ADF4350_MAX_MODULUS) && r_cnt);
174+ } while (r_cnt == 0);
169175
170176 tmp = freq * (u64)st->r1_mod + (st->fpfd > 1);
171177 do_div(tmp, st->fpfd); /* Div round closest (n + d/2)/d */
@@ -194,7 +200,7 @@ static int adf4350_set_freq(struct adf4350_state *st, unsigned long long freq) · 22 unmodified lines
194200 st->regs[ADF4350_REG0] = ADF4350_REG0_INT(st->r0_int) |
195201 ADF4350_REG0_FRACT(st->r0_fract);
196202
197− st->regs[ADF4350_REG1] = ADF4350_REG1_PHASE(0) |
203+ st->regs[ADF4350_REG1] = ADF4350_REG1_PHASE(1) |
198204 ADF4350_REG1_MOD(st->r1_mod) |
199205 prescaler;
200206
drivers/iio/light/adjd_s311.c+4−3
@@ -271,9 +271,10 @@ static int adjd_s311_update_scan_mode(struct iio_dev *indio_dev, · 270 unmodified lines
271271 const unsigned long *scan_mask)
272272 {
273273 struct adjd_s311_data *data = iio_priv(indio_dev);
274− data->buffer = krealloc(data->buffer, indio_dev->scan_bytes,
275− GFP_KERNEL);
276− if (!data->buffer)
274+
275+ kfree(data->buffer);
276+ data->buffer = kmalloc(indio_dev->scan_bytes, GFP_KERNEL);
277+ if (data->buffer == NULL)
277278 return -ENOMEM;
278279
279280 return 0;
drivers/iio/light/lm3533-als.c+2−2
@@ -404,7 +404,7 @@ out: · 403 unmodified lines
404404 return ret;
405405 }
406406
407−static int show_thresh_either_en(struct device *dev,
407+static ssize_t show_thresh_either_en(struct device *dev,
408408 struct device_attribute *attr,
409409 char *buf)
410410 {
@@ -424,7 +424,7 @@ static int show_thresh_either_en(struct device *dev, · 13 unmodified lines
424424 return scnprintf(buf, PAGE_SIZE, "%u\n", enable);
425425 }
426426
427−static int store_thresh_either_en(struct device *dev,
427+static ssize_t store_thresh_either_en(struct device *dev,
428428 struct device_attribute *attr,
429429 const char *buf, size_t len)
430430 {
drivers/staging/comedi/drivers.c+1−1
@@ -168,7 +168,7 @@ int comedi_device_attach(struct comedi_device *dev, struct comedi_devconfig *it) · 167 unmodified lines
168168 dev->board_ptr = comedi_recognize(driv, it->board_name);
169169 if (dev->board_ptr)
170170 break;
171− } else if (strcmp(driv->driver_name, it->board_name))
171+ } else if (strcmp(driv->driver_name, it->board_name) == 0)
172172 break;
173173 module_put(driv->module);
174174 }
drivers/staging/comedi/drivers/adv_pci1710.c+0−3
@@ -1349,9 +1349,6 @@ static struct pci_dev *pci1710_find_pci_dev(struct comedi_device *dev, · 1348 unmodified lines
13491349 }
13501350 if (pcidev->vendor != PCI_VENDOR_ID_ADVANTECH)
13511351 continue;
1352− if (pci_is_enabled(pcidev))
1353− continue;
1354−
13551352 if (strcmp(this_board->name, DRV_NAME) == 0) {
13561353 for (i = 0; i < ARRAY_SIZE(boardtypes); ++i) {
13571354 if (pcidev->device == boardtypes[i].device_id) {
drivers/staging/comedi/drivers/adv_pci1723.c+0−2
@@ -301,8 +301,6 @@ static struct pci_dev *pci1723_find_pci_dev(struct comedi_device *dev, · 300 unmodified lines
301301 }
302302 if (pcidev->vendor != PCI_VENDOR_ID_ADVANTECH)
303303 continue;
304− if (pci_is_enabled(pcidev))
305− continue;
306304 return pcidev;
307305 }
308306 dev_err(dev->class_dev,
drivers/staging/comedi/drivers/adv_pci_dio.c+0−2
@@ -1064,8 +1064,6 @@ static struct pci_dev *pci_dio_find_pci_dev(struct comedi_device *dev, · 1063 unmodified lines
10641064 slot != PCI_SLOT(pcidev->devfn))
10651065 continue;
10661066 }
1067− if (pci_is_enabled(pcidev))
1068− continue;
10691067 for (i = 0; i < ARRAY_SIZE(boardtypes); ++i) {
10701068 if (boardtypes[i].vendor_id != pcidev->vendor)
10711069 continue;
drivers/staging/comedi/drivers/daqboard2000.c+9−8
@@ -718,7 +718,8 @@ static struct pci_dev *daqboard2000_find_pci_dev(struct comedi_device *dev, · 717 unmodified lines
718718 continue;
719719 }
720720 if (pcidev->vendor != PCI_VENDOR_ID_IOTECH ||
721− pcidev->device != 0x0409)
721+ pcidev->device != 0x0409 ||
722+ pcidev->subsystem_device != PCI_VENDOR_ID_IOTECH)
722723 continue;
723724
724725 for (i = 0; i < ARRAY_SIZE(boardtypes); i++) {
@@ -739,6 +740,7 @@ static int daqboard2000_attach(struct comedi_device *dev, · 14 unmodified lines
739740 {
740741 struct pci_dev *pcidev;
741742 struct comedi_subdevice *s;
743+ resource_size_t pci_base;
742744 void *aux_data;
743745 unsigned int aux_len;
744746 int result;
@@ -758,11 +760,12 @@ static int daqboard2000_attach(struct comedi_device *dev, · 13 unmodified lines
758760 "failed to enable PCI device and request regions\n");
759761 return -EIO;
760762 }
761− dev->iobase = pci_resource_start(pcidev, 2);
763+ dev->iobase = 1; /* the "detach" needs this */
762764
763− devpriv->plx =
764− ioremap(pci_resource_start(pcidev, 0), DAQBOARD2000_PLX_SIZE);
765− devpriv->daq = ioremap(dev->iobase, DAQBOARD2000_DAQ_SIZE);
765+ pci_base = pci_resource_start(pcidev, 0);
766+ devpriv->plx = ioremap(pci_base, DAQBOARD2000_PLX_SIZE);
767+ pci_base = pci_resource_start(pcidev, 2);
768+ devpriv->daq = ioremap(pci_base, DAQBOARD2000_DAQ_SIZE);
766769 if (!devpriv->plx || !devpriv->daq)
767770 return -ENOMEM;
768771
@@ -799,8 +802,6 @@ static int daqboard2000_attach(struct comedi_device *dev, · 30 unmodified lines
799802 printk("Interrupt after is: %x\n", interrupt);
800803 */
801804
802− dev->iobase = (unsigned long)devpriv->daq;
803−
804805 dev->board_name = this_board->name;
805806
806807 s = dev->subdevices + 0;
@@ -824,7 +825,7 @@ static int daqboard2000_attach(struct comedi_device *dev, · 17 unmodified lines
824825
825826 s = dev->subdevices + 2;
826827 result = subdev_8255_init(dev, s, daqboard2000_8255_cb,
827− (unsigned long)(dev->iobase + 0x40));
828+ (unsigned long)(devpriv->daq + 0x40));
828829
829830 out:
830831 return result;
drivers/staging/comedi/drivers/dt3000.c+4−2
@@ -804,6 +804,7 @@ static int dt3000_attach(struct comedi_device *dev, struct comedi_devconfig *it) · 803 unmodified lines
804804 {
805805 struct pci_dev *pcidev;
806806 struct comedi_subdevice *s;
807+ resource_size_t pci_base;
807808 int ret = 0;
808809
809810 dev_dbg(dev->class_dev, "dt3000:\n");
@@ -820,9 +821,10 @@ static int dt3000_attach(struct comedi_device *dev, struct comedi_devconfig *it) · 10 unmodified lines
820821 ret = comedi_pci_enable(pcidev, "dt3000");
821822 if (ret < 0)
822823 return ret;
824+ dev->iobase = 1; /* the "detach" needs this */
823825
824− dev->iobase = pci_resource_start(pcidev, 0);
825− devpriv->io_addr = ioremap(dev->iobase, DT3000_SIZE);
826+ pci_base = pci_resource_start(pcidev, 0);
827+ devpriv->io_addr = ioremap(pci_base, DT3000_SIZE);
826828 if (!devpriv->io_addr)
827829 return -ENOMEM;
828830
drivers/staging/comedi/drivers/rtd520.c+10−16
@@ -1619,9 +1619,8 @@ static int rtd_attach(struct comedi_device *dev, struct comedi_devconfig *it) · 1618 unmodified lines
16191619 struct rtdPrivate *devpriv;
16201620 struct pci_dev *pcidev;
16211621 struct comedi_subdevice *s;
1622+ resource_size_t pci_base;
16221623 int ret;
1623− resource_size_t physLas1; /* data area */
1624− resource_size_t physLcfg; /* PLX9080 */
16251624 #ifdef USE_DMA
16261625 int index;
16271626 #endif
@@ -1655,20 +1654,15 @@ static int rtd_attach(struct comedi_device *dev, struct comedi_devconfig *it) · 27 unmodified lines
16551654 printk(KERN_INFO "Failed to enable PCI device and request regions.\n");
16561655 return ret;
16571656 }
1658−
1659− /*
1660− * Initialize base addresses
1661− */
1662− /* Get the physical address from PCI config */
1663− dev->iobase = pci_resource_start(pcidev, LAS0_PCIINDEX);
1664− physLas1 = pci_resource_start(pcidev, LAS1_PCIINDEX);
1665− physLcfg = pci_resource_start(pcidev, LCFG_PCIINDEX);
1666− /* Now have the kernel map this into memory */
1667− /* ASSUME page aligned */
1668− devpriv->las0 = ioremap_nocache(dev->iobase, LAS0_PCISIZE);
1669− devpriv->las1 = ioremap_nocache(physLas1, LAS1_PCISIZE);
1670− devpriv->lcfg = ioremap_nocache(physLcfg, LCFG_PCISIZE);
1671−
1657+ dev->iobase = 1; /* the "detach" needs this */
1658+
1659+ /* Initialize the base addresses */
1660+ pci_base = pci_resource_start(pcidev, LAS0_PCIINDEX);
1661+ devpriv->las0 = ioremap_nocache(pci_base, LAS0_PCISIZE);
1662+ pci_base = pci_resource_start(pcidev, LAS1_PCIINDEX);
1663+ devpriv->las1 = ioremap_nocache(pci_base, LAS1_PCISIZE);
1664+ pci_base = pci_resource_start(pcidev, LCFG_PCIINDEX);
1665+ devpriv->lcfg = ioremap_nocache(pci_base, LCFG_PCISIZE);
16721666 if (!devpriv->las0 || !devpriv->las1 || !devpriv->lcfg)
16731667 return -ENOMEM;
16741668
drivers/staging/comedi/drivers/usbdux.c+3−1
@@ -102,6 +102,7 @@ sampling rate. If you sample two channels you get 4kHz and so on. · 101 unmodified lines
102102 #define BULK_TIMEOUT 1000
103103
104104 /* constants for "firmware" upload and download */
105+#define FIRMWARE "usbdux_firmware.bin"
105106 #define USBDUXSUB_FIRMWARE 0xA0
106107 #define VENDOR_DIR_IN 0xC0
107108 #define VENDOR_DIR_OUT 0x40
@@ -2791,7 +2792,7 @@ static int usbdux_usb_probe(struct usb_interface *uinterf, · 2683 unmodified lines
27912792
27922793 ret = request_firmware_nowait(THIS_MODULE,
27932794 FW_ACTION_HOTPLUG,
2794− "usbdux_firmware.bin",
2795+ FIRMWARE,
27952796 &udev->dev,
27962797 GFP_KERNEL,
27972798 usbduxsub + index,
@@ -2850,3 +2851,4 @@ module_comedi_usb_driver(usbdux_driver, usbdux_usb_driver); · 52 unmodified lines
28502851 MODULE_AUTHOR("Bernd Porr, BerndPorr@f2s.com");
28512852 MODULE_DESCRIPTION("Stirling/ITL USB-DUX -- Bernd.Porr@f2s.com");
28522853 MODULE_LICENSE("GPL");
2854+MODULE_FIRMWARE(FIRMWARE);
drivers/staging/comedi/drivers/usbduxfast.c+3−1
@@ -57,6 +57,7 @@ · 56 unmodified lines
5757 /*
5858 * constants for "firmware" upload and download
5959 */
60+#define FIRMWARE "usbduxfast_firmware.bin"
6061 #define USBDUXFASTSUB_FIRMWARE 0xA0
6162 #define VENDOR_DIR_IN 0xC0
6263 #define VENDOR_DIR_OUT 0x40
@@ -1706,7 +1707,7 @@ static int usbduxfast_usb_probe(struct usb_interface *uinterf, · 1643 unmodified lines
17061707
17071708 ret = request_firmware_nowait(THIS_MODULE,
17081709 FW_ACTION_HOTPLUG,
1709− "usbduxfast_firmware.bin",
1710+ FIRMWARE,
17101711 &udev->dev,
17111712 GFP_KERNEL,
17121713 usbduxfastsub + index,
@@ -1774,3 +1775,4 @@ module_comedi_usb_driver(usbduxfast_driver, usbduxfast_usb_driver); · 61 unmodified lines
17741775 MODULE_AUTHOR("Bernd Porr, BerndPorr@f2s.com");
17751776 MODULE_DESCRIPTION("USB-DUXfast, BerndPorr@f2s.com");
17761777 MODULE_LICENSE("GPL");
1778+MODULE_FIRMWARE(FIRMWARE);
drivers/staging/comedi/drivers/usbduxsigma.c+3−1
@@ -63,6 +63,7 @@ Status: testing · 62 unmodified lines
6363 #define BULK_TIMEOUT 1000
6464
6565 /* constants for "firmware" upload and download */
66+#define FIRMWARE "usbduxsigma_firmware.bin"
6667 #define USBDUXSUB_FIRMWARE 0xA0
6768 #define VENDOR_DIR_IN 0xC0
6869 #define VENDOR_DIR_OUT 0x40
@@ -2780,7 +2781,7 @@ static int usbduxsigma_usb_probe(struct usb_interface *uinterf, · 2711 unmodified lines
27802781
27812782 ret = request_firmware_nowait(THIS_MODULE,
27822783 FW_ACTION_HOTPLUG,
2783− "usbduxsigma_firmware.bin",
2784+ FIRMWARE,
27842785 &udev->dev,
27852786 GFP_KERNEL,
27862787 usbduxsub + index,
@@ -2845,3 +2846,4 @@ module_comedi_usb_driver(usbduxsigma_driver, usbduxsigma_usb_driver); · 58 unmodified lines
28452846 MODULE_AUTHOR("Bernd Porr, BerndPorr@f2s.com");
28462847 MODULE_DESCRIPTION("Stirling/ITL USB-DUX SIGMA -- Bernd.Porr@f2s.com");
28472848 MODULE_LICENSE("GPL");
2849+MODULE_FIRMWARE(FIRMWARE);
drivers/staging/csr/Kconfig+1−1
@@ -1,6 +1,6 @@
11 config CSR_WIFI
22 tristate "CSR wireless driver"
3− depends on MMC && CFG80211_WEXT
3+ depends on MMC && CFG80211_WEXT && INET
44 select WIRELESS_EXT
55 select WEXT_PRIV
66 help
drivers/staging/iio/adc/ad7192.c+26−22
@@ -754,7 +754,7 @@ static ssize_t ad7192_set(struct device *dev, · 753 unmodified lines
754754 else
755755 st->mode &= ~AD7192_MODE_ACX;
756756
757− ad7192_write_reg(st, AD7192_REG_GPOCON, 3, st->mode);
757+ ad7192_write_reg(st, AD7192_REG_MODE, 3, st->mode);
758758 break;
759759 default:
760760 ret = -EINVAL;
@@ -798,6 +798,11 @@ static const struct attribute_group ad7195_attribute_group = { · 37 unmodified lines
798798 .attrs = ad7195_attributes,
799799 };
800800
801+static unsigned int ad7192_get_temp_scale(bool unipolar)
802+{
803+ return unipolar ? 2815 * 2 : 2815;
804+}
805+
801806 static int ad7192_read_raw(struct iio_dev *indio_dev,
802807 struct iio_chan_spec const *chan,
803808 int *val,
@@ -824,19 +829,6 @@ static int ad7192_read_raw(struct iio_dev *indio_dev, · 20 unmodified lines
824829 *val = (smpl >> chan->scan_type.shift) &
825830 ((1 << (chan->scan_type.realbits)) - 1);
826831
827− switch (chan->type) {
828− case IIO_VOLTAGE:
829− if (!unipolar)
830− *val -= (1 << (chan->scan_type.realbits - 1));
831− break;
832− case IIO_TEMP:
833− *val -= 0x800000;
834− *val /= 2815; /* temp Kelvin */
835− *val -= 273; /* temp Celsius */
836− break;
837− default:
838− return -EINVAL;
839− }
840832 return IIO_VAL_INT;
841833
842834 case IIO_CHAN_INFO_SCALE:
@@ -848,11 +840,21 @@ static int ad7192_read_raw(struct iio_dev *indio_dev, · 5 unmodified lines
848840 mutex_unlock(&indio_dev->mlock);
849841 return IIO_VAL_INT_PLUS_NANO;
850842 case IIO_TEMP:
851− *val = 1000;
852− return IIO_VAL_INT;
843+ *val = 0;
844+ *val2 = 1000000000 / ad7192_get_temp_scale(unipolar);
845+ return IIO_VAL_INT_PLUS_NANO;
853846 default:
854847 return -EINVAL;
855848 }
849+ case IIO_CHAN_INFO_OFFSET:
850+ if (!unipolar)
851+ *val = -(1 << (chan->scan_type.realbits - 1));
852+ else
853+ *val = 0;
854+ /* Kelvin to Celsius */
855+ if (chan->type == IIO_TEMP)
856+ *val -= 273 * ad7192_get_temp_scale(unipolar);
857+ return IIO_VAL_INT;
856858 }
857859
858860 return -EINVAL;
@@ -890,7 +892,7 @@ static int ad7192_write_raw(struct iio_dev *indio_dev, · 31 unmodified lines
890892 }
891893 ret = 0;
892894 }
893−
895+ break;
894896 default:
895897 ret = -EINVAL;
896898 }
@@ -942,20 +944,22 @@ static const struct iio_info ad7195_info = { · 45 unmodified lines
942944 .channel = _chan, \
943945 .channel2 = _chan2, \
944946 .info_mask = IIO_CHAN_INFO_RAW_SEPARATE_BIT | \
945− IIO_CHAN_INFO_SCALE_SHARED_BIT, \
947+ IIO_CHAN_INFO_SCALE_SHARED_BIT | \
948+ IIO_CHAN_INFO_OFFSET_SHARED_BIT, \
946949 .address = _address, \
947950 .scan_index = _si, \
948− .scan_type = IIO_ST('s', 24, 32, 0)}
951+ .scan_type = IIO_ST('u', 24, 32, 0)}
949952
950953 #define AD7192_CHAN(_chan, _address, _si) \
951954 { .type = IIO_VOLTAGE, \
952955 .indexed = 1, \
953956 .channel = _chan, \
954957 .info_mask = IIO_CHAN_INFO_RAW_SEPARATE_BIT | \
955− IIO_CHAN_INFO_SCALE_SHARED_BIT, \
958+ IIO_CHAN_INFO_SCALE_SHARED_BIT | \
959+ IIO_CHAN_INFO_OFFSET_SHARED_BIT, \
956960 .address = _address, \
957961 .scan_index = _si, \
958− .scan_type = IIO_ST('s', 24, 32, 0)}
962+ .scan_type = IIO_ST('u', 24, 32, 0)}
959963
960964 #define AD7192_CHAN_TEMP(_chan, _address, _si) \
961965 { .type = IIO_TEMP, \
@@ -965,7 +969,7 @@ static const struct iio_info ad7195_info = { · 3 unmodified lines
965969 IIO_CHAN_INFO_SCALE_SEPARATE_BIT, \
966970 .address = _address, \
967971 .scan_index = _si, \
968− .scan_type = IIO_ST('s', 24, 32, 0)}
972+ .scan_type = IIO_ST('u', 24, 32, 0)}
969973
970974 static struct iio_chan_spec ad7192_channels[] = {
971975 AD7192_CHAN_DIFF(1, 2, NULL, AD7192_CH_AIN1P_AIN2M, 0),
drivers/staging/iio/adc/ad7298_ring.c+1−1
@@ -76,7 +76,7 @@ static irqreturn_t ad7298_trigger_handler(int irq, void *p) · 75 unmodified lines
7676 struct iio_dev *indio_dev = pf->indio_dev;
7777 struct ad7298_state *st = iio_priv(indio_dev);
7878 struct iio_buffer *ring = indio_dev->buffer;
79− s64 time_ns;
79+ s64 time_ns = 0;
8080 __u16 buf[16];
8181 int b_sent, i;
8282
drivers/staging/iio/adc/ad7780.c+6−4
@@ -131,9 +131,10 @@ static const struct ad7780_chip_info ad7780_chip_info_tbl[] = { · 130 unmodified lines
131131 .indexed = 1,
132132 .channel = 0,
133133 .info_mask = IIO_CHAN_INFO_RAW_SEPARATE_BIT |
134− IIO_CHAN_INFO_SCALE_SHARED_BIT,
134+ IIO_CHAN_INFO_SCALE_SHARED_BIT |
135+ IIO_CHAN_INFO_OFFSET_SHARED_BIT,
135136 .scan_type = {
136− .sign = 's',
137+ .sign = 'u',
137138 .realbits = 24,
138139 .storagebits = 32,
139140 .shift = 8,
@@ -146,9 +147,10 @@ static const struct ad7780_chip_info ad7780_chip_info_tbl[] = { · 6 unmodified lines
146147 .indexed = 1,
147148 .channel = 0,
148149 .info_mask = IIO_CHAN_INFO_RAW_SEPARATE_BIT |
149− IIO_CHAN_INFO_SCALE_SHARED_BIT,
150+ IIO_CHAN_INFO_SCALE_SHARED_BIT |
151+ IIO_CHAN_INFO_OFFSET_SHARED_BIT,
150152 .scan_type = {
151− .sign = 's',
153+ .sign = 'u',
152154 .realbits = 20,
153155 .storagebits = 32,
154156 .shift = 12,
drivers/staging/iio/adc/ad7793.c+60−39
@@ -563,8 +563,9 @@ static ssize_t ad7793_show_scale_available(struct device *dev, · 562 unmodified lines
563563 return len;
564564 }
565565
566−static IIO_DEVICE_ATTR_NAMED(in_m_in_scale_available, in-in_scale_available,
567− S_IRUGO, ad7793_show_scale_available, NULL, 0);
566+static IIO_DEVICE_ATTR_NAMED(in_m_in_scale_available,
567+ in_voltage-voltage_scale_available, S_IRUGO,
568+ ad7793_show_scale_available, NULL, 0);
568569
569570 static struct attribute *ad7793_attributes[] = {
570571 &iio_dev_attr_sampling_frequency.dev_attr.attr,
@@ -604,9 +605,6 @@ static int ad7793_read_raw(struct iio_dev *indio_dev, · 33 unmodified lines
604605 *val = (smpl >> chan->scan_type.shift) &
605606 ((1 << (chan->scan_type.realbits)) - 1);
606607
607− if (!unipolar)
608− *val -= (1 << (chan->scan_type.realbits - 1));
609−
610608 return IIO_VAL_INT;
611609
612610 case IIO_CHAN_INFO_SCALE:
@@ -620,25 +618,38 @@ static int ad7793_read_raw(struct iio_dev *indio_dev, · 7 unmodified lines
620618 return IIO_VAL_INT_PLUS_NANO;
621619 } else {
622620 /* 1170mV / 2^23 * 6 */
623− scale_uv = (1170ULL * 100000000ULL * 6ULL)
624− >> (chan->scan_type.realbits -
625− (unipolar ? 0 : 1));
621+ scale_uv = (1170ULL * 100000000ULL * 6ULL);
626622 }
627623 break;
628624 case IIO_TEMP:
629− /* Always uses unity gain and internal ref */
630− scale_uv = (2500ULL * 100000000ULL)
631− >> (chan->scan_type.realbits -
632− (unipolar ? 0 : 1));
625+ /* 1170mV / 0.81 mV/C / 2^23 */
626+ scale_uv = 1444444444444ULL;
633627 break;
634628 default:
635629 return -EINVAL;
636630 }
637631
638− *val2 = do_div(scale_uv, 100000000) * 10;
639− *val = scale_uv;
640−
632+ scale_uv >>= (chan->scan_type.realbits - (unipolar ? 0 : 1));
633+ *val = 0;
634+ *val2 = scale_uv;
641635 return IIO_VAL_INT_PLUS_NANO;
636+ case IIO_CHAN_INFO_OFFSET:
637+ if (!unipolar)
638+ *val = -(1 << (chan->scan_type.realbits - 1));
639+ else
640+ *val = 0;
641+
642+ /* Kelvin to Celsius */
643+ if (chan->type == IIO_TEMP) {
644+ unsigned long long offset;
645+ unsigned int shift;
646+
647+ shift = chan->scan_type.realbits - (unipolar ? 0 : 1);
648+ offset = 273ULL << shift;
649+ do_div(offset, 1444);
650+ *val -= offset;
651+ }
652+ return IIO_VAL_INT;
642653 }
643654 return -EINVAL;
644655 }
@@ -676,7 +687,7 @@ static int ad7793_write_raw(struct iio_dev *indio_dev, · 31 unmodified lines
676687 }
677688 ret = 0;
678689 }
679−
690+ break;
680691 default:
681692 ret = -EINVAL;
682693 }
@@ -720,9 +731,10 @@ static const struct ad7793_chip_info ad7793_chip_info_tbl[] = { · 37 unmodified lines
720731 .channel2 = 0,
721732 .address = AD7793_CH_AIN1P_AIN1M,
722733 .info_mask = IIO_CHAN_INFO_RAW_SEPARATE_BIT |
723− IIO_CHAN_INFO_SCALE_SHARED_BIT,
734+ IIO_CHAN_INFO_SCALE_SHARED_BIT |
735+ IIO_CHAN_INFO_OFFSET_SHARED_BIT,
724736 .scan_index = 0,
725− .scan_type = IIO_ST('s', 24, 32, 0)
737+ .scan_type = IIO_ST('u', 24, 32, 0)
726738 },
727739 .channel[1] = {
728740 .type = IIO_VOLTAGE,
@@ -732,9 +744,10 @@ static const struct ad7793_chip_info ad7793_chip_info_tbl[] = { · 3 unmodified lines
732744 .channel2 = 1,
733745 .address = AD7793_CH_AIN2P_AIN2M,
734746 .info_mask = IIO_CHAN_INFO_RAW_SEPARATE_BIT |
735− IIO_CHAN_INFO_SCALE_SHARED_BIT,
747+ IIO_CHAN_INFO_SCALE_SHARED_BIT |
748+ IIO_CHAN_INFO_OFFSET_SHARED_BIT,
736749 .scan_index = 1,
737− .scan_type = IIO_ST('s', 24, 32, 0)
750+ .scan_type = IIO_ST('u', 24, 32, 0)
738751 },
739752 .channel[2] = {
740753 .type = IIO_VOLTAGE,
@@ -744,9 +757,10 @@ static const struct ad7793_chip_info ad7793_chip_info_tbl[] = { · 3 unmodified lines
744757 .channel2 = 2,
745758 .address = AD7793_CH_AIN3P_AIN3M,
746759 .info_mask = IIO_CHAN_INFO_RAW_SEPARATE_BIT |
747− IIO_CHAN_INFO_SCALE_SHARED_BIT,
760+ IIO_CHAN_INFO_SCALE_SHARED_BIT |
761+ IIO_CHAN_INFO_OFFSET_SHARED_BIT,
748762 .scan_index = 2,
749− .scan_type = IIO_ST('s', 24, 32, 0)
763+ .scan_type = IIO_ST('u', 24, 32, 0)
750764 },
751765 .channel[3] = {
752766 .type = IIO_VOLTAGE,
@@ -757,9 +771,10 @@ static const struct ad7793_chip_info ad7793_chip_info_tbl[] = { · 4 unmodified lines
757771 .channel2 = 2,
758772 .address = AD7793_CH_AIN1M_AIN1M,
759773 .info_mask = IIO_CHAN_INFO_RAW_SEPARATE_BIT |
760− IIO_CHAN_INFO_SCALE_SHARED_BIT,
774+ IIO_CHAN_INFO_SCALE_SHARED_BIT |
775+ IIO_CHAN_INFO_OFFSET_SHARED_BIT,
761776 .scan_index = 3,
762− .scan_type = IIO_ST('s', 24, 32, 0)
777+ .scan_type = IIO_ST('u', 24, 32, 0)
763778 },
764779 .channel[4] = {
765780 .type = IIO_TEMP,
@@ -769,7 +784,7 @@ static const struct ad7793_chip_info ad7793_chip_info_tbl[] = { · 3 unmodified lines
769784 .info_mask = IIO_CHAN_INFO_RAW_SEPARATE_BIT |
770785 IIO_CHAN_INFO_SCALE_SEPARATE_BIT,
771786 .scan_index = 4,
772− .scan_type = IIO_ST('s', 24, 32, 0),
787+ .scan_type = IIO_ST('u', 24, 32, 0),
773788 },
774789 .channel[5] = {
775790 .type = IIO_VOLTAGE,
@@ -778,9 +793,10 @@ static const struct ad7793_chip_info ad7793_chip_info_tbl[] = { · 2 unmodified lines
778793 .channel = 4,
779794 .address = AD7793_CH_AVDD_MONITOR,
780795 .info_mask = IIO_CHAN_INFO_RAW_SEPARATE_BIT |
781− IIO_CHAN_INFO_SCALE_SEPARATE_BIT,
796+ IIO_CHAN_INFO_SCALE_SEPARATE_BIT |
797+ IIO_CHAN_INFO_OFFSET_SHARED_BIT,
782798 .scan_index = 5,
783− .scan_type = IIO_ST('s', 24, 32, 0),
799+ .scan_type = IIO_ST('u', 24, 32, 0),
784800 },
785801 .channel[6] = IIO_CHAN_SOFT_TIMESTAMP(6),
786802 },
@@ -793,9 +809,10 @@ static const struct ad7793_chip_info ad7793_chip_info_tbl[] = { · 6 unmodified lines
793809 .channel2 = 0,
794810 .address = AD7793_CH_AIN1P_AIN1M,
795811 .info_mask = IIO_CHAN_INFO_RAW_SEPARATE_BIT |
796− IIO_CHAN_INFO_SCALE_SHARED_BIT,
812+ IIO_CHAN_INFO_SCALE_SHARED_BIT |
813+ IIO_CHAN_INFO_OFFSET_SHARED_BIT,
797814 .scan_index = 0,
798− .scan_type = IIO_ST('s', 16, 32, 0)
815+ .scan_type = IIO_ST('u', 16, 32, 0)
799816 },
800817 .channel[1] = {
801818 .type = IIO_VOLTAGE,
@@ -805,9 +822,10 @@ static const struct ad7793_chip_info ad7793_chip_info_tbl[] = { · 3 unmodified lines
805822 .channel2 = 1,
806823 .address = AD7793_CH_AIN2P_AIN2M,
807824 .info_mask = IIO_CHAN_INFO_RAW_SEPARATE_BIT |
808− IIO_CHAN_INFO_SCALE_SHARED_BIT,
825+ IIO_CHAN_INFO_SCALE_SHARED_BIT |
826+ IIO_CHAN_INFO_OFFSET_SHARED_BIT,
809827 .scan_index = 1,
810− .scan_type = IIO_ST('s', 16, 32, 0)
828+ .scan_type = IIO_ST('u', 16, 32, 0)
811829 },
812830 .channel[2] = {
813831 .type = IIO_VOLTAGE,
@@ -817,9 +835,10 @@ static const struct ad7793_chip_info ad7793_chip_info_tbl[] = { · 3 unmodified lines
817835 .channel2 = 2,
818836 .address = AD7793_CH_AIN3P_AIN3M,
819837 .info_mask = IIO_CHAN_INFO_RAW_SEPARATE_BIT |
820− IIO_CHAN_INFO_SCALE_SHARED_BIT,
838+ IIO_CHAN_INFO_SCALE_SHARED_BIT |
839+ IIO_CHAN_INFO_OFFSET_SHARED_BIT,
821840 .scan_index = 2,
822− .scan_type = IIO_ST('s', 16, 32, 0)
841+ .scan_type = IIO_ST('u', 16, 32, 0)
823842 },
824843 .channel[3] = {
825844 .type = IIO_VOLTAGE,
@@ -830,9 +849,10 @@ static const struct ad7793_chip_info ad7793_chip_info_tbl[] = { · 4 unmodified lines
830849 .channel2 = 2,
831850 .address = AD7793_CH_AIN1M_AIN1M,
832851 .info_mask = IIO_CHAN_INFO_RAW_SEPARATE_BIT |
833− IIO_CHAN_INFO_SCALE_SHARED_BIT,
852+ IIO_CHAN_INFO_SCALE_SHARED_BIT |
853+ IIO_CHAN_INFO_OFFSET_SHARED_BIT,
834854 .scan_index = 3,
835− .scan_type = IIO_ST('s', 16, 32, 0)
855+ .scan_type = IIO_ST('u', 16, 32, 0)
836856 },
837857 .channel[4] = {
838858 .type = IIO_TEMP,
@@ -842,7 +862,7 @@ static const struct ad7793_chip_info ad7793_chip_info_tbl[] = { · 3 unmodified lines
842862 .info_mask = IIO_CHAN_INFO_RAW_SEPARATE_BIT |
843863 IIO_CHAN_INFO_SCALE_SEPARATE_BIT,
844864 .scan_index = 4,
845− .scan_type = IIO_ST('s', 16, 32, 0),
865+ .scan_type = IIO_ST('u', 16, 32, 0),
846866 },
847867 .channel[5] = {
848868 .type = IIO_VOLTAGE,
@@ -851,9 +871,10 @@ static const struct ad7793_chip_info ad7793_chip_info_tbl[] = { · 2 unmodified lines
851871 .channel = 4,
852872 .address = AD7793_CH_AVDD_MONITOR,
853873 .info_mask = IIO_CHAN_INFO_RAW_SEPARATE_BIT |
854− IIO_CHAN_INFO_SCALE_SEPARATE_BIT,
874+ IIO_CHAN_INFO_SCALE_SEPARATE_BIT |
875+ IIO_CHAN_INFO_OFFSET_SHARED_BIT,
855876 .scan_index = 5,
856− .scan_type = IIO_ST('s', 16, 32, 0),
877+ .scan_type = IIO_ST('u', 16, 32, 0),
857878 },
858879 .channel[6] = IIO_CHAN_SOFT_TIMESTAMP(6),
859880 },
@@ -901,7 +922,7 @@ static int __devinit ad7793_probe(struct spi_device *spi) · 41 unmodified lines
901922 else if (voltage_uv)
902923 st->int_vref_mv = voltage_uv / 1000;
903924 else
904− st->int_vref_mv = 2500; /* Build-in ref */
925+ st->int_vref_mv = 1170; /* Build-in ref */
905926
906927 spi_set_drvdata(spi, indio_dev);
907928 st->spi = spi;
include/linux/iio/frequency/adf4350.h+2−0
@@ -87,6 +87,8 @@ · 86 unmodified lines
8787 #define ADF4350_MAX_BANDSEL_CLK 125000 /* Hz */
8888 #define ADF4350_MAX_FREQ_REFIN 250000000 /* Hz */
8989 #define ADF4350_MAX_MODULUS 4095
90+#define ADF4350_MAX_R_CNT 1023
91+
9092
9193 /**
9294 * struct adf4350_platform_data - platform specific information