Merge 5.5-rc7 into staging-next
authorGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Wed, 22 Jan 2020 08:05:34 +0000 (09:05 +0100)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Wed, 22 Jan 2020 08:05:34 +0000 (09:05 +0100)
We want the staging fixes in here as well

Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
1  2 
MAINTAINERS
drivers/iio/adc/ad7124.c
drivers/iio/imu/st_lsm6dsx/st_lsm6dsx_core.c
drivers/iio/industrialio-buffer.c

diff --combined MAINTAINERS
@@@ -674,14 -674,6 +674,14 @@@ S:       Maintaine
  F:    Documentation/i2c/busses/i2c-ali1563.rst
  F:    drivers/i2c/busses/i2c-ali1563.c
  
 +ALL SENSORS DLH SERIES PRESSURE SENSORS DRIVER
 +M:    Tomislav Denis <tomislav.denis@avl.com>
 +W:    http://www.allsensors.com/
 +S:    Maintained
 +L:    linux-iio@vger.kernel.org
 +F:    drivers/iio/pressure/dlhl60d.c
 +F:    Documentation/devicetree/bindings/iio/pressure/asc,dlhl60d.yaml
 +
  ALLEGRO DVT VIDEO IP CORE DRIVER
  M:    Michael Tretter <m.tretter@pengutronix.de>
  R:    Pengutronix Kernel Team <kernel@pengutronix.de>
@@@ -728,7 -720,7 +728,7 @@@ F: Documentation/devicetree/bindings/i2
  F:    drivers/i2c/busses/i2c-altera.c
  
  ALTERA MAILBOX DRIVER
- M:    Ley Foon Tan <lftan@altera.com>
+ M:    Ley Foon Tan <ley.foon.tan@intel.com>
  L:    nios2-dev@lists.rocketboards.org (moderated for non-subscribers)
  S:    Maintained
  F:    drivers/mailbox/mailbox-altera.c
@@@ -908,14 -900,6 +908,14 @@@ S:       Supporte
  F:    drivers/iio/dac/ad5758.c
  F:    Documentation/devicetree/bindings/iio/dac/ad5758.txt
  
 +ANALOG DEVICES INC AD7091R5 DRIVER
 +M:    Beniamin Bia <beniamin.bia@analog.com>
 +L:    linux-iio@vger.kernel.org
 +W:    http://ez.analog.com/community/linux-device-drivers
 +S:    Supported
 +F:    drivers/iio/adc/ad7091r5.c
 +F:    Documentation/devicetree/bindings/iio/adc/adi,ad7091r5.yaml
 +
  ANALOG DEVICES INC AD7124 DRIVER
  M:    Stefan Popa <stefan.popa@analog.com>
  L:    linux-iio@vger.kernel.org
@@@ -1061,7 -1045,7 +1061,7 @@@ S:      Supporte
  F:    Documentation/ABI/testing/sysfs-bus-iio-frequency-ad9523
  F:    Documentation/ABI/testing/sysfs-bus-iio-frequency-adf4350
  F:    drivers/iio/*/ad*
 -F:    drivers/iio/adc/ltc2497*
 +F:    drivers/iio/adc/ltc249*
  X:    drivers/iio/*/adjd*
  F:    drivers/staging/iio/*/ad*
  
@@@ -1423,7 -1407,7 +1423,7 @@@ T:      git git://git.kernel.org/pub/scm/lin
  
  ARM/ACTIONS SEMI ARCHITECTURE
  M:    Andreas Färber <afaerber@suse.de>
R:    Manivannan Sadhasivam <manivannan.sadhasivam@linaro.org>
M:    Manivannan Sadhasivam <manivannan.sadhasivam@linaro.org>
  L:    linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
  S:    Maintained
  N:    owl
@@@ -3107,13 -3091,6 +3107,13 @@@ S:    Supporte
  F:    drivers/net/bonding/
  F:    include/uapi/linux/if_bonding.h
  
 +BOSCH SENSORTEC BMA400 ACCELEROMETER IIO DRIVER
 +M:    Dan Robertson <dan@dlrobertson.com>
 +L:    linux-iio@vger.kernel.org
 +S:    Maintained
 +F:    drivers/iio/accel/bma400*
 +F:    Documentation/devicetree/bindings/iio/accel/bosch,bma400.yaml
 +
  BPF (Safe dynamic programs and tools)
  M:    Alexei Starovoitov <ast@kernel.org>
  M:    Daniel Borkmann <daniel@iogearbox.net>
@@@ -3173,7 -3150,7 +3173,7 @@@ S:      Maintaine
  F:    arch/mips/net/
  
  BPF JIT for NFP NICs
- M:    Jakub Kicinski <jakub.kicinski@netronome.com>
+ M:    Jakub Kicinski <kuba@kernel.org>
  L:    netdev@vger.kernel.org
  L:    bpf@vger.kernel.org
  S:    Supported
@@@ -8833,7 -8810,7 +8833,7 @@@ S:      Maintaine
  F:    drivers/isdn/mISDN
  F:    drivers/isdn/hardware
  
 -ISDN/CAPI SUBSYSTEM
 +ISDN/CMTP OVER BLUETOOTH
  M:    Karsten Keil <isdn@linux-pingi.de>
  L:    isdn4linux@listserv.isdn4linux.de (subscribers-only)
  L:    netdev@vger.kernel.org
@@@ -8841,6 -8818,7 +8841,6 @@@ W:      http://www.isdn4linux.d
  S:    Odd Fixes
  F:    Documentation/isdn/
  F:    drivers/isdn/capi/
 -F:    drivers/staging/isdn/
  F:    net/bluetooth/cmtp/
  F:    include/linux/isdn/
  F:    include/uapi/linux/isdn/
@@@ -11453,7 -11431,7 +11453,7 @@@ F:   include/uapi/linux/netrom.
  F:    net/netrom/
  
  NETRONOME ETHERNET DRIVERS
- M:    Jakub Kicinski <jakub.kicinski@netronome.com>
+ M:    Jakub Kicinski <kuba@kernel.org>
  L:    oss-drivers@netronome.com
  S:    Maintained
  F:    drivers/net/ethernet/netronome/
@@@ -11613,7 -11591,7 +11613,7 @@@ M:   Boris Pismenny <borisp@mellanox.com
  M:    Aviad Yehezkel <aviadye@mellanox.com>
  M:    John Fastabend <john.fastabend@gmail.com>
  M:    Daniel Borkmann <daniel@iogearbox.net>
- M:    Jakub Kicinski <jakub.kicinski@netronome.com>
+ M:    Jakub Kicinski <kuba@kernel.org>
  L:    netdev@vger.kernel.org
  S:    Maintained
  F:    net/tls/*
@@@ -11625,7 -11603,7 +11625,7 @@@ L:   linux-wireless@vger.kernel.or
  Q:    http://patchwork.kernel.org/project/linux-wireless/list/
  
  NETDEVSIM
- M:    Jakub Kicinski <jakub.kicinski@netronome.com>
+ M:    Jakub Kicinski <kuba@kernel.org>
  S:    Maintained
  F:    drivers/net/netdevsim/*
  
@@@ -11702,7 -11680,7 +11702,7 @@@ F:   Documentation/scsi/NinjaSCSI.tx
  F:    drivers/scsi/nsp32*
  
  NIOS2 ARCHITECTURE
- M:    Ley Foon Tan <lftan@altera.com>
+ M:    Ley Foon Tan <ley.foon.tan@intel.com>
  L:    nios2-dev@lists.rocketboards.org (moderated for non-subscribers)
  T:    git git://git.kernel.org/pub/scm/linux/kernel/git/lftan/nios2.git
  S:    Maintained
@@@ -12469,13 -12447,6 +12469,13 @@@ L: platform-driver-x86@vger.kernel.or
  S:    Maintained
  F:    drivers/platform/x86/panasonic-laptop.c
  
 +PARALLAX PING IIO SENSOR DRIVER
 +M:    Andreas Klinger <ak@it-klinger.de>
 +L:    linux-iio@vger.kernel.org
 +S:    Maintained
 +F:    Documentation/devicetree/bindings/iio/proximity/parallax-ping.yaml
 +F:    drivers/iio/proximity/ping.c
 +
  PARALLEL LCD/KEYPAD PANEL DRIVER
  M:    Willy Tarreau <willy@haproxy.com>
  M:    Ksenija Stanojevic <ksenija.stanojevic@gmail.com>
@@@ -12593,7 -12564,7 +12593,7 @@@ F:   Documentation/devicetree/bindings/pc
  F:    drivers/pci/controller/pci-aardvark.c
  
  PCI DRIVER FOR ALTERA PCIE IP
- M:    Ley Foon Tan <lftan@altera.com>
+ M:    Ley Foon Tan <ley.foon.tan@intel.com>
  L:    rfi@lists.rocketboards.org (moderated for non-subscribers)
  L:    linux-pci@vger.kernel.org
  S:    Supported
@@@ -12772,7 -12743,7 +12772,7 @@@ S:   Supporte
  F:    Documentation/PCI/pci-error-recovery.rst
  
  PCI MSI DRIVER FOR ALTERA MSI IP
- M:    Ley Foon Tan <lftan@altera.com>
+ M:    Ley Foon Tan <ley.foon.tan@intel.com>
  L:    rfi@lists.rocketboards.org (moderated for non-subscribers)
  L:    linux-pci@vger.kernel.org
  S:    Supported
@@@ -18071,7 -18042,7 +18071,7 @@@ XDP (eXpress Data Path
  M:    Alexei Starovoitov <ast@kernel.org>
  M:    Daniel Borkmann <daniel@iogearbox.net>
  M:    David S. Miller <davem@davemloft.net>
- M:    Jakub Kicinski <jakub.kicinski@netronome.com>
+ M:    Jakub Kicinski <kuba@kernel.org>
  M:    Jesper Dangaard Brouer <hawk@kernel.org>
  M:    John Fastabend <john.fastabend@gmail.com>
  L:    netdev@vger.kernel.org
diff --combined drivers/iio/adc/ad7124.c
@@@ -9,7 -9,6 +9,7 @@@
  #include <linux/delay.h>
  #include <linux/device.h>
  #include <linux/err.h>
 +#include <linux/interrupt.h>
  #include <linux/kernel.h>
  #include <linux/module.h>
  #include <linux/regulator/consumer.h>
@@@ -225,7 -224,6 +225,7 @@@ static const struct ad_sigma_delta_inf
        .addr_shift = 0,
        .read_mask = BIT(6),
        .data_reg = AD7124_DATA,
 +      .irq_flags = IRQF_TRIGGER_FALLING,
  };
  
  static int ad7124_set_channel_odr(struct ad7124_state *st,
@@@ -496,13 -494,11 +496,11 @@@ static int ad7124_of_parse_channel_conf
                st->channel_config[channel].buf_negative =
                        of_property_read_bool(child, "adi,buffered-negative");
  
-               *chan = ad7124_channel_template;
-               chan->address = channel;
-               chan->scan_index = channel;
-               chan->channel = ain[0];
-               chan->channel2 = ain[1];
-               chan++;
+               chan[channel] = ad7124_channel_template;
+               chan[channel].address = channel;
+               chan[channel].scan_index = channel;
+               chan[channel].channel = ain[0];
+               chan[channel].channel2 = ain[1];
        }
  
        return 0;
@@@ -54,7 -54,6 +54,7 @@@
  #include <linux/interrupt.h>
  #include <linux/irq.h>
  #include <linux/pm.h>
 +#include <linux/property.h>
  #include <linux/regmap.h>
  #include <linux/bitfield.h>
  
@@@ -656,10 -655,6 +656,10 @@@ static const struct st_lsm6dsx_setting
                                .addr = 0x08,
                                .mask = GENMASK(5, 3),
                        },
 +                      [ST_LSM6DSX_ID_EXT0] = {
 +                              .addr = 0x09,
 +                              .mask = GENMASK(2, 0),
 +                      },
                },
                .fifo_ops = {
                        .update_fifo = st_lsm6dsx_update_fifo,
                                .mask = GENMASK(5, 3),
                        },
                },
 +              .shub_settings = {
 +                      .page_mux = {
 +                              .addr = 0x01,
 +                              .mask = BIT(7),
 +                      },
 +                      .master_en = {
 +                              .addr = 0x1a,
 +                              .mask = BIT(0),
 +                      },
 +                      .pullup_en = {
 +                              .addr = 0x1a,
 +                              .mask = BIT(3),
 +                      },
 +                      .aux_sens = {
 +                              .addr = 0x04,
 +                              .mask = GENMASK(5, 4),
 +                      },
 +                      .wr_once = {
 +                              .addr = 0x07,
 +                              .mask = BIT(5),
 +                      },
 +                      .emb_func = {
 +                              .addr = 0x19,
 +                              .mask = BIT(2),
 +                      },
 +                      .num_ext_dev = 1,
 +                      .shub_out = {
 +                              .addr = 0x2e,
 +                      },
 +                      .slv0_addr = 0x02,
 +                      .dw_slv0_addr = 0x0e,
 +                      .pause = 0x7,
 +              },
                .event_settings = {
                        .enable_reg = {
                                .addr = 0x58,
                                .mask = BIT(6),
                        },
                        .master_en = {
 +                              .sec_page = true,
                                .addr = 0x14,
                                .mask = BIT(2),
                        },
                        .pullup_en = {
 +                              .sec_page = true,
                                .addr = 0x14,
                                .mask = BIT(3),
                        },
                                .addr = 0x14,
                                .mask = BIT(6),
                        },
 -                      .shub_out = 0x02,
 +                      .num_ext_dev = 3,
 +                      .shub_out = {
 +                              .sec_page = true,
 +                              .addr = 0x02,
 +                      },
                        .slv0_addr = 0x15,
                        .dw_slv0_addr = 0x21,
                        .batch_en = BIT(3),
                                .mask = BIT(6),
                        },
                        .master_en = {
 +                              .sec_page = true,
                                .addr = 0x14,
                                .mask = BIT(2),
                        },
                        .pullup_en = {
 +                              .sec_page = true,
                                .addr = 0x14,
                                .mask = BIT(3),
                        },
                                .addr = 0x14,
                                .mask = BIT(6),
                        },
 -                      .shub_out = 0x02,
 +                      .num_ext_dev = 3,
 +                      .shub_out = {
 +                              .sec_page = true,
 +                              .addr = 0x02,
 +                      },
                        .slv0_addr = 0x15,
                        .dw_slv0_addr = 0x21,
                        .batch_en = BIT(3),
@@@ -1351,7 -1301,8 +1351,8 @@@ static int st_lsm6dsx_check_whoami(stru
  
        for (i = 0; i < ARRAY_SIZE(st_lsm6dsx_sensor_settings); i++) {
                for (j = 0; j < ST_LSM6DSX_MAX_ID; j++) {
-                       if (id == st_lsm6dsx_sensor_settings[i].id[j].hw_id)
+                       if (st_lsm6dsx_sensor_settings[i].id[j].name &&
+                           id == st_lsm6dsx_sensor_settings[i].id[j].hw_id)
                                break;
                }
                if (j < ST_LSM6DSX_MAX_ID)
@@@ -1555,11 -1506,8 +1556,11 @@@ static int st_lsm6dsx_read_oneshot(stru
        if (err < 0)
                return err;
  
 -      if (!hw->enable_event)
 -              st_lsm6dsx_sensor_set_enable(sensor, false);
 +      if (!hw->enable_event) {
 +              err = st_lsm6dsx_sensor_set_enable(sensor, false);
 +              if (err < 0)
 +                      return err;
 +      }
  
        *val = (s16)le16_to_cpu(data);
  
@@@ -1661,11 -1609,11 +1662,11 @@@ static int st_lsm6dsx_event_setup(struc
  }
  
  static int st_lsm6dsx_read_event(struct iio_dev *iio_dev,
 -                                 const struct iio_chan_spec *chan,
 -                                 enum iio_event_type type,
 -                                 enum iio_event_direction dir,
 -                                 enum iio_event_info info,
 -                                 int *val, int *val2)
 +                               const struct iio_chan_spec *chan,
 +                               enum iio_event_type type,
 +                               enum iio_event_direction dir,
 +                               enum iio_event_info info,
 +                               int *val, int *val2)
  {
        struct st_lsm6dsx_sensor *sensor = iio_priv(iio_dev);
        struct st_lsm6dsx_hw *hw = sensor->hw;
@@@ -1879,14 -1827,14 +1880,14 @@@ static const struct iio_info st_lsm6dsx
        .hwfifo_set_watermark = st_lsm6dsx_set_watermark,
  };
  
 -static int st_lsm6dsx_of_get_drdy_pin(struct st_lsm6dsx_hw *hw, int *drdy_pin)
 +static int st_lsm6dsx_get_drdy_pin(struct st_lsm6dsx_hw *hw, int *drdy_pin)
  {
 -      struct device_node *np = hw->dev->of_node;
 +      struct device *dev = hw->dev;
  
 -      if (!np)
 +      if (!dev_fwnode(dev))
                return -EINVAL;
  
 -      return of_property_read_u32(np, "st,drdy-int-pin", drdy_pin);
 +      return device_property_read_u32(dev, "st,drdy-int-pin", drdy_pin);
  }
  
  static int
@@@ -1895,7 -1843,7 +1896,7 @@@ st_lsm6dsx_get_drdy_reg(struct st_lsm6d
  {
        int err = 0, drdy_pin;
  
 -      if (st_lsm6dsx_of_get_drdy_pin(hw, &drdy_pin) < 0) {
 +      if (st_lsm6dsx_get_drdy_pin(hw, &drdy_pin) < 0) {
                struct st_sensors_platform_data *pdata;
                struct device *dev = hw->dev;
  
  static int st_lsm6dsx_init_shub(struct st_lsm6dsx_hw *hw)
  {
        const struct st_lsm6dsx_shub_settings *hub_settings;
 -      struct device_node *np = hw->dev->of_node;
        struct st_sensors_platform_data *pdata;
 +      struct device *dev = hw->dev;
        unsigned int data;
        int err = 0;
  
        hub_settings = &hw->settings->shub_settings;
  
 -      pdata = (struct st_sensors_platform_data *)hw->dev->platform_data;
 -      if ((np && of_property_read_bool(np, "st,pullups")) ||
 +      pdata = (struct st_sensors_platform_data *)dev->platform_data;
 +      if ((dev_fwnode(dev) && device_property_read_bool(dev, "st,pullups")) ||
            (pdata && pdata->pullups)) {
 -              err = st_lsm6dsx_set_page(hw, true);
 -              if (err < 0)
 -                      return err;
 +              if (hub_settings->pullup_en.sec_page) {
 +                      err = st_lsm6dsx_set_page(hw, true);
 +                      if (err < 0)
 +                              return err;
 +              }
  
                data = ST_LSM6DSX_SHIFT_VAL(1, hub_settings->pullup_en.mask);
                err = regmap_update_bits(hw->regmap,
                                         hub_settings->pullup_en.addr,
                                         hub_settings->pullup_en.mask, data);
  
 -              st_lsm6dsx_set_page(hw, false);
 +              if (hub_settings->pullup_en.sec_page)
 +                      st_lsm6dsx_set_page(hw, false);
  
                if (err < 0)
                        return err;
                                         hub_settings->aux_sens.mask, data);
  
                st_lsm6dsx_set_page(hw, false);
 +
 +              if (err < 0)
 +                      return err;
 +      }
 +
 +      if (hub_settings->emb_func.addr) {
 +              data = ST_LSM6DSX_SHIFT_VAL(1, hub_settings->emb_func.mask);
 +              err = regmap_update_bits(hw->regmap,
 +                                       hub_settings->emb_func.addr,
 +                                       hub_settings->emb_func.mask, data);
        }
  
        return err;
@@@ -2223,9 -2158,9 +2224,9 @@@ static irqreturn_t st_lsm6dsx_handler_t
  
  static int st_lsm6dsx_irq_setup(struct st_lsm6dsx_hw *hw)
  {
 -      struct device_node *np = hw->dev->of_node;
        struct st_sensors_platform_data *pdata;
        const struct st_lsm6dsx_reg *reg;
 +      struct device *dev = hw->dev;
        unsigned long irq_type;
        bool irq_active_low;
        int err;
        if (err < 0)
                return err;
  
 -      pdata = (struct st_sensors_platform_data *)hw->dev->platform_data;
 -      if ((np && of_property_read_bool(np, "drive-open-drain")) ||
 +      pdata = (struct st_sensors_platform_data *)dev->platform_data;
 +      if ((dev_fwnode(dev) && device_property_read_bool(dev, "drive-open-drain")) ||
            (pdata && pdata->open_drain)) {
                reg = &hw->settings->irq_config.od;
                err = regmap_update_bits(hw->regmap, reg->addr, reg->mask,
@@@ -2284,6 -2219,7 +2285,6 @@@ int st_lsm6dsx_probe(struct device *dev
  {
        struct st_sensors_platform_data *pdata = dev->platform_data;
        const struct st_lsm6dsx_shub_settings *hub_settings;
 -      struct device_node *np = dev->of_node;
        struct st_lsm6dsx_hw *hw;
        const char *name = NULL;
        int i, err;
                        return err;
        }
  
 +      err = iio_read_mount_matrix(hw->dev, "mount-matrix", &hw->orientation);
 +      if (err)
 +              return err;
 +
        for (i = 0; i < ST_LSM6DSX_ID_MAX; i++) {
                if (!hw->iio_devs[i])
                        continue;
                        return err;
        }
  
 -      if ((np && of_property_read_bool(np, "wakeup-source")) ||
 +      if ((dev_fwnode(dev) && device_property_read_bool(dev, "wakeup-source")) ||
            (pdata && pdata->wakeup_source))
                device_init_wakeup(dev, true);
  
@@@ -87,7 -87,7 +87,7 @@@ static bool iio_buffer_ready(struct iio
  }
  
  /**
 - * iio_buffer_read_first_n_outer() - chrdev read for buffer access
 + * iio_buffer_read_outer() - chrdev read for buffer access
   * @filp:     File structure pointer for the char device
   * @buf:      Destination buffer for iio buffer read
   * @n:                First n bytes to read
@@@ -99,8 -99,8 +99,8 @@@
   * Return: negative values corresponding to error codes or ret != 0
   *       for ending the reading activity
   **/
 -ssize_t iio_buffer_read_first_n_outer(struct file *filp, char __user *buf,
 -                                    size_t n, loff_t *f_ps)
 +ssize_t iio_buffer_read_outer(struct file *filp, char __user *buf,
 +                            size_t n, loff_t *f_ps)
  {
        struct iio_dev *indio_dev = filp->private_data;
        struct iio_buffer *rb = indio_dev->buffer;
        if (!indio_dev->info)
                return -ENODEV;
  
 -      if (!rb || !rb->access->read_first_n)
 +      if (!rb || !rb->access->read)
                return -EINVAL;
  
        datum_size = rb->bytes_per_datum;
                        continue;
                }
  
 -              ret = rb->access->read_first_n(rb, n, buf);
 +              ret = rb->access->read(rb, n, buf);
                if (ret == 0 && (filp->f_flags & O_NONBLOCK))
                        ret = -EAGAIN;
        } while (ret == 0);
@@@ -566,7 -566,7 +566,7 @@@ static int iio_compute_scan_bytes(struc
                                const unsigned long *mask, bool timestamp)
  {
        unsigned bytes = 0;
-       int length, i;
+       int length, i, largest = 0;
  
        /* How much space will the demuxed element take? */
        for_each_set_bit(i, mask,
                length = iio_storage_bytes_for_si(indio_dev, i);
                bytes = ALIGN(bytes, length);
                bytes += length;
+               largest = max(largest, length);
        }
  
        if (timestamp) {
                length = iio_storage_bytes_for_timestamp(indio_dev);
                bytes = ALIGN(bytes, length);
                bytes += length;
+               largest = max(largest, length);
        }
+       bytes = ALIGN(bytes, largest);
        return bytes;
  }