1. 02 3月, 2017 1 次提交
  2. 26 2月, 2017 1 次提交
  3. 11 2月, 2017 3 次提交
    • W
      iio: 104-quad-8: Fix off-by-one error when addressing flag register · ca8d8e03
      William Breathitt Gray 提交于
      The flag register is offset by 1 from the respective channel data
      register. This patch fixes an off-by-one error when attempting to read a
      channel flag register where the base address was not properly offset.
      
      Fixes: 28e5d3bb ("iio: 104-quad-8: Add IIO support for the ACCES 104-QUAD-8")
      Signed-off-by: NWilliam Breathitt Gray <vilhelm.gray@gmail.com>
      Signed-off-by: NJonathan Cameron <jic23@kernel.org>
      ca8d8e03
    • P
      iio: pressure: mpl115: do not rely on structure field ordering · 6a6e1d56
      Peter Rosin 提交于
      Fixes a regression triggered by a change in the layout of
      struct iio_chan_spec, but the real bug is in the driver which assumed
      a specific structure layout in the first place. Hint: the three bits were
      not OR:ed together as implied by the indentation prior to this patch,
      there was a comma between the first two, which accidentally moved the
      ..._SCALE and ..._OFFSET bits to the next structure field. That field
      was .info_mask_shared_by_type before the _available attributes was added
      by commit 51239600 ("iio:core: add a callback to allow drivers to
      provide _available attributes") and .info_mask_separate_available
      afterwards, and the regression happened.
      
      info_mask_shared_by_type is actually a better choice than the originally
      intended info_mask_separate for the ..._SCALE and ..._OFFSET bits since
      a constant is returned from mpl115_read_raw for the scale/offset. Using
      info_mask_shared_by_type also preserves the behavior from before the
      regression and is therefore less likely to cause other interesting side
      effects.
      
      The above mentioned regression causes unintended sysfs attibutes to
      show up that are not backed by code, in turn causing a NULL pointer
      defererence to happen on access.
      
      Fixes: 3017d90e ("iio: Add Freescale MPL115A2 pressure / temperature sensor driver")
      Fixes: 51239600 ("iio:core: add a callback to allow drivers to provide _available attributes")
      Signed-off-by: NPeter Rosin <peda@axentia.se>
      Cc: <Stable@vger.kernel.org>
      Signed-off-by: NJonathan Cameron <jic23@kernel.org>
      6a6e1d56
    • P
      iio: pressure: mpl3115: do not rely on structure field ordering · 9cf6cdba
      Peter Rosin 提交于
      Fixes a regression triggered by a change in the layout of
      struct iio_chan_spec, but the real bug is in the driver which assumed
      a specific structure layout in the first place. Hint: the two bits were
      not OR:ed together as implied by the indentation prior to this patch,
      there was a comma between them, which accidentally moved the ..._SCALE
      bit to the next structure field. That field was .info_mask_shared_by_type
      before the _available attributes was added by commit 51239600
      ("iio:core: add a callback to allow drivers to provide _available
      attributes") and .info_mask_separate_available afterwards, and the
      regression happened.
      
      info_mask_shared_by_type is actually a better choice than the originally
      intended info_mask_separate for the ..._SCALE bit since a constant is
      returned from mpl3115_read_raw for the scale. Using
      info_mask_shared_by_type also preserves the behavior from before the
      regression and is therefore less likely to cause other interesting side
      effects.
      
      The above mentioned regression causes an unintended sysfs attibute to
      show up that is not backed by code, in turn causing the following NULL
      pointer defererence to happen on access.
      
      Segmentation fault
      
      Unable to handle kernel NULL pointer dereference at virtual address 00000000
      pgd = ecc3c000
      [00000000] *pgd=87f91831
      Internal error: Oops: 80000007 [#1] SMP ARM
      Modules linked in:
      CPU: 1 PID: 1051 Comm: cat Not tainted 4.10.0-rc5-00009-gffd8858-dirty #3
      Hardware name: Freescale i.MX6 Quad/DualLite (Device Tree)
      task: ed54ec00 task.stack: ee2bc000
      PC is at 0x0
      LR is at iio_read_channel_info_avail+0x40/0x280
      pc : [<00000000>]    lr : [<c06fbc1c>]    psr: a0070013
      sp : ee2bdda8  ip : 00000000  fp : ee2bddf4
      r10: c0a53c74  r9 : ed79f000  r8 : ee8d1018
      r7 : 00001000  r6 : 00000fff  r5 : ee8b9a00  r4 : ed79f000
      r3 : ee2bddc4  r2 : ee2bddbc  r1 : c0a86dcc  r0 : ee8d1000
      Flags: NzCv  IRQs on  FIQs on  Mode SVC_32  ISA ARM  Segment none
      Control: 10c5387d  Table: 3cc3c04a  DAC: 00000051
      Process cat (pid: 1051, stack limit = 0xee2bc210)
      Stack: (0xee2bdda8 to 0xee2be000)
      dda0:                   ee2bddc0 00000002 c016d720 c016d394 ed54ec00 00000000
      ddc0: 60070013 ed413780 00000001 edffd480 ee8b9a00 00000fff 00001000 ee8d1018
      dde0: ed79f000 c0a53c74 ee2bde0c ee2bddf8 c0513c58 c06fbbe8 edffd480 edffd540
      de00: ee2bde3c ee2bde10 c0293474 c0513c40 c02933e4 ee2bde60 00000001 ed413780
      de20: 00000001 ed413780 00000000 edffd480 ee2bde4c ee2bde40 c0291d00 c02933f0
      de40: ee2bde9c ee2bde50 c024679c c0291ce0 edffd4b0 b6e37000 00020000 ee2bdf78
      de60: 00000000 00000000 ed54ec00 ed013200 00000817 c0a111fc edffd540 ed413780
      de80: b6e37000 00020000 00020000 ee2bdf78 ee2bded4 ee2bdea0 c0292890 c0246604
      dea0: c0117940 c016ba50 00000025 c0a111fc b6e37000 ed413780 ee2bdf78 00020000
      dec0: ee2bc000 b6e37000 ee2bdf44 ee2bded8 c021d158 c0292770 c0117764 b6e36004
      dee0: c0f0d7c4 ee2bdfb0 b6f89228 00021008 ee2bdfac ee2bdf00 c0101374 c0117770
      df00: 00000000 00000000 ee2bc000 00000000 ee2bdf34 ee2bdf20 c016ba04 c0171080
      df20: 00000000 00020000 ed413780 b6e37000 00000000 ee2bdf78 ee2bdf74 ee2bdf48
      df40: c021e7a0 c021d130 c023e300 c023e280 ee2bdf74 00000000 00000000 ed413780
      df60: ed413780 00020000 ee2bdfa4 ee2bdf78 c021e870 c021e71c 00000000 00000000
      df80: 00020000 00020000 b6e37000 00000003 c0108084 00000000 00000000 ee2bdfa8
      dfa0: c0107ee0 c021e838 00020000 00020000 00000003 b6e37000 00020000 0001a2b4
      dfc0: 00020000 00020000 b6e37000 00000003 7fffe000 00000000 00000000 00020000
      dfe0: 00000000 be98eb4c 0000c740 b6f1985c 60070010 00000003 00000000 00000000
      Backtrace:
      [<c06fbbdc>] (iio_read_channel_info_avail) from [<c0513c58>] (dev_attr_show+0x24/0x50)
       r10:c0a53c74 r9:ed79f000 r8:ee8d1018 r7:00001000 r6:00000fff r5:ee8b9a00
       r4:edffd480
      [<c0513c34>] (dev_attr_show) from [<c0293474>] (sysfs_kf_seq_show+0x90/0x110)
       r5:edffd540 r4:edffd480
      [<c02933e4>] (sysfs_kf_seq_show) from [<c0291d00>] (kernfs_seq_show+0x2c/0x30)
       r10:edffd480 r9:00000000 r8:ed413780 r7:00000001 r6:ed413780 r5:00000001
       r4:ee2bde60 r3:c02933e4
      [<c0291cd4>] (kernfs_seq_show) from [<c024679c>] (seq_read+0x1a4/0x4e0)
      [<c02465f8>] (seq_read) from [<c0292890>] (kernfs_fop_read+0x12c/0x1cc)
       r10:ee2bdf78 r9:00020000 r8:00020000 r7:b6e37000 r6:ed413780 r5:edffd540
       r4:c0a111fc
      [<c0292764>] (kernfs_fop_read) from [<c021d158>] (__vfs_read+0x34/0x118)
       r10:b6e37000 r9:ee2bc000 r8:00020000 r7:ee2bdf78 r6:ed413780 r5:b6e37000
       r4:c0a111fc
      [<c021d124>] (__vfs_read) from [<c021e7a0>] (vfs_read+0x90/0x11c)
       r8:ee2bdf78 r7:00000000 r6:b6e37000 r5:ed413780 r4:00020000
      [<c021e710>] (vfs_read) from [<c021e870>] (SyS_read+0x44/0x90)
       r8:00020000 r7:ed413780 r6:ed413780 r5:00000000 r4:00000000
      [<c021e82c>] (SyS_read) from [<c0107ee0>] (ret_fast_syscall+0x0/0x1c)
       r10:00000000 r8:c0108084 r7:00000003 r6:b6e37000 r5:00020000 r4:00020000
      Code: bad PC value
      ---[ end trace 9c4938ccd0389004 ]---
      
      Fixes: cc26ad45 ("iio: Add Freescale MPL3115A2 pressure / temperature sensor driver")
      Fixes: 51239600 ("iio:core: add a callback to allow drivers to provide _available attributes")
      Reported-by: NKen Lin <ken.lin@advantech.com>
      Tested-by: NKen Lin <ken.lin@advantech.com>
      Signed-off-by: NPeter Rosin <peda@axentia.se>
      Cc: <Stable@vger.kernel.org>
      Signed-off-by: NJonathan Cameron <jic23@kernel.org>
      9cf6cdba
  4. 05 2月, 2017 1 次提交
    • A
      iio: adc: handle unknow of_device_id data · 17fa2dcb
      Arnd Bergmann 提交于
      If we get an unknown 'childmode' value, a number of variables are not
      initialized properly:
      
      drivers/iio/adc/rcar-gyroadc.c: In function 'rcar_gyroadc_probe':
      drivers/iio/adc/rcar-gyroadc.c:390:5: error: 'num_channels' may be used uninitialized in this function [-Werror=maybe-uninitialized]
      drivers/iio/adc/rcar-gyroadc.c:426:22: error: 'sample_width' may be used uninitialized in this function [-Werror=maybe-uninitialized]
      drivers/iio/adc/rcar-gyroadc.c:428:23: error: 'channels' may be used uninitialized in this function [-Werror=maybe-uninitialized]
      
      The driver is currently correct, but handling this properly is more robust
      for possible modifications.
      
      There is also a false-positive warning about adcmode being possibly uninitialized,
      but that cannot happen as we also check the 'first' flag:
      
      drivers/iio/adc/rcar-gyroadc.c:398:26: error: 'adcmode' may be used uninitialized in this function [-Werror=maybe-uninitialized]
      
      This adds an initialization for 'adcmode' and bails out for any unknown childmode.
      
      Fixes: 059c53b3 ("iio: adc: Add Renesas GyroADC driver")
      Signed-off-by: NArnd Bergmann <arnd@arndb.de>
      Acked-by: NMarek Vasut <marek.vasut@gmail.com>
      Signed-off-by: NJonathan Cameron <jic23@kernel.org>
      17fa2dcb
  5. 02 2月, 2017 1 次提交
  6. 01 2月, 2017 1 次提交
  7. 31 1月, 2017 2 次提交
  8. 29 1月, 2017 5 次提交
  9. 28 1月, 2017 8 次提交
  10. 26 1月, 2017 1 次提交
    • B
      iio: Add STM32 timer trigger driver · 93fbe91b
      Benjamin Gaignard 提交于
      Timers IPs can be used to generate triggers for other IPs like
      DAC or ADC.
      Each trigger may result of timer internals signals like counter enable,
      reset or edge, this configuration could be done through "master_mode"
      device attribute.
      
      Since triggers could be used by DAC or ADC their names are defined
      in include/ nux/iio/timer/stm32-timer-trigger.h and is_stm32_iio_timer_trigger
      function could be used to check if the trigger is valid or not.
      
      "trgo" trigger have a "sampling_frequency" attribute which allow to configure
      timer sampling frequency.
      
      version 8:
      - change kernel version from 4.10 to 4.11 in ABI documentation
      
      version 7:
      - remove all iio_device related code
      - move driver into trigger directory
      
      version 5:
      - simplify tables of triggers
      - only create an IIO device when needed
      
      version 4:
      - get triggers configuration from "reg" in DT
      - add tables of triggers
      - sampling frequency is enable/disable when writing in trigger
        sampling_frequency attribute
      - no more use of interruptions
      
      version 3:
      - change compatible to "st,stm32-timer-trigger"
      - fix attributes access right
      - use string instead of int for master_mode and slave_mode
      - document device attributes in sysfs-bus-iio-timer-stm32
      
      version 2:
      - keep only one compatible
      - use st,input-triggers-names and st,output-triggers-names
        to know which triggers are accepted and/or create by the device
      Signed-off-by: NBenjamin Gaignard <benjamin.gaignard@st.com>
      Acked-by: NJonathan Cameron <jic23@kernel.org>
      Signed-off-by: NLee Jones <lee.jones@linaro.org>
      93fbe91b
  11. 23 1月, 2017 2 次提交
    • L
      iio: accel: fix Kconfig warning · ed8959f4
      Linus Walleij 提交于
      commit 76222772
      "iio: accel: st_accel: handle deprecated bindings"
      attempted to be smart and let users use the old I2C
      driver and the new SPI driver, or the old SPI driver and
      the new I2C driver in combination for the LIS3LV02,
      and put the restrictions on the I2C and SPI subdrivers
      not not be combined with the old subdrivers.
      
      This doesn't work since the IIO ST accel top-level
      component selects the I2C and SPI subdrivers, resulting
      in the following Kconfig noise:
      
      warning: (IIO_ST_ACCEL_3AXIS) selects IIO_ST_ACCEL_I2C_3AXIS
      which has unmet direct dependencies (IIO && !SENSORS_LIS3_I2C
      && IIO_ST_ACCEL_3AXIS && IIO_ST_SENSORS_I2C)
      warning: (IIO_ST_ACCEL_3AXIS) selects IIO_ST_ACCEL_SPI_3AXIS
      which has unmet direct dependencies (IIO && !SENSORS_LIS3_SPI
      && IIO_ST_ACCEL_3AXIS && IIO_ST_SENSORS_SPI)
      (...)
      
      This fixes the issue by putting the dependencies directly
      in the top-level component instead, so that it never gets
      to select its unselectable subcomponent.
      
      Fixes: 76222772 ("iio: accel: st_accel: handle deprecated bindings")
      Reported-by: NStephen Rothwell <sfr@canb.auug.org.au>
      Signed-off-by: NLinus Walleij <linus.walleij@linaro.org>
      Acked-by: NJonathan Cameron <jic23@kernel.org>
      Signed-off-by: NGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      ed8959f4
    • A
      iio: trigger: free trigger resource correctly · 10e840df
      Alison Schofield 提交于
      These stand-alone trigger drivers were using iio_trigger_put()
      where they should have been using iio_trigger_free().  The
      iio_trigger_put() adds a module_put which is bad since they
      never did a module_get.
      
      In the sysfs driver, module_get/put's are used as triggers are
      added & removed. This extra module_put() occurs on an error path
      in the probe routine (probably rare).
      
      In the bfin-timer & interrupt trigger drivers, the module resources
      are not explicitly managed, so it's doing a put on something that
      was never get'd.  It occurs on the probe error path and on the
      remove path (not so rare).
      
      Tested with the sysfs trigger driver.
      The bfin & interrupt drivers were build tested & inspected only.
      Signed-off-by: NAlison Schofield <amsfield22@gmail.com>
      Signed-off-by: NJonathan Cameron <jic23@kernel.org>
      10e840df
  12. 22 1月, 2017 11 次提交
  13. 21 1月, 2017 3 次提交