1
0
Fork 0

Staging/IIO driver fixes for 5.12-rc4

Here are some small staging and IIO driver fixes for 5.12-rc4.
 
 They include:
 	- MAINTAINERS changes for the move of the staging mailing list
 	- comedi driver fixes to get request_irq() to work correctly
 	- counter driver fixes for reported issues with iio devices
 	- tiny iio driver fixes for reported issues.
 
 All of these have been in linux-next with no reported problems.
 
 Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
 -----BEGIN PGP SIGNATURE-----
 
 iG0EABECAC0WIQT0tgzFv3jCIUoxPcsxR9QN2y37KQUCYFc7qw8cZ3JlZ0Brcm9h
 aC5jb20ACgkQMUfUDdst+ynn+QCffC5Zjkde07XiyTwksdVu6FaV2M4AnimVDEIG
 u14uiz3TU1bd81gn1YLi
 =47FR
 -----END PGP SIGNATURE-----

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

Pull staging and IIO driver fixes from Greg KH:
 "Some small staging and IIO driver fixes:

   - MAINTAINERS changes for the move of the staging mailing list

   - comedi driver fixes to get request_irq() to work correctly

   - counter driver fixes for reported issues with iio devices

   - tiny iio driver fixes for reported issues.

  All of these have been in linux-next with no reported problems"

* tag 'staging-5.12-rc4' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/staging:
  staging: vt665x: fix alignment constraints
  staging: comedi: cb_pcidas64: fix request_irq() warn
  staging: comedi: cb_pcidas: fix request_irq() warn
  MAINTAINERS: move the staging subsystem to lists.linux.dev
  MAINTAINERS: move some real subsystems off of the staging mailing list
  iio: gyro: mpu3050: Fix error handling in mpu3050_trigger_handler
  iio: hid-sensor-temperature: Fix issues of timestamp channel
  iio: hid-sensor-humidity: Fix alignment issue of timestamp channel
  counter: stm32-timer-cnt: fix ceiling miss-alignment with reload register
  counter: stm32-timer-cnt: fix ceiling write max value
  counter: stm32-timer-cnt: Report count function when SLAVE_MODE_DISABLED
  iio: adc: ab8500-gpadc: Fix off by 10 to 3
  iio:adc:stm32-adc: Add HAS_IOMEM dependency
  iio: adis16400: Fix an error code in adis16400_initial_setup()
  iio: adc: adi-axi-adc: add proper Kconfig dependencies
  iio: adc: ad7949: fix wrong ADC result due to incorrect bit mask
  iio: hid-sensor-prox: Fix scale not correct issue
  iio:adc:qcom-spmi-vadc: add default scale to LR_MUX2_BAT_ID channel
rM2-mainline
Linus Torvalds 2021-03-21 11:54:04 -07:00
commit 1d4345eb51
14 changed files with 75 additions and 48 deletions

View File

@ -1181,7 +1181,7 @@ M: Joel Fernandes <joel@joelfernandes.org>
M: Christian Brauner <christian@brauner.io> M: Christian Brauner <christian@brauner.io>
M: Hridya Valsaraju <hridya@google.com> M: Hridya Valsaraju <hridya@google.com>
M: Suren Baghdasaryan <surenb@google.com> M: Suren Baghdasaryan <surenb@google.com>
L: devel@driverdev.osuosl.org L: linux-kernel@vger.kernel.org
S: Supported S: Supported
T: git git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/staging.git T: git git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/staging.git
F: drivers/android/ F: drivers/android/
@ -8116,7 +8116,6 @@ F: drivers/crypto/hisilicon/sec2/sec_main.c
HISILICON STAGING DRIVERS FOR HIKEY 960/970 HISILICON STAGING DRIVERS FOR HIKEY 960/970
M: Mauro Carvalho Chehab <mchehab+huawei@kernel.org> M: Mauro Carvalho Chehab <mchehab+huawei@kernel.org>
L: devel@driverdev.osuosl.org
S: Maintained S: Maintained
F: drivers/staging/hikey9xx/ F: drivers/staging/hikey9xx/
@ -17040,7 +17039,7 @@ F: drivers/staging/vt665?/
STAGING SUBSYSTEM STAGING SUBSYSTEM
M: Greg Kroah-Hartman <gregkh@linuxfoundation.org> M: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
L: devel@driverdev.osuosl.org L: linux-staging@lists.linux.dev
S: Supported S: Supported
T: git git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/staging.git T: git git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/staging.git
F: drivers/staging/ F: drivers/staging/
@ -19135,7 +19134,7 @@ VME SUBSYSTEM
M: Martyn Welch <martyn@welchs.me.uk> M: Martyn Welch <martyn@welchs.me.uk>
M: Manohar Vanga <manohar.vanga@gmail.com> M: Manohar Vanga <manohar.vanga@gmail.com>
M: Greg Kroah-Hartman <gregkh@linuxfoundation.org> M: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
L: devel@driverdev.osuosl.org L: linux-kernel@vger.kernel.org
S: Maintained S: Maintained
T: git git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/char-misc.git T: git git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/char-misc.git
F: Documentation/driver-api/vme.rst F: Documentation/driver-api/vme.rst

View File

@ -31,7 +31,7 @@ struct stm32_timer_cnt {
struct counter_device counter; struct counter_device counter;
struct regmap *regmap; struct regmap *regmap;
struct clk *clk; struct clk *clk;
u32 ceiling; u32 max_arr;
bool enabled; bool enabled;
struct stm32_timer_regs bak; struct stm32_timer_regs bak;
}; };
@ -44,13 +44,14 @@ struct stm32_timer_cnt {
* @STM32_COUNT_ENCODER_MODE_3: counts on both TI1FP1 and TI2FP2 edges * @STM32_COUNT_ENCODER_MODE_3: counts on both TI1FP1 and TI2FP2 edges
*/ */
enum stm32_count_function { enum stm32_count_function {
STM32_COUNT_SLAVE_MODE_DISABLED = -1, STM32_COUNT_SLAVE_MODE_DISABLED,
STM32_COUNT_ENCODER_MODE_1, STM32_COUNT_ENCODER_MODE_1,
STM32_COUNT_ENCODER_MODE_2, STM32_COUNT_ENCODER_MODE_2,
STM32_COUNT_ENCODER_MODE_3, STM32_COUNT_ENCODER_MODE_3,
}; };
static enum counter_count_function stm32_count_functions[] = { static enum counter_count_function stm32_count_functions[] = {
[STM32_COUNT_SLAVE_MODE_DISABLED] = COUNTER_COUNT_FUNCTION_INCREASE,
[STM32_COUNT_ENCODER_MODE_1] = COUNTER_COUNT_FUNCTION_QUADRATURE_X2_A, [STM32_COUNT_ENCODER_MODE_1] = COUNTER_COUNT_FUNCTION_QUADRATURE_X2_A,
[STM32_COUNT_ENCODER_MODE_2] = COUNTER_COUNT_FUNCTION_QUADRATURE_X2_B, [STM32_COUNT_ENCODER_MODE_2] = COUNTER_COUNT_FUNCTION_QUADRATURE_X2_B,
[STM32_COUNT_ENCODER_MODE_3] = COUNTER_COUNT_FUNCTION_QUADRATURE_X4, [STM32_COUNT_ENCODER_MODE_3] = COUNTER_COUNT_FUNCTION_QUADRATURE_X4,
@ -73,8 +74,10 @@ static int stm32_count_write(struct counter_device *counter,
const unsigned long val) const unsigned long val)
{ {
struct stm32_timer_cnt *const priv = counter->priv; struct stm32_timer_cnt *const priv = counter->priv;
u32 ceiling;
if (val > priv->ceiling) regmap_read(priv->regmap, TIM_ARR, &ceiling);
if (val > ceiling)
return -EINVAL; return -EINVAL;
return regmap_write(priv->regmap, TIM_CNT, val); return regmap_write(priv->regmap, TIM_CNT, val);
@ -90,6 +93,9 @@ static int stm32_count_function_get(struct counter_device *counter,
regmap_read(priv->regmap, TIM_SMCR, &smcr); regmap_read(priv->regmap, TIM_SMCR, &smcr);
switch (smcr & TIM_SMCR_SMS) { switch (smcr & TIM_SMCR_SMS) {
case 0:
*function = STM32_COUNT_SLAVE_MODE_DISABLED;
return 0;
case 1: case 1:
*function = STM32_COUNT_ENCODER_MODE_1; *function = STM32_COUNT_ENCODER_MODE_1;
return 0; return 0;
@ -99,9 +105,9 @@ static int stm32_count_function_get(struct counter_device *counter,
case 3: case 3:
*function = STM32_COUNT_ENCODER_MODE_3; *function = STM32_COUNT_ENCODER_MODE_3;
return 0; return 0;
default:
return -EINVAL;
} }
return -EINVAL;
} }
static int stm32_count_function_set(struct counter_device *counter, static int stm32_count_function_set(struct counter_device *counter,
@ -112,6 +118,9 @@ static int stm32_count_function_set(struct counter_device *counter,
u32 cr1, sms; u32 cr1, sms;
switch (function) { switch (function) {
case STM32_COUNT_SLAVE_MODE_DISABLED:
sms = 0;
break;
case STM32_COUNT_ENCODER_MODE_1: case STM32_COUNT_ENCODER_MODE_1:
sms = 1; sms = 1;
break; break;
@ -122,8 +131,7 @@ static int stm32_count_function_set(struct counter_device *counter,
sms = 3; sms = 3;
break; break;
default: default:
sms = 0; return -EINVAL;
break;
} }
/* Store enable status */ /* Store enable status */
@ -131,10 +139,6 @@ static int stm32_count_function_set(struct counter_device *counter,
regmap_update_bits(priv->regmap, TIM_CR1, TIM_CR1_CEN, 0); regmap_update_bits(priv->regmap, TIM_CR1, TIM_CR1_CEN, 0);
/* TIMx_ARR register shouldn't be buffered (ARPE=0) */
regmap_update_bits(priv->regmap, TIM_CR1, TIM_CR1_ARPE, 0);
regmap_write(priv->regmap, TIM_ARR, priv->ceiling);
regmap_update_bits(priv->regmap, TIM_SMCR, TIM_SMCR_SMS, sms); regmap_update_bits(priv->regmap, TIM_SMCR, TIM_SMCR_SMS, sms);
/* Make sure that registers are updated */ /* Make sure that registers are updated */
@ -185,11 +189,13 @@ static ssize_t stm32_count_ceiling_write(struct counter_device *counter,
if (ret) if (ret)
return ret; return ret;
if (ceiling > priv->max_arr)
return -ERANGE;
/* TIMx_ARR register shouldn't be buffered (ARPE=0) */ /* TIMx_ARR register shouldn't be buffered (ARPE=0) */
regmap_update_bits(priv->regmap, TIM_CR1, TIM_CR1_ARPE, 0); regmap_update_bits(priv->regmap, TIM_CR1, TIM_CR1_ARPE, 0);
regmap_write(priv->regmap, TIM_ARR, ceiling); regmap_write(priv->regmap, TIM_ARR, ceiling);
priv->ceiling = ceiling;
return len; return len;
} }
@ -274,31 +280,36 @@ static int stm32_action_get(struct counter_device *counter,
size_t function; size_t function;
int err; int err;
/* Default action mode (e.g. STM32_COUNT_SLAVE_MODE_DISABLED) */
*action = STM32_SYNAPSE_ACTION_NONE;
err = stm32_count_function_get(counter, count, &function); err = stm32_count_function_get(counter, count, &function);
if (err) if (err)
return 0; return err;
switch (function) { switch (function) {
case STM32_COUNT_SLAVE_MODE_DISABLED:
/* counts on internal clock when CEN=1 */
*action = STM32_SYNAPSE_ACTION_NONE;
return 0;
case STM32_COUNT_ENCODER_MODE_1: case STM32_COUNT_ENCODER_MODE_1:
/* counts up/down on TI1FP1 edge depending on TI2FP2 level */ /* counts up/down on TI1FP1 edge depending on TI2FP2 level */
if (synapse->signal->id == count->synapses[0].signal->id) if (synapse->signal->id == count->synapses[0].signal->id)
*action = STM32_SYNAPSE_ACTION_BOTH_EDGES; *action = STM32_SYNAPSE_ACTION_BOTH_EDGES;
break; else
*action = STM32_SYNAPSE_ACTION_NONE;
return 0;
case STM32_COUNT_ENCODER_MODE_2: case STM32_COUNT_ENCODER_MODE_2:
/* counts up/down on TI2FP2 edge depending on TI1FP1 level */ /* counts up/down on TI2FP2 edge depending on TI1FP1 level */
if (synapse->signal->id == count->synapses[1].signal->id) if (synapse->signal->id == count->synapses[1].signal->id)
*action = STM32_SYNAPSE_ACTION_BOTH_EDGES; *action = STM32_SYNAPSE_ACTION_BOTH_EDGES;
break; else
*action = STM32_SYNAPSE_ACTION_NONE;
return 0;
case STM32_COUNT_ENCODER_MODE_3: case STM32_COUNT_ENCODER_MODE_3:
/* counts up/down on both TI1FP1 and TI2FP2 edges */ /* counts up/down on both TI1FP1 and TI2FP2 edges */
*action = STM32_SYNAPSE_ACTION_BOTH_EDGES; *action = STM32_SYNAPSE_ACTION_BOTH_EDGES;
break; return 0;
default:
return -EINVAL;
} }
return 0;
} }
static const struct counter_ops stm32_timer_cnt_ops = { static const struct counter_ops stm32_timer_cnt_ops = {
@ -359,7 +370,7 @@ static int stm32_timer_cnt_probe(struct platform_device *pdev)
priv->regmap = ddata->regmap; priv->regmap = ddata->regmap;
priv->clk = ddata->clk; priv->clk = ddata->clk;
priv->ceiling = ddata->max_arr; priv->max_arr = ddata->max_arr;
priv->counter.name = dev_name(dev); priv->counter.name = dev_name(dev);
priv->counter.parent = dev; priv->counter.parent = dev;

View File

@ -266,6 +266,8 @@ config ADI_AXI_ADC
select IIO_BUFFER select IIO_BUFFER
select IIO_BUFFER_HW_CONSUMER select IIO_BUFFER_HW_CONSUMER
select IIO_BUFFER_DMAENGINE select IIO_BUFFER_DMAENGINE
depends on HAS_IOMEM
depends on OF
help help
Say yes here to build support for Analog Devices Generic Say yes here to build support for Analog Devices Generic
AXI ADC IP core. The IP core is used for interfacing with AXI ADC IP core. The IP core is used for interfacing with
@ -923,6 +925,7 @@ config STM32_ADC_CORE
depends on ARCH_STM32 || COMPILE_TEST depends on ARCH_STM32 || COMPILE_TEST
depends on OF depends on OF
depends on REGULATOR depends on REGULATOR
depends on HAS_IOMEM
select IIO_BUFFER select IIO_BUFFER
select MFD_STM32_TIMERS select MFD_STM32_TIMERS
select IIO_STM32_TIMER_TRIGGER select IIO_STM32_TIMER_TRIGGER

View File

@ -918,7 +918,7 @@ static int ab8500_gpadc_read_raw(struct iio_dev *indio_dev,
return processed; return processed;
/* Return millivolt or milliamps or millicentigrades */ /* Return millivolt or milliamps or millicentigrades */
*val = processed * 1000; *val = processed;
return IIO_VAL_INT; return IIO_VAL_INT;
} }

View File

@ -91,7 +91,7 @@ static int ad7949_spi_read_channel(struct ad7949_adc_chip *ad7949_adc, int *val,
int ret; int ret;
int i; int i;
int bits_per_word = ad7949_adc->resolution; int bits_per_word = ad7949_adc->resolution;
int mask = GENMASK(ad7949_adc->resolution, 0); int mask = GENMASK(ad7949_adc->resolution - 1, 0);
struct spi_message msg; struct spi_message msg;
struct spi_transfer tx[] = { struct spi_transfer tx[] = {
{ {

View File

@ -597,7 +597,7 @@ static const struct vadc_channels vadc_chans[] = {
VADC_CHAN_NO_SCALE(P_MUX16_1_3, 1) VADC_CHAN_NO_SCALE(P_MUX16_1_3, 1)
VADC_CHAN_NO_SCALE(LR_MUX1_BAT_THERM, 0) VADC_CHAN_NO_SCALE(LR_MUX1_BAT_THERM, 0)
VADC_CHAN_NO_SCALE(LR_MUX2_BAT_ID, 0) VADC_CHAN_VOLT(LR_MUX2_BAT_ID, 0, SCALE_DEFAULT)
VADC_CHAN_NO_SCALE(LR_MUX3_XO_THERM, 0) VADC_CHAN_NO_SCALE(LR_MUX3_XO_THERM, 0)
VADC_CHAN_NO_SCALE(LR_MUX4_AMUX_THM1, 0) VADC_CHAN_NO_SCALE(LR_MUX4_AMUX_THM1, 0)
VADC_CHAN_NO_SCALE(LR_MUX5_AMUX_THM2, 0) VADC_CHAN_NO_SCALE(LR_MUX5_AMUX_THM2, 0)

View File

@ -551,6 +551,8 @@ static irqreturn_t mpu3050_trigger_handler(int irq, void *p)
MPU3050_FIFO_R, MPU3050_FIFO_R,
&fifo_values[offset], &fifo_values[offset],
toread); toread);
if (ret)
goto out_trigger_unlock;
dev_dbg(mpu3050->dev, dev_dbg(mpu3050->dev,
"%04x %04x %04x %04x %04x\n", "%04x %04x %04x %04x %04x\n",

View File

@ -15,7 +15,10 @@
struct hid_humidity_state { struct hid_humidity_state {
struct hid_sensor_common common_attributes; struct hid_sensor_common common_attributes;
struct hid_sensor_hub_attribute_info humidity_attr; struct hid_sensor_hub_attribute_info humidity_attr;
s32 humidity_data; struct {
s32 humidity_data;
u64 timestamp __aligned(8);
} scan;
int scale_pre_decml; int scale_pre_decml;
int scale_post_decml; int scale_post_decml;
int scale_precision; int scale_precision;
@ -125,9 +128,8 @@ static int humidity_proc_event(struct hid_sensor_hub_device *hsdev,
struct hid_humidity_state *humid_st = iio_priv(indio_dev); struct hid_humidity_state *humid_st = iio_priv(indio_dev);
if (atomic_read(&humid_st->common_attributes.data_ready)) if (atomic_read(&humid_st->common_attributes.data_ready))
iio_push_to_buffers_with_timestamp(indio_dev, iio_push_to_buffers_with_timestamp(indio_dev, &humid_st->scan,
&humid_st->humidity_data, iio_get_time_ns(indio_dev));
iio_get_time_ns(indio_dev));
return 0; return 0;
} }
@ -142,7 +144,7 @@ static int humidity_capture_sample(struct hid_sensor_hub_device *hsdev,
switch (usage_id) { switch (usage_id) {
case HID_USAGE_SENSOR_ATMOSPHERIC_HUMIDITY: case HID_USAGE_SENSOR_ATMOSPHERIC_HUMIDITY:
humid_st->humidity_data = *(s32 *)raw_data; humid_st->scan.humidity_data = *(s32 *)raw_data;
return 0; return 0;
default: default:

View File

@ -462,8 +462,7 @@ static int adis16400_initial_setup(struct iio_dev *indio_dev)
if (ret) if (ret)
goto err_ret; goto err_ret;
ret = sscanf(indio_dev->name, "adis%u\n", &device_id); if (sscanf(indio_dev->name, "adis%u\n", &device_id) != 1) {
if (ret != 1) {
ret = -EINVAL; ret = -EINVAL;
goto err_ret; goto err_ret;
} }

View File

@ -23,6 +23,9 @@ struct prox_state {
struct hid_sensor_common common_attributes; struct hid_sensor_common common_attributes;
struct hid_sensor_hub_attribute_info prox_attr; struct hid_sensor_hub_attribute_info prox_attr;
u32 human_presence; u32 human_presence;
int scale_pre_decml;
int scale_post_decml;
int scale_precision;
}; };
/* Channel definitions */ /* Channel definitions */
@ -93,8 +96,9 @@ static int prox_read_raw(struct iio_dev *indio_dev,
ret_type = IIO_VAL_INT; ret_type = IIO_VAL_INT;
break; break;
case IIO_CHAN_INFO_SCALE: case IIO_CHAN_INFO_SCALE:
*val = prox_state->prox_attr.units; *val = prox_state->scale_pre_decml;
ret_type = IIO_VAL_INT; *val2 = prox_state->scale_post_decml;
ret_type = prox_state->scale_precision;
break; break;
case IIO_CHAN_INFO_OFFSET: case IIO_CHAN_INFO_OFFSET:
*val = hid_sensor_convert_exponent( *val = hid_sensor_convert_exponent(
@ -234,6 +238,11 @@ static int prox_parse_report(struct platform_device *pdev,
HID_USAGE_SENSOR_HUMAN_PRESENCE, HID_USAGE_SENSOR_HUMAN_PRESENCE,
&st->common_attributes.sensitivity); &st->common_attributes.sensitivity);
st->scale_precision = hid_sensor_format_scale(
hsdev->usage,
&st->prox_attr,
&st->scale_pre_decml, &st->scale_post_decml);
return ret; return ret;
} }

View File

@ -15,7 +15,10 @@
struct temperature_state { struct temperature_state {
struct hid_sensor_common common_attributes; struct hid_sensor_common common_attributes;
struct hid_sensor_hub_attribute_info temperature_attr; struct hid_sensor_hub_attribute_info temperature_attr;
s32 temperature_data; struct {
s32 temperature_data;
u64 timestamp __aligned(8);
} scan;
int scale_pre_decml; int scale_pre_decml;
int scale_post_decml; int scale_post_decml;
int scale_precision; int scale_precision;
@ -32,7 +35,7 @@ static const struct iio_chan_spec temperature_channels[] = {
BIT(IIO_CHAN_INFO_SAMP_FREQ) | BIT(IIO_CHAN_INFO_SAMP_FREQ) |
BIT(IIO_CHAN_INFO_HYSTERESIS), BIT(IIO_CHAN_INFO_HYSTERESIS),
}, },
IIO_CHAN_SOFT_TIMESTAMP(3), IIO_CHAN_SOFT_TIMESTAMP(1),
}; };
/* Adjust channel real bits based on report descriptor */ /* Adjust channel real bits based on report descriptor */
@ -123,9 +126,8 @@ static int temperature_proc_event(struct hid_sensor_hub_device *hsdev,
struct temperature_state *temp_st = iio_priv(indio_dev); struct temperature_state *temp_st = iio_priv(indio_dev);
if (atomic_read(&temp_st->common_attributes.data_ready)) if (atomic_read(&temp_st->common_attributes.data_ready))
iio_push_to_buffers_with_timestamp(indio_dev, iio_push_to_buffers_with_timestamp(indio_dev, &temp_st->scan,
&temp_st->temperature_data, iio_get_time_ns(indio_dev));
iio_get_time_ns(indio_dev));
return 0; return 0;
} }
@ -140,7 +142,7 @@ static int temperature_capture_sample(struct hid_sensor_hub_device *hsdev,
switch (usage_id) { switch (usage_id) {
case HID_USAGE_SENSOR_DATA_ENVIRONMENTAL_TEMPERATURE: case HID_USAGE_SENSOR_DATA_ENVIRONMENTAL_TEMPERATURE:
temp_st->temperature_data = *(s32 *)raw_data; temp_st->scan.temperature_data = *(s32 *)raw_data;
return 0; return 0;
default: default:
return -EINVAL; return -EINVAL;

View File

@ -1281,7 +1281,7 @@ static int cb_pcidas_auto_attach(struct comedi_device *dev,
devpriv->amcc + AMCC_OP_REG_INTCSR); devpriv->amcc + AMCC_OP_REG_INTCSR);
ret = request_irq(pcidev->irq, cb_pcidas_interrupt, IRQF_SHARED, ret = request_irq(pcidev->irq, cb_pcidas_interrupt, IRQF_SHARED,
dev->board_name, dev); "cb_pcidas", dev);
if (ret) { if (ret) {
dev_dbg(dev->class_dev, "unable to allocate irq %d\n", dev_dbg(dev->class_dev, "unable to allocate irq %d\n",
pcidev->irq); pcidev->irq);

View File

@ -4035,7 +4035,7 @@ static int auto_attach(struct comedi_device *dev,
init_stc_registers(dev); init_stc_registers(dev);
retval = request_irq(pcidev->irq, handle_interrupt, IRQF_SHARED, retval = request_irq(pcidev->irq, handle_interrupt, IRQF_SHARED,
dev->board_name, dev); "cb_pcidas64", dev);
if (retval) { if (retval) {
dev_dbg(dev->class_dev, "unable to allocate irq %u\n", dev_dbg(dev->class_dev, "unable to allocate irq %u\n",
pcidev->irq); pcidev->irq);

View File

@ -150,7 +150,7 @@ struct vnt_cts {
u16 reserved; u16 reserved;
struct ieee80211_cts data; struct ieee80211_cts data;
u16 reserved2; u16 reserved2;
} __packed; } __packed __aligned(2);
struct vnt_cts_fb { struct vnt_cts_fb {
struct vnt_phy_field b; struct vnt_phy_field b;
@ -160,7 +160,7 @@ struct vnt_cts_fb {
__le16 cts_duration_ba_f1; __le16 cts_duration_ba_f1;
struct ieee80211_cts data; struct ieee80211_cts data;
u16 reserved2; u16 reserved2;
} __packed; } __packed __aligned(2);
struct vnt_tx_fifo_head { struct vnt_tx_fifo_head {
u8 tx_key[WLAN_KEY_LEN_CCMP]; u8 tx_key[WLAN_KEY_LEN_CCMP];