Commit 8f261041 authored by Linus Torvalds's avatar Linus Torvalds

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

Pull staging/iio fixes from Greg KH:
 "Here are some small staging and IIO driver fixes for 5.7-rc7

  Nothing major, just a collection of IIO driver fixes for reported
  issues, and a few small staging driver fixes that people have found.
  Full details are in the shortlog.

  All of these have been in linux-next for a while with no reported
  issues"

* tag 'staging-5.7-rc7' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/staging:
  staging: wfx: unlock on error path
  staging: greybus: Fix uninitialized scalar variable
  staging: kpc2000: fix error return code in kp2000_pcie_probe()
  iio: sca3000: Remove an erroneous 'get_device()'
  iio: adc: stm32-dfsdm: fix device used to request dma
  iio: adc: stm32-adc: fix device used to request dma
  iio: adc: ti-ads8344: Fix channel selection
  staging: iio: ad2s1210: Fix SPI reading
  iio: dac: vf610: Fix an error handling path in 'vf610_dac_probe()'
  iio: imu: st_lsm6dsx: unlock on error in st_lsm6dsx_shub_write_raw()
  iio: chemical: atlas-sensor: correct DO-SM channels
parents d3044d7d bcb39287
...@@ -980,7 +980,7 @@ static int sca3000_read_data(struct sca3000_state *st, ...@@ -980,7 +980,7 @@ static int sca3000_read_data(struct sca3000_state *st,
st->tx[0] = SCA3000_READ_REG(reg_address_high); st->tx[0] = SCA3000_READ_REG(reg_address_high);
ret = spi_sync_transfer(st->us, xfer, ARRAY_SIZE(xfer)); ret = spi_sync_transfer(st->us, xfer, ARRAY_SIZE(xfer));
if (ret) { if (ret) {
dev_err(get_device(&st->us->dev), "problem reading register"); dev_err(&st->us->dev, "problem reading register\n");
return ret; return ret;
} }
......
...@@ -1812,18 +1812,18 @@ static int stm32_adc_chan_of_init(struct iio_dev *indio_dev) ...@@ -1812,18 +1812,18 @@ static int stm32_adc_chan_of_init(struct iio_dev *indio_dev)
return 0; return 0;
} }
static int stm32_adc_dma_request(struct iio_dev *indio_dev) static int stm32_adc_dma_request(struct device *dev, struct iio_dev *indio_dev)
{ {
struct stm32_adc *adc = iio_priv(indio_dev); struct stm32_adc *adc = iio_priv(indio_dev);
struct dma_slave_config config; struct dma_slave_config config;
int ret; int ret;
adc->dma_chan = dma_request_chan(&indio_dev->dev, "rx"); adc->dma_chan = dma_request_chan(dev, "rx");
if (IS_ERR(adc->dma_chan)) { if (IS_ERR(adc->dma_chan)) {
ret = PTR_ERR(adc->dma_chan); ret = PTR_ERR(adc->dma_chan);
if (ret != -ENODEV) { if (ret != -ENODEV) {
if (ret != -EPROBE_DEFER) if (ret != -EPROBE_DEFER)
dev_err(&indio_dev->dev, dev_err(dev,
"DMA channel request failed with %d\n", "DMA channel request failed with %d\n",
ret); ret);
return ret; return ret;
...@@ -1930,7 +1930,7 @@ static int stm32_adc_probe(struct platform_device *pdev) ...@@ -1930,7 +1930,7 @@ static int stm32_adc_probe(struct platform_device *pdev)
if (ret < 0) if (ret < 0)
return ret; return ret;
ret = stm32_adc_dma_request(indio_dev); ret = stm32_adc_dma_request(dev, indio_dev);
if (ret < 0) if (ret < 0)
return ret; return ret;
......
...@@ -62,7 +62,7 @@ enum sd_converter_type { ...@@ -62,7 +62,7 @@ enum sd_converter_type {
struct stm32_dfsdm_dev_data { struct stm32_dfsdm_dev_data {
int type; int type;
int (*init)(struct iio_dev *indio_dev); int (*init)(struct device *dev, struct iio_dev *indio_dev);
unsigned int num_channels; unsigned int num_channels;
const struct regmap_config *regmap_cfg; const struct regmap_config *regmap_cfg;
}; };
...@@ -1365,11 +1365,12 @@ static void stm32_dfsdm_dma_release(struct iio_dev *indio_dev) ...@@ -1365,11 +1365,12 @@ static void stm32_dfsdm_dma_release(struct iio_dev *indio_dev)
} }
} }
static int stm32_dfsdm_dma_request(struct iio_dev *indio_dev) static int stm32_dfsdm_dma_request(struct device *dev,
struct iio_dev *indio_dev)
{ {
struct stm32_dfsdm_adc *adc = iio_priv(indio_dev); struct stm32_dfsdm_adc *adc = iio_priv(indio_dev);
adc->dma_chan = dma_request_chan(&indio_dev->dev, "rx"); adc->dma_chan = dma_request_chan(dev, "rx");
if (IS_ERR(adc->dma_chan)) { if (IS_ERR(adc->dma_chan)) {
int ret = PTR_ERR(adc->dma_chan); int ret = PTR_ERR(adc->dma_chan);
...@@ -1425,7 +1426,7 @@ static int stm32_dfsdm_adc_chan_init_one(struct iio_dev *indio_dev, ...@@ -1425,7 +1426,7 @@ static int stm32_dfsdm_adc_chan_init_one(struct iio_dev *indio_dev,
&adc->dfsdm->ch_list[ch->channel]); &adc->dfsdm->ch_list[ch->channel]);
} }
static int stm32_dfsdm_audio_init(struct iio_dev *indio_dev) static int stm32_dfsdm_audio_init(struct device *dev, struct iio_dev *indio_dev)
{ {
struct iio_chan_spec *ch; struct iio_chan_spec *ch;
struct stm32_dfsdm_adc *adc = iio_priv(indio_dev); struct stm32_dfsdm_adc *adc = iio_priv(indio_dev);
...@@ -1452,10 +1453,10 @@ static int stm32_dfsdm_audio_init(struct iio_dev *indio_dev) ...@@ -1452,10 +1453,10 @@ static int stm32_dfsdm_audio_init(struct iio_dev *indio_dev)
indio_dev->num_channels = 1; indio_dev->num_channels = 1;
indio_dev->channels = ch; indio_dev->channels = ch;
return stm32_dfsdm_dma_request(indio_dev); return stm32_dfsdm_dma_request(dev, indio_dev);
} }
static int stm32_dfsdm_adc_init(struct iio_dev *indio_dev) static int stm32_dfsdm_adc_init(struct device *dev, struct iio_dev *indio_dev)
{ {
struct iio_chan_spec *ch; struct iio_chan_spec *ch;
struct stm32_dfsdm_adc *adc = iio_priv(indio_dev); struct stm32_dfsdm_adc *adc = iio_priv(indio_dev);
...@@ -1499,17 +1500,17 @@ static int stm32_dfsdm_adc_init(struct iio_dev *indio_dev) ...@@ -1499,17 +1500,17 @@ static int stm32_dfsdm_adc_init(struct iio_dev *indio_dev)
init_completion(&adc->completion); init_completion(&adc->completion);
/* Optionally request DMA */ /* Optionally request DMA */
ret = stm32_dfsdm_dma_request(indio_dev); ret = stm32_dfsdm_dma_request(dev, indio_dev);
if (ret) { if (ret) {
if (ret != -ENODEV) { if (ret != -ENODEV) {
if (ret != -EPROBE_DEFER) if (ret != -EPROBE_DEFER)
dev_err(&indio_dev->dev, dev_err(dev,
"DMA channel request failed with %d\n", "DMA channel request failed with %d\n",
ret); ret);
return ret; return ret;
} }
dev_dbg(&indio_dev->dev, "No DMA support\n"); dev_dbg(dev, "No DMA support\n");
return 0; return 0;
} }
...@@ -1622,7 +1623,7 @@ static int stm32_dfsdm_adc_probe(struct platform_device *pdev) ...@@ -1622,7 +1623,7 @@ static int stm32_dfsdm_adc_probe(struct platform_device *pdev)
adc->dfsdm->fl_list[adc->fl_id].sync_mode = val; adc->dfsdm->fl_list[adc->fl_id].sync_mode = val;
adc->dev_data = dev_data; adc->dev_data = dev_data;
ret = dev_data->init(iio); ret = dev_data->init(dev, iio);
if (ret < 0) if (ret < 0)
return ret; return ret;
......
...@@ -32,16 +32,17 @@ struct ads8344 { ...@@ -32,16 +32,17 @@ struct ads8344 {
u8 rx_buf[3]; u8 rx_buf[3];
}; };
#define ADS8344_VOLTAGE_CHANNEL(chan, si) \ #define ADS8344_VOLTAGE_CHANNEL(chan, addr) \
{ \ { \
.type = IIO_VOLTAGE, \ .type = IIO_VOLTAGE, \
.indexed = 1, \ .indexed = 1, \
.channel = chan, \ .channel = chan, \
.info_mask_separate = BIT(IIO_CHAN_INFO_RAW), \ .info_mask_separate = BIT(IIO_CHAN_INFO_RAW), \
.info_mask_shared_by_type = BIT(IIO_CHAN_INFO_SCALE), \ .info_mask_shared_by_type = BIT(IIO_CHAN_INFO_SCALE), \
.address = addr, \
} }
#define ADS8344_VOLTAGE_CHANNEL_DIFF(chan1, chan2, si) \ #define ADS8344_VOLTAGE_CHANNEL_DIFF(chan1, chan2, addr) \
{ \ { \
.type = IIO_VOLTAGE, \ .type = IIO_VOLTAGE, \
.indexed = 1, \ .indexed = 1, \
...@@ -50,6 +51,7 @@ struct ads8344 { ...@@ -50,6 +51,7 @@ struct ads8344 {
.differential = 1, \ .differential = 1, \
.info_mask_separate = BIT(IIO_CHAN_INFO_RAW), \ .info_mask_separate = BIT(IIO_CHAN_INFO_RAW), \
.info_mask_shared_by_type = BIT(IIO_CHAN_INFO_SCALE), \ .info_mask_shared_by_type = BIT(IIO_CHAN_INFO_SCALE), \
.address = addr, \
} }
static const struct iio_chan_spec ads8344_channels[] = { static const struct iio_chan_spec ads8344_channels[] = {
...@@ -105,7 +107,7 @@ static int ads8344_read_raw(struct iio_dev *iio, ...@@ -105,7 +107,7 @@ static int ads8344_read_raw(struct iio_dev *iio,
switch (mask) { switch (mask) {
case IIO_CHAN_INFO_RAW: case IIO_CHAN_INFO_RAW:
mutex_lock(&adc->lock); mutex_lock(&adc->lock);
*value = ads8344_adc_conversion(adc, channel->scan_index, *value = ads8344_adc_conversion(adc, channel->address,
channel->differential); channel->differential);
mutex_unlock(&adc->lock); mutex_unlock(&adc->lock);
if (*value < 0) if (*value < 0)
......
...@@ -194,7 +194,19 @@ static const struct iio_chan_spec atlas_orp_channels[] = { ...@@ -194,7 +194,19 @@ static const struct iio_chan_spec atlas_orp_channels[] = {
}; };
static const struct iio_chan_spec atlas_do_channels[] = { static const struct iio_chan_spec atlas_do_channels[] = {
ATLAS_CONCENTRATION_CHANNEL(0, ATLAS_REG_DO_DATA), {
.type = IIO_CONCENTRATION,
.address = ATLAS_REG_DO_DATA,
.info_mask_separate =
BIT(IIO_CHAN_INFO_RAW) | BIT(IIO_CHAN_INFO_SCALE),
.scan_index = 0,
.scan_type = {
.sign = 'u',
.realbits = 32,
.storagebits = 32,
.endianness = IIO_BE,
},
},
IIO_CHAN_SOFT_TIMESTAMP(1), IIO_CHAN_SOFT_TIMESTAMP(1),
{ {
.type = IIO_TEMP, .type = IIO_TEMP,
......
...@@ -223,6 +223,7 @@ static int vf610_dac_probe(struct platform_device *pdev) ...@@ -223,6 +223,7 @@ static int vf610_dac_probe(struct platform_device *pdev)
return 0; return 0;
error_iio_device_register: error_iio_device_register:
vf610_dac_exit(info);
clk_disable_unprepare(info->clk); clk_disable_unprepare(info->clk);
return ret; return ret;
......
...@@ -544,8 +544,10 @@ st_lsm6dsx_shub_write_raw(struct iio_dev *iio_dev, ...@@ -544,8 +544,10 @@ st_lsm6dsx_shub_write_raw(struct iio_dev *iio_dev,
ref_sensor = iio_priv(hw->iio_devs[ST_LSM6DSX_ID_ACC]); ref_sensor = iio_priv(hw->iio_devs[ST_LSM6DSX_ID_ACC]);
odr = st_lsm6dsx_check_odr(ref_sensor, val, &odr_val); odr = st_lsm6dsx_check_odr(ref_sensor, val, &odr_val);
if (odr < 0) if (odr < 0) {
return odr; err = odr;
goto release;
}
sensor->ext_info.slv_odr = val; sensor->ext_info.slv_odr = val;
sensor->odr = odr; sensor->odr = odr;
...@@ -557,6 +559,7 @@ st_lsm6dsx_shub_write_raw(struct iio_dev *iio_dev, ...@@ -557,6 +559,7 @@ st_lsm6dsx_shub_write_raw(struct iio_dev *iio_dev,
break; break;
} }
release:
iio_device_release_direct_mode(iio_dev); iio_device_release_direct_mode(iio_dev);
return err; return err;
......
...@@ -537,9 +537,9 @@ static void gb_tty_set_termios(struct tty_struct *tty, ...@@ -537,9 +537,9 @@ static void gb_tty_set_termios(struct tty_struct *tty,
} }
if (C_CRTSCTS(tty) && C_BAUD(tty) != B0) if (C_CRTSCTS(tty) && C_BAUD(tty) != B0)
newline.flow_control |= GB_SERIAL_AUTO_RTSCTS_EN; newline.flow_control = GB_SERIAL_AUTO_RTSCTS_EN;
else else
newline.flow_control &= ~GB_SERIAL_AUTO_RTSCTS_EN; newline.flow_control = 0;
if (memcmp(&gb_tty->line_coding, &newline, sizeof(newline))) { if (memcmp(&gb_tty->line_coding, &newline, sizeof(newline))) {
memcpy(&gb_tty->line_coding, &newline, sizeof(newline)); memcpy(&gb_tty->line_coding, &newline, sizeof(newline));
......
...@@ -130,17 +130,24 @@ static int ad2s1210_config_write(struct ad2s1210_state *st, u8 data) ...@@ -130,17 +130,24 @@ static int ad2s1210_config_write(struct ad2s1210_state *st, u8 data)
static int ad2s1210_config_read(struct ad2s1210_state *st, static int ad2s1210_config_read(struct ad2s1210_state *st,
unsigned char address) unsigned char address)
{ {
struct spi_transfer xfer = { struct spi_transfer xfers[] = {
.len = 2, {
.rx_buf = st->rx, .len = 1,
.tx_buf = st->tx, .rx_buf = &st->rx[0],
.tx_buf = &st->tx[0],
.cs_change = 1,
}, {
.len = 1,
.rx_buf = &st->rx[1],
.tx_buf = &st->tx[1],
},
}; };
int ret = 0; int ret = 0;
ad2s1210_set_mode(MOD_CONFIG, st); ad2s1210_set_mode(MOD_CONFIG, st);
st->tx[0] = address | AD2S1210_MSB_IS_HIGH; st->tx[0] = address | AD2S1210_MSB_IS_HIGH;
st->tx[1] = AD2S1210_REG_FAULT; st->tx[1] = AD2S1210_REG_FAULT;
ret = spi_sync_transfer(st->sdev, &xfer, 1); ret = spi_sync_transfer(st->sdev, xfers, 2);
if (ret < 0) if (ret < 0)
return ret; return ret;
......
...@@ -298,7 +298,6 @@ static int kp2000_pcie_probe(struct pci_dev *pdev, ...@@ -298,7 +298,6 @@ static int kp2000_pcie_probe(struct pci_dev *pdev,
{ {
int err = 0; int err = 0;
struct kp2000_device *pcard; struct kp2000_device *pcard;
int rv;
unsigned long reg_bar_phys_addr; unsigned long reg_bar_phys_addr;
unsigned long reg_bar_phys_len; unsigned long reg_bar_phys_len;
unsigned long dma_bar_phys_addr; unsigned long dma_bar_phys_addr;
...@@ -445,11 +444,11 @@ static int kp2000_pcie_probe(struct pci_dev *pdev, ...@@ -445,11 +444,11 @@ static int kp2000_pcie_probe(struct pci_dev *pdev,
if (err < 0) if (err < 0)
goto err_release_dma; goto err_release_dma;
rv = request_irq(pcard->pdev->irq, kp2000_irq_handler, IRQF_SHARED, err = request_irq(pcard->pdev->irq, kp2000_irq_handler, IRQF_SHARED,
pcard->name, pcard); pcard->name, pcard);
if (rv) { if (err) {
dev_err(&pcard->pdev->dev, dev_err(&pcard->pdev->dev,
"%s: failed to request_irq: %d\n", __func__, rv); "%s: failed to request_irq: %d\n", __func__, err);
goto err_disable_msi; goto err_disable_msi;
} }
......
...@@ -57,8 +57,10 @@ static int send_scan_req(struct wfx_vif *wvif, ...@@ -57,8 +57,10 @@ static int send_scan_req(struct wfx_vif *wvif,
wvif->scan_abort = false; wvif->scan_abort = false;
reinit_completion(&wvif->scan_complete); reinit_completion(&wvif->scan_complete);
timeout = hif_scan(wvif, req, start_idx, i - start_idx); timeout = hif_scan(wvif, req, start_idx, i - start_idx);
if (timeout < 0) if (timeout < 0) {
wfx_tx_unlock(wvif->wdev);
return timeout; return timeout;
}
ret = wait_for_completion_timeout(&wvif->scan_complete, timeout); ret = wait_for_completion_timeout(&wvif->scan_complete, timeout);
if (req->channels[start_idx]->max_power != wvif->vif->bss_conf.txpower) if (req->channels[start_idx]->max_power != wvif->vif->bss_conf.txpower)
hif_set_output_power(wvif, wvif->vif->bss_conf.txpower); hif_set_output_power(wvif, wvif->vif->bss_conf.txpower);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment