Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commitd27637e

Browse files
committed
Merge tag 'staging-5.10-rc5' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/staging
Pull staging and IIO fixes from Greg KH: "Here are some small Staging and IIO driver fixes for 5.10-rc5. They include: - IIO fixes for reported regressions and problems - new device ids for IIO drivers - new device id for rtl8723bs driver - staging ralink driver Kconfig dependency fix - staging mt7621-pci bus resource fix All of these have been in linux-next all week with no reported issues"* tag 'staging-5.10-rc5' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/staging: iio: accel: kxcjk1013: Add support for KIOX010A ACPI DSM for setting tablet-mode iio: accel: kxcjk1013: Replace is_smo8500_device with an acpi_type enum docs: ABI: testing: iio: stm32: remove re-introduced unsupported ABI iio: light: fix kconfig dependency bug for VCNL4035 iio/adc: ingenic: Fix AUX/VBAT readings when touchscreen is used iio/adc: ingenic: Fix battery VREF for JZ4770 SoC staging: rtl8723bs: Add 024c:0627 to the list of SDIO device-ids staging: ralink-gdma: fix kconfig dependency bug for DMA_RALINK staging: mt7621-pci: avoid to request pci bus resources iio: imu: st_lsm6dsx: set 10ms as min shub slave timeout counter/ti-eqep: Fix regmap max_register iio: adc: stm32-adc: fix a regression when using dma and irq iio: adc: mediatek: fix unset field iio: cros_ec: Use default frequencies when EC returns invalid information
2 parentsde75803 +2dde282 commitd27637e

File tree

13 files changed

+165
-85
lines changed

13 files changed

+165
-85
lines changed

‎Documentation/ABI/testing/sysfs-bus-iio-timer-stm32‎

Lines changed: 0 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -109,30 +109,6 @@ Description:
109109
When counting down the counter start from preset value
110110
and fire event when reach 0.
111111

112-
What:/sys/bus/iio/devices/iio:deviceX/in_count_quadrature_mode_available
113-
KernelVersion:4.12
114-
Contact:benjamin.gaignard@st.com
115-
Description:
116-
Reading returns the list possible quadrature modes.
117-
118-
What:/sys/bus/iio/devices/iio:deviceX/in_count0_quadrature_mode
119-
KernelVersion:4.12
120-
Contact:benjamin.gaignard@st.com
121-
Description:
122-
Configure the device counter quadrature modes:
123-
124-
channel_A:
125-
Encoder A input servers as the count input and B as
126-
the UP/DOWN direction control input.
127-
128-
channel_B:
129-
Encoder B input serves as the count input and A as
130-
the UP/DOWN direction control input.
131-
132-
quadrature:
133-
Encoder A and B inputs are mixed to get direction
134-
and count with a scale of 0.25.
135-
136112
What:/sys/bus/iio/devices/iio:deviceX/in_count_enable_mode_available
137113
KernelVersion:4.12
138114
Contact:benjamin.gaignard@st.com

‎drivers/counter/ti-eqep.c‎

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -368,15 +368,15 @@ static const struct regmap_config ti_eqep_regmap32_config = {
368368
.reg_bits=32,
369369
.val_bits=32,
370370
.reg_stride=4,
371-
.max_register=0x24,
371+
.max_register=QUPRD,
372372
};
373373

374374
staticconststructregmap_configti_eqep_regmap16_config= {
375375
.name="16-bit",
376376
.reg_bits=16,
377377
.val_bits=16,
378378
.reg_stride=2,
379-
.max_register=0x1e,
379+
.max_register=QCPRDLAT,
380380
};
381381

382382
staticintti_eqep_probe(structplatform_device*pdev)

‎drivers/iio/accel/kxcjk-1013.c‎

Lines changed: 46 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -126,6 +126,12 @@ enum kx_chipset {
126126
KX_MAX_CHIPS/* this must be last */
127127
};
128128

129+
enumkx_acpi_type {
130+
ACPI_GENERIC,
131+
ACPI_SMO8500,
132+
ACPI_KIOX010A,
133+
};
134+
129135
structkxcjk1013_data {
130136
structi2c_client*client;
131137
structiio_trigger*dready_trig;
@@ -143,7 +149,7 @@ struct kxcjk1013_data {
143149
boolmotion_trigger_on;
144150
int64_ttimestamp;
145151
enumkx_chipsetchipset;
146-
boolis_smo8500_device;
152+
enumkx_acpi_typeacpi_type;
147153
};
148154

149155
enumkxcjk1013_axis {
@@ -270,6 +276,32 @@ static const struct {
270276
{19163,1,0},
271277
{38326,0,1} };
272278

279+
#ifdefCONFIG_ACPI
280+
enumkiox010a_fn_index {
281+
KIOX010A_SET_LAPTOP_MODE=1,
282+
KIOX010A_SET_TABLET_MODE=2,
283+
};
284+
285+
staticintkiox010a_dsm(structdevice*dev,intfn_index)
286+
{
287+
acpi_handlehandle=ACPI_HANDLE(dev);
288+
guid_tkiox010a_dsm_guid;
289+
unionacpi_object*obj;
290+
291+
if (!handle)
292+
return-ENODEV;
293+
294+
guid_parse("1f339696-d475-4e26-8cad-2e9f8e6d7a91",&kiox010a_dsm_guid);
295+
296+
obj=acpi_evaluate_dsm(handle,&kiox010a_dsm_guid,1,fn_index,NULL);
297+
if (!obj)
298+
return-EIO;
299+
300+
ACPI_FREE(obj);
301+
return0;
302+
}
303+
#endif
304+
273305
staticintkxcjk1013_set_mode(structkxcjk1013_data*data,
274306
enumkxcjk1013_modemode)
275307
{
@@ -347,6 +379,13 @@ static int kxcjk1013_chip_init(struct kxcjk1013_data *data)
347379
{
348380
intret;
349381

382+
#ifdefCONFIG_ACPI
383+
if (data->acpi_type==ACPI_KIOX010A) {
384+
/* Make sure the kbd and touchpad on 2-in-1s using 2 KXCJ91008-s work */
385+
kiox010a_dsm(&data->client->dev,KIOX010A_SET_LAPTOP_MODE);
386+
}
387+
#endif
388+
350389
ret=i2c_smbus_read_byte_data(data->client,KXCJK1013_REG_WHO_AM_I);
351390
if (ret<0) {
352391
dev_err(&data->client->dev,"Error reading who_am_i\n");
@@ -1247,7 +1286,7 @@ static irqreturn_t kxcjk1013_data_rdy_trig_poll(int irq, void *private)
12471286

12481287
staticconstchar*kxcjk1013_match_acpi_device(structdevice*dev,
12491288
enumkx_chipset*chipset,
1250-
bool*is_smo8500_device)
1289+
enumkx_acpi_type*acpi_type)
12511290
{
12521291
conststructacpi_device_id*id;
12531292

@@ -1256,7 +1295,9 @@ static const char *kxcjk1013_match_acpi_device(struct device *dev,
12561295
returnNULL;
12571296

12581297
if (strcmp(id->id,"SMO8500")==0)
1259-
*is_smo8500_device= true;
1298+
*acpi_type=ACPI_SMO8500;
1299+
elseif (strcmp(id->id,"KIOX010A")==0)
1300+
*acpi_type=ACPI_KIOX010A;
12601301

12611302
*chipset= (enumkx_chipset)id->driver_data;
12621303

@@ -1299,7 +1340,7 @@ static int kxcjk1013_probe(struct i2c_client *client,
12991340
}elseif (ACPI_HANDLE(&client->dev)) {
13001341
name=kxcjk1013_match_acpi_device(&client->dev,
13011342
&data->chipset,
1302-
&data->is_smo8500_device);
1343+
&data->acpi_type);
13031344
}else
13041345
return-ENODEV;
13051346

@@ -1316,7 +1357,7 @@ static int kxcjk1013_probe(struct i2c_client *client,
13161357
indio_dev->modes=INDIO_DIRECT_MODE;
13171358
indio_dev->info=&kxcjk1013_info;
13181359

1319-
if (client->irq>0&&!data->is_smo8500_device) {
1360+
if (client->irq>0&&data->acpi_type!=ACPI_SMO8500) {
13201361
ret=devm_request_threaded_irq(&client->dev,client->irq,
13211362
kxcjk1013_data_rdy_trig_poll,
13221363
kxcjk1013_event_handler,

‎drivers/iio/adc/ingenic-adc.c‎

Lines changed: 27 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -71,7 +71,7 @@
7171
#defineJZ4725B_ADC_BATTERY_HIGH_VREF_BITS10
7272
#defineJZ4740_ADC_BATTERY_HIGH_VREF(7500 * 0.986)
7373
#defineJZ4740_ADC_BATTERY_HIGH_VREF_BITS12
74-
#defineJZ4770_ADC_BATTERY_VREF6600
74+
#defineJZ4770_ADC_BATTERY_VREF1200
7575
#defineJZ4770_ADC_BATTERY_VREF_BITS12
7676

7777
#defineJZ_ADC_IRQ_AUXBIT(0)
@@ -177,13 +177,12 @@ static void ingenic_adc_set_config(struct ingenic_adc *adc,
177177
mutex_unlock(&adc->lock);
178178
}
179179

180-
staticvoidingenic_adc_enable(structingenic_adc*adc,
181-
intengine,
182-
boolenabled)
180+
staticvoidingenic_adc_enable_unlocked(structingenic_adc*adc,
181+
intengine,
182+
boolenabled)
183183
{
184184
u8val;
185185

186-
mutex_lock(&adc->lock);
187186
val=readb(adc->base+JZ_ADC_REG_ENABLE);
188187

189188
if (enabled)
@@ -192,20 +191,41 @@ static void ingenic_adc_enable(struct ingenic_adc *adc,
192191
val &= ~BIT(engine);
193192

194193
writeb(val,adc->base+JZ_ADC_REG_ENABLE);
194+
}
195+
196+
staticvoidingenic_adc_enable(structingenic_adc*adc,
197+
intengine,
198+
boolenabled)
199+
{
200+
mutex_lock(&adc->lock);
201+
ingenic_adc_enable_unlocked(adc,engine,enabled);
195202
mutex_unlock(&adc->lock);
196203
}
197204

198205
staticintingenic_adc_capture(structingenic_adc*adc,
199206
intengine)
200207
{
208+
u32cfg;
201209
u8val;
202210
intret;
203211

204-
ingenic_adc_enable(adc,engine, true);
212+
/*
213+
* Disable CMD_SEL temporarily, because it causes wrong VBAT readings,
214+
* probably due to the switch of VREF. We must keep the lock here to
215+
* avoid races with the buffer enable/disable functions.
216+
*/
217+
mutex_lock(&adc->lock);
218+
cfg=readl(adc->base+JZ_ADC_REG_CFG);
219+
writel(cfg& ~JZ_ADC_REG_CFG_CMD_SEL,adc->base+JZ_ADC_REG_CFG);
220+
221+
ingenic_adc_enable_unlocked(adc,engine, true);
205222
ret=readb_poll_timeout(adc->base+JZ_ADC_REG_ENABLE,val,
206223
!(val&BIT(engine)),250,1000);
207224
if (ret)
208-
ingenic_adc_enable(adc,engine, false);
225+
ingenic_adc_enable_unlocked(adc,engine, false);
226+
227+
writel(cfg,adc->base+JZ_ADC_REG_CFG);
228+
mutex_unlock(&adc->lock);
209229

210230
returnret;
211231
}

‎drivers/iio/adc/mt6577_auxadc.c‎

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,9 +9,9 @@
99
#include<linux/err.h>
1010
#include<linux/kernel.h>
1111
#include<linux/module.h>
12-
#include<linux/of.h>
13-
#include<linux/of_device.h>
12+
#include<linux/mod_devicetable.h>
1413
#include<linux/platform_device.h>
14+
#include<linux/property.h>
1515
#include<linux/iopoll.h>
1616
#include<linux/io.h>
1717
#include<linux/iio/iio.h>
@@ -276,6 +276,8 @@ static int mt6577_auxadc_probe(struct platform_device *pdev)
276276
gotoerr_disable_clk;
277277
}
278278

279+
adc_dev->dev_comp=device_get_match_data(&pdev->dev);
280+
279281
mutex_init(&adc_dev->lock);
280282

281283
mt6577_auxadc_mod_reg(adc_dev->reg_base+MT6577_AUXADC_MISC,

‎drivers/iio/adc/stm32-adc-core.c‎

Lines changed: 17 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -41,18 +41,16 @@
4141
* struct stm32_adc_common_regs - stm32 common registers
4242
* @csr:common status register offset
4343
* @ccr:common control register offset
44-
* @eoc1_msk:adc1 end of conversion flag in @csr
45-
* @eoc2_msk:adc2 end of conversion flag in @csr
46-
* @eoc3_msk:adc3 end of conversion flag in @csr
44+
* @eoc_msk: array of eoc (end of conversion flag) masks in csr for adc1..n
45+
* @ovr_msk: array of ovr (overrun flag) masks in csr for adc1..n
4746
* @ier:interrupt enable register offset for each adc
4847
* @eocie_msk:end of conversion interrupt enable mask in @ier
4948
*/
5049
structstm32_adc_common_regs {
5150
u32csr;
5251
u32ccr;
53-
u32eoc1_msk;
54-
u32eoc2_msk;
55-
u32eoc3_msk;
52+
u32eoc_msk[STM32_ADC_MAX_ADCS];
53+
u32ovr_msk[STM32_ADC_MAX_ADCS];
5654
u32ier;
5755
u32eocie_msk;
5856
};
@@ -282,21 +280,20 @@ static int stm32h7_adc_clk_sel(struct platform_device *pdev,
282280
staticconststructstm32_adc_common_regsstm32f4_adc_common_regs= {
283281
.csr=STM32F4_ADC_CSR,
284282
.ccr=STM32F4_ADC_CCR,
285-
.eoc1_msk=STM32F4_EOC1 |STM32F4_OVR1,
286-
.eoc2_msk=STM32F4_EOC2 |STM32F4_OVR2,
287-
.eoc3_msk=STM32F4_EOC3 |STM32F4_OVR3,
283+
.eoc_msk= {STM32F4_EOC1,STM32F4_EOC2,STM32F4_EOC3},
284+
.ovr_msk= {STM32F4_OVR1,STM32F4_OVR2,STM32F4_OVR3},
288285
.ier=STM32F4_ADC_CR1,
289-
.eocie_msk=STM32F4_EOCIE |STM32F4_OVRIE,
286+
.eocie_msk=STM32F4_EOCIE,
290287
};
291288

292289
/* STM32H7 common registers definitions */
293290
staticconststructstm32_adc_common_regsstm32h7_adc_common_regs= {
294291
.csr=STM32H7_ADC_CSR,
295292
.ccr=STM32H7_ADC_CCR,
296-
.eoc1_msk=STM32H7_EOC_MST |STM32H7_OVR_MST,
297-
.eoc2_msk=STM32H7_EOC_SLV |STM32H7_OVR_SLV,
293+
.eoc_msk={STM32H7_EOC_MST,STM32H7_EOC_SLV},
294+
.ovr_msk={STM32H7_OVR_MST,STM32H7_OVR_SLV},
298295
.ier=STM32H7_ADC_IER,
299-
.eocie_msk=STM32H7_EOCIE |STM32H7_OVRIE,
296+
.eocie_msk=STM32H7_EOCIE,
300297
};
301298

302299
staticconstunsignedintstm32_adc_offset[STM32_ADC_MAX_ADCS]= {
@@ -318,6 +315,7 @@ static void stm32_adc_irq_handler(struct irq_desc *desc)
318315
{
319316
structstm32_adc_priv*priv=irq_desc_get_handler_data(desc);
320317
structirq_chip*chip=irq_desc_get_chip(desc);
318+
inti;
321319
u32status;
322320

323321
chained_irq_enter(chip,desc);
@@ -335,17 +333,12 @@ static void stm32_adc_irq_handler(struct irq_desc *desc)
335333
* before invoking the interrupt handler (e.g. call ISR only for
336334
* IRQ-enabled ADCs).
337335
*/
338-
if (status&priv->cfg->regs->eoc1_msk&&
339-
stm32_adc_eoc_enabled(priv,0))
340-
generic_handle_irq(irq_find_mapping(priv->domain,0));
341-
342-
if (status&priv->cfg->regs->eoc2_msk&&
343-
stm32_adc_eoc_enabled(priv,1))
344-
generic_handle_irq(irq_find_mapping(priv->domain,1));
345-
346-
if (status&priv->cfg->regs->eoc3_msk&&
347-
stm32_adc_eoc_enabled(priv,2))
348-
generic_handle_irq(irq_find_mapping(priv->domain,2));
336+
for (i=0;i<priv->cfg->num_irqs;i++) {
337+
if ((status&priv->cfg->regs->eoc_msk[i]&&
338+
stm32_adc_eoc_enabled(priv,i))||
339+
(status&priv->cfg->regs->ovr_msk[i]))
340+
generic_handle_irq(irq_find_mapping(priv->domain,i));
341+
}
349342

350343
chained_irq_exit(chip,desc);
351344
};

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp