Skip to content

Commit ec9187e

Browse files
committed
Merge tag 'i2c-for-6.2-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/wsa/linux
Pull i2c updates from Wolfram Sang: "Core got a new helper 'i2c_client_get_device_id()', designware got some bigger updates, the rest is driver updates all over the place" * tag 'i2c-for-6.2-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/wsa/linux: (41 commits) i2c: ismt: Fix an out-of-bounds bug in ismt_access() i2c: mux: reg: check return value after calling platform_get_resource() i2c: xiic: Make sure to disable clock on .remove() i2c: hisi: Add support to get clock frequency from clock i2c: pxa-pci: fix missing pci_disable_device() on error in ce4100_i2c_probe i2c: slave-eeprom: Convert to i2c's .probe_new() i2c: mux: pca954x: Convert to i2c's .probe_new() drivers/i2c: use simple i2c probe i2c: mux: pca9541: switch to using .probe_new i2c: gpio: Fix potential unused warning for 'i2c_gpio_dt_ids' i2c: qcom-geni: add support for I2C Master Hub variant i2c: qcom-geni: add desc struct to prepare support for I2C Master Hub variant soc: qcom: geni-se: add support for I2C Master Hub wrapper variant soc: qcom: geni-se: add desc struct to specify clocks from device match data dt-bindings: i2c: qcom-geni: document I2C Master Hub serial I2C engine dt-bindings: qcom: geni-se: document I2C Master Hub wrapper variant dt-bindings: i2c: renesas,riic: Document RZ/Five SoC i2c: tegra: Set ACPI node as primary fwnode i2c: smbus: add DDR support for SPD i2c: /pasemi: PASemi I2C controller IRQ enablement ...
2 parents 785d21b + 39244cc commit ec9187e

34 files changed

+623
-327
lines changed
Lines changed: 73 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,73 @@
1+
# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause)
2+
%YAML 1.2
3+
---
4+
$id: http://devicetree.org/schemas/i2c/hisilicon,ascend910-i2c.yaml#
5+
$schema: http://devicetree.org/meta-schemas/core.yaml#
6+
7+
title: HiSilicon common I2C controller
8+
9+
maintainers:
10+
- Yicong Yang <[email protected]>
11+
12+
description:
13+
The HiSilicon common I2C controller can be used for many different
14+
types of SoC such as Huawei Ascend AI series chips.
15+
16+
allOf:
17+
- $ref: /schemas/i2c/i2c-controller.yaml#
18+
19+
properties:
20+
compatible:
21+
const: hisilicon,ascend910-i2c
22+
23+
reg:
24+
maxItems: 1
25+
26+
interrupts:
27+
maxItems: 1
28+
29+
clocks:
30+
maxItems: 1
31+
32+
clock-frequency:
33+
default: 400000
34+
35+
i2c-sda-falling-time-ns:
36+
default: 343
37+
38+
i2c-scl-falling-time-ns:
39+
default: 203
40+
41+
i2c-sda-hold-time-ns:
42+
default: 830
43+
44+
i2c-scl-rising-time-ns:
45+
default: 365
46+
47+
i2c-digital-filter-width-ns:
48+
default: 0
49+
50+
required:
51+
- compatible
52+
- reg
53+
- interrupts
54+
55+
unevaluatedProperties: false
56+
57+
examples:
58+
- |
59+
#include <dt-bindings/interrupt-controller/arm-gic.h>
60+
61+
i2c@38b0000 {
62+
compatible = "hisilicon,ascend910-i2c";
63+
reg = <0x38b0000 0x10000>;
64+
interrupts = <GIC_SPI 120 IRQ_TYPE_LEVEL_HIGH>;
65+
i2c-sda-falling-time-ns = <56>;
66+
i2c-scl-falling-time-ns = <56>;
67+
i2c-sda-hold-time-ns = <56>;
68+
i2c-scl-rising-time-ns = <56>;
69+
i2c-digital-filter;
70+
i2c-digital-filter-width-ns = <0x0>;
71+
clocks = <&alg_clk>;
72+
clock-frequency = <400000>;
73+
};

Documentation/devicetree/bindings/i2c/i2c-mt65xx.yaml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@ properties:
2323
- const: mediatek,mt6577-i2c
2424
- const: mediatek,mt6589-i2c
2525
- const: mediatek,mt7622-i2c
26+
- const: mediatek,mt7986-i2c
2627
- const: mediatek,mt8168-i2c
2728
- const: mediatek,mt8173-i2c
2829
- const: mediatek,mt8183-i2c

Documentation/devicetree/bindings/i2c/marvell,mv64xxx-i2c.yaml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@ properties:
1919
- const: allwinner,sun6i-a31-i2c
2020
- items:
2121
- enum:
22+
- allwinner,suniv-f1c100s-i2c
2223
- allwinner,sun8i-a23-i2c
2324
- allwinner,sun8i-a83t-i2c
2425
- allwinner,sun8i-v536-i2c

Documentation/devicetree/bindings/i2c/qcom,i2c-geni-qcom.yaml

Lines changed: 54 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -10,18 +10,19 @@ maintainers:
1010
- Andy Gross <[email protected]>
1111
- Bjorn Andersson <[email protected]>
1212

13-
allOf:
14-
- $ref: /schemas/i2c/i2c-controller.yaml#
15-
1613
properties:
1714
compatible:
18-
const: qcom,geni-i2c
15+
enum:
16+
- qcom,geni-i2c
17+
- qcom,geni-i2c-master-hub
1918

2019
clocks:
21-
maxItems: 1
20+
minItems: 1
21+
maxItems: 2
2222

2323
clock-names:
24-
const: se
24+
minItems: 1
25+
maxItems: 2
2526

2627
clock-frequency:
2728
default: 100000
@@ -35,13 +36,12 @@ properties:
3536
- const: rx
3637

3738
interconnects:
39+
minItems: 2
3840
maxItems: 3
3941

4042
interconnect-names:
41-
items:
42-
- const: qup-core
43-
- const: qup-config
44-
- const: qup-memory
43+
minItems: 2
44+
maxItems: 3
4545

4646
interrupts:
4747
maxItems: 1
@@ -71,6 +71,50 @@ required:
7171
- clock-names
7272
- reg
7373

74+
allOf:
75+
- $ref: /schemas/i2c/i2c-controller.yaml#
76+
- if:
77+
properties:
78+
compatible:
79+
contains:
80+
const: qcom,geni-i2c-master-hub
81+
then:
82+
properties:
83+
clocks:
84+
minItems: 2
85+
86+
clock-names:
87+
items:
88+
- const: se
89+
- const: core
90+
91+
dmas: false
92+
dma-names: false
93+
94+
interconnects:
95+
maxItems: 2
96+
97+
interconnect-names:
98+
items:
99+
- const: qup-core
100+
- const: qup-config
101+
else:
102+
properties:
103+
clocks:
104+
maxItems: 1
105+
106+
clock-names:
107+
const: se
108+
109+
interconnects:
110+
minItems: 3
111+
112+
interconnect-names:
113+
items:
114+
- const: qup-core
115+
- const: qup-config
116+
- const: qup-memory
117+
74118
unevaluatedProperties: false
75119

76120
examples:

Documentation/devicetree/bindings/i2c/renesas,riic.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ properties:
1919
- enum:
2020
- renesas,riic-r7s72100 # RZ/A1H
2121
- renesas,riic-r7s9210 # RZ/A2M
22-
- renesas,riic-r9a07g043 # RZ/G2UL
22+
- renesas,riic-r9a07g043 # RZ/G2UL and RZ/Five
2323
- renesas,riic-r9a07g044 # RZ/G2{L,LC}
2424
- renesas,riic-r9a07g054 # RZ/V2L
2525
- const: renesas,riic-rz # RZ/A or RZ/G2L

Documentation/devicetree/bindings/soc/qcom/qcom,geni-se.yaml

Lines changed: 38 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -21,20 +21,19 @@ properties:
2121
compatible:
2222
enum:
2323
- qcom,geni-se-qup
24+
- qcom,geni-se-i2c-master-hub
2425

2526
reg:
2627
description: QUP wrapper common register address and length.
2728
maxItems: 1
2829

2930
clock-names:
30-
items:
31-
- const: m-ahb
32-
- const: s-ahb
31+
minItems: 1
32+
maxItems: 2
3333

3434
clocks:
35-
items:
36-
- description: Master AHB Clock
37-
- description: Slave AHB Clock
35+
minItems: 1
36+
maxItems: 2
3837

3938
"#address-cells":
4039
const: 2
@@ -81,6 +80,39 @@ patternProperties:
8180
description: GENI Serial Engine based UART Controller.
8281
$ref: /schemas/serial/qcom,serial-geni-qcom.yaml#
8382

83+
allOf:
84+
- if:
85+
properties:
86+
compatible:
87+
contains:
88+
const: qcom,geni-se-i2c-master-hub
89+
then:
90+
properties:
91+
clock-names:
92+
items:
93+
- const: s-ahb
94+
95+
clocks:
96+
items:
97+
- description: Slave AHB Clock
98+
99+
iommus: false
100+
101+
patternProperties:
102+
"spi@[0-9a-f]+$": false
103+
"serial@[0-9a-f]+$": false
104+
else:
105+
properties:
106+
clock-names:
107+
items:
108+
- const: m-ahb
109+
- const: s-ahb
110+
111+
clocks:
112+
items:
113+
- description: Master AHB Clock
114+
- description: Slave AHB Clock
115+
84116
additionalProperties: false
85117

86118
examples:

MAINTAINERS

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9290,6 +9290,7 @@ M: Yicong Yang <[email protected]>
92909290
92919291
S: Maintained
92929292
W: https://www.hisilicon.com
9293+
F: Documentation/devicetree/bindings/i2c/hisilicon,ascend910-i2c.yaml
92939294
F: drivers/i2c/busses/i2c-hisi.c
92949295

92959296
HISILICON LPC BUS DRIVER

drivers/i2c/busses/Kconfig

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -673,7 +673,7 @@ config I2C_HIGHLANDER
673673

674674
config I2C_HISI
675675
tristate "HiSilicon I2C controller"
676-
depends on (ARM64 && ACPI) || COMPILE_TEST
676+
depends on ARM64 || COMPILE_TEST
677677
help
678678
Say Y here if you want to have Hisilicon I2C controller support
679679
available on the Kunpeng Server.

drivers/i2c/busses/i2c-amd-mp2-pci.c

Lines changed: 21 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -288,7 +288,7 @@ static void amd_mp2_clear_reg(struct amd_mp2_dev *privdata)
288288
static int amd_mp2_pci_init(struct amd_mp2_dev *privdata,
289289
struct pci_dev *pci_dev)
290290
{
291-
int rc;
291+
int irq_flag = 0, rc;
292292

293293
pci_set_drvdata(pci_dev, privdata);
294294

@@ -311,17 +311,29 @@ static int amd_mp2_pci_init(struct amd_mp2_dev *privdata,
311311
if (rc)
312312
goto err_dma_mask;
313313

314-
/* Set up intx irq */
314+
/* request and enable interrupt */
315315
writel(0, privdata->mmio + AMD_P2C_MSG_INTEN);
316-
pci_intx(pci_dev, 1);
317-
rc = devm_request_irq(&pci_dev->dev, pci_dev->irq, amd_mp2_irq_isr,
318-
IRQF_SHARED, dev_name(&pci_dev->dev), privdata);
319-
if (rc)
320-
pci_err(pci_dev, "Failure requesting irq %i: %d\n",
321-
pci_dev->irq, rc);
316+
rc = pci_alloc_irq_vectors(pci_dev, 1, 1, PCI_IRQ_ALL_TYPES);
317+
if (rc < 0) {
318+
dev_err(&pci_dev->dev, "Failed to allocate single IRQ err=%d\n", rc);
319+
goto err_dma_mask;
320+
}
321+
322+
privdata->dev_irq = pci_irq_vector(pci_dev, 0);
323+
if (!pci_dev->msix_enabled && !pci_dev->msi_enabled)
324+
irq_flag = IRQF_SHARED;
325+
326+
rc = devm_request_irq(&pci_dev->dev, privdata->dev_irq,
327+
amd_mp2_irq_isr, irq_flag, dev_name(&pci_dev->dev), privdata);
328+
if (rc) {
329+
pci_err(pci_dev, "Failure requesting irq %i: %d\n", privdata->dev_irq, rc);
330+
goto free_irq_vectors;
331+
}
322332

323333
return rc;
324334

335+
free_irq_vectors:
336+
free_irq(privdata->dev_irq, privdata);
325337
err_dma_mask:
326338
pci_clear_master(pci_dev);
327339
err_pci_enable:
@@ -364,7 +376,7 @@ static void amd_mp2_pci_remove(struct pci_dev *pci_dev)
364376
pm_runtime_forbid(&pci_dev->dev);
365377
pm_runtime_get_noresume(&pci_dev->dev);
366378

367-
pci_intx(pci_dev, 0);
379+
free_irq(privdata->dev_irq, privdata);
368380
pci_clear_master(pci_dev);
369381

370382
amd_mp2_clear_reg(privdata);

drivers/i2c/busses/i2c-amd-mp2.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -183,6 +183,7 @@ struct amd_mp2_dev {
183183
struct mutex c2p_lock;
184184
u8 c2p_lock_busid;
185185
unsigned int probed;
186+
int dev_irq;
186187
};
187188

188189
/* PCIe communication driver */

0 commit comments

Comments
 (0)