Skip to content

Commit 55ae3ee

Browse files
committed
Merge tag 'i2c-for-6.13-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/wsa/linux
Pull i2c updates from Wolfram Sang: "Core: - drivers can now use a GPIO as a side channel for SMBus Alerts using a generic binding - regular stuff like mem leak fix, Makefile maintenance... Host improvements and refactoring: - All controllers using the 'remove_new' callback have been reverted to use the 'remove' callback - Intel SCH controller underwent significant refactoring, this brings love and a modern look to the driver - PIIX4 driver refactored to enable usage by other drivers (e.g., AMD ASF) - iMX/MXC improved message handling to reduce protocol overhead: Refactored DMA/non-DMA read/write and bus polling mechanisms to achieve this. - ACPI documentation for PIIX4 New host features: - i2c-cadence support for atomic transfers - Qualcomm CII support for a 32MHz serial engine clock Deprecated features: - Dropped outdated support for AMD756 S4882 and NFORCE2 S4985. If somebody misses this, Jean will rewrite support using the proper i2c mux framework. New hardware IDs for existing drivers: - Intel Panther Lake - S32G2/S32G3 SoCs - HJMC01 DesignWare ACPI HID - PIC64GX to Microchip Core - Qualcomm SDM670 to Qualcomm CCI New drivers: - AMD ASF - Realtek RTL I2C Controller at24 updates: - add support for the lockable page on ST M24256E" * tag 'i2c-for-6.13-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/wsa/linux: (59 commits) docs: i2c: piix4: Add ACPI section i2c: Add driver for the RTL9300 I2C controller i2c: qcom-cci: Remove unused struct member cci_clk_rate dt-bindings: i2c: Add Realtek RTL I2C Controller i2c: busses: Use *-y instead of *-objs in Makefile i2c: imx: add support for S32G2/S32G3 SoCs dt-bindings: i2c: imx: add SoC specific compatible strings for S32G i2c: qcom-cci: Remove the unused variable cci_clk_rate i2c: Drop legacy muxing pseudo-drivers i2c: imx: prevent rescheduling in non dma mode i2c: imx: separate atomic, dma and non-dma use case i2c: imx: do not poll for bus busy in single master mode i2c: designware: Add a new ACPI HID for HJMC01 I2C controller i2c: qcom-geni: Keep comment why interrupts start disabled dt-bindings: i2c: microchip: corei2c: Add PIC64GX as compatible with driver i2c: designware: constify abort_sources i2c: Switch back to struct platform_driver::remove() i2c: qcom-geni: Support systems with 32MHz serial engine clock i2c: qcom-cci: Stop complaining about DT set clock rate dt-bindings: i2c: qcom-cci: Document SDM670 compatible ...
2 parents 341d041 + 1b30732 commit 55ae3ee

File tree

121 files changed

+2164
-1158
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

121 files changed

+2164
-1158
lines changed

Documentation/devicetree/bindings/eeprom/at24.yaml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -141,6 +141,8 @@ properties:
141141
- const: microchip,24aa025e48
142142
- items:
143143
- const: microchip,24aa025e64
144+
- items:
145+
- const: st,24256e-wl
144146
- pattern: '^atmel,24c(32|64)d-wl$' # Actual vendor is st
145147

146148
label:

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

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@ properties:
1818
- const: fsl,imx1-i2c
1919
- const: fsl,imx21-i2c
2020
- const: fsl,vf610-i2c
21+
- const: nxp,s32g2-i2c
2122
- items:
2223
- enum:
2324
- fsl,ls1012a-i2c
@@ -54,6 +55,9 @@ properties:
5455
- fsl,imx8mn-i2c
5556
- fsl,imx8mp-i2c
5657
- const: fsl,imx21-i2c
58+
- items:
59+
- const: nxp,s32g3-i2c
60+
- const: nxp,s32g2-i2c
5761

5862
reg:
5963
maxItems: 1

Documentation/devicetree/bindings/i2c/microchip,corei2c.yaml

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,9 @@ properties:
1616
compatible:
1717
oneOf:
1818
- items:
19-
- const: microchip,mpfs-i2c # Microchip PolarFire SoC compatible SoCs
19+
- enum:
20+
- microchip,pic64gx-i2c
21+
- microchip,mpfs-i2c # Microchip PolarFire SoC compatible SoCs
2022
- const: microchip,corei2c-rtl-v7 # Microchip Fabric based i2c IP core
2123
- const: microchip,corei2c-rtl-v7 # Microchip Fabric based i2c IP core
2224

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

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@ properties:
2727
- enum:
2828
- qcom,sc7280-cci
2929
- qcom,sc8280xp-cci
30+
- qcom,sdm670-cci
3031
- qcom,sdm845-cci
3132
- qcom,sm6350-cci
3233
- qcom,sm8250-cci
@@ -139,6 +140,24 @@ allOf:
139140
- const: cci
140141
- const: camss_ahb
141142

143+
- if:
144+
properties:
145+
compatible:
146+
contains:
147+
enum:
148+
- qcom,sdm670-cci
149+
then:
150+
properties:
151+
clocks:
152+
minItems: 4
153+
maxItems: 4
154+
clock-names:
155+
items:
156+
- const: camnoc_axi
157+
- const: soc_ahb
158+
- const: cpas_ahb
159+
- const: cci
160+
142161
- if:
143162
properties:
144163
compatible:
Lines changed: 69 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,69 @@
1+
# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
2+
%YAML 1.2
3+
---
4+
$id: http://devicetree.org/schemas/i2c/realtek,rtl9301-i2c.yaml#
5+
$schema: http://devicetree.org/meta-schemas/core.yaml#
6+
7+
title: Realtek RTL I2C Controller
8+
9+
maintainers:
10+
- Chris Packham <chris.packham@alliedtelesis.co.nz>
11+
12+
description:
13+
The RTL9300 SoC has two I2C controllers. Each of these has an SCL line (which
14+
if not-used for SCL can be a GPIO). There are 8 common SDA lines that can be
15+
assigned to either I2C controller.
16+
17+
properties:
18+
compatible:
19+
oneOf:
20+
- items:
21+
- enum:
22+
- realtek,rtl9302b-i2c
23+
- realtek,rtl9302c-i2c
24+
- realtek,rtl9303-i2c
25+
- const: realtek,rtl9301-i2c
26+
- const: realtek,rtl9301-i2c
27+
28+
reg:
29+
description: Register offset and size this I2C controller.
30+
31+
"#address-cells":
32+
const: 1
33+
34+
"#size-cells":
35+
const: 0
36+
37+
patternProperties:
38+
'^i2c@[0-7]$':
39+
$ref: /schemas/i2c/i2c-controller.yaml
40+
unevaluatedProperties: false
41+
42+
properties:
43+
reg:
44+
description: The SDA pin associated with the I2C bus.
45+
maxItems: 1
46+
47+
required:
48+
- reg
49+
50+
required:
51+
- compatible
52+
- reg
53+
54+
additionalProperties: false
55+
56+
examples:
57+
- |
58+
i2c@36c {
59+
compatible = "realtek,rtl9301-i2c";
60+
reg = <0x36c 0x14>;
61+
#address-cells = <1>;
62+
#size-cells = <0>;
63+
64+
i2c@2 {
65+
reg = <2>;
66+
#address-cells = <1>;
67+
#size-cells = <0>;
68+
};
69+
};

Documentation/i2c/busses/i2c-i801.rst

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -49,6 +49,7 @@ Supported adapters:
4949
* Intel Meteor Lake (SOC and PCH)
5050
* Intel Birch Stream (SOC)
5151
* Intel Arrow Lake (SOC)
52+
* Intel Panther Lake (SOC)
5253

5354
Datasheets: Publicly available at the Intel website
5455

Documentation/i2c/busses/i2c-piix4.rst

Lines changed: 63 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -109,3 +109,66 @@ which can easily get corrupted due to a state machine bug. These are mostly
109109
Thinkpad laptops, but desktop systems may also be affected. We have no list
110110
of all affected systems, so the only safe solution was to prevent access to
111111
the SMBus on all IBM systems (detected using DMI data.)
112+
113+
114+
Description in the ACPI code
115+
----------------------------
116+
117+
Device driver for the PIIX4 chip creates a separate I2C bus for each of its
118+
ports::
119+
120+
$ i2cdetect -l
121+
...
122+
i2c-7 unknown SMBus PIIX4 adapter port 0 at 0b00 N/A
123+
i2c-8 unknown SMBus PIIX4 adapter port 2 at 0b00 N/A
124+
i2c-9 unknown SMBus PIIX4 adapter port 1 at 0b20 N/A
125+
...
126+
127+
Therefore if you want to access one of these busses in the ACPI code, port
128+
subdevices are needed to be declared inside the PIIX device::
129+
130+
Scope (\_SB_.PCI0.SMBS)
131+
{
132+
Name (_ADR, 0x00140000)
133+
134+
Device (SMB0) {
135+
Name (_ADR, 0)
136+
}
137+
Device (SMB1) {
138+
Name (_ADR, 1)
139+
}
140+
Device (SMB2) {
141+
Name (_ADR, 2)
142+
}
143+
}
144+
145+
If this is not the case for your UEFI firmware and you don't have access to the
146+
source code, you can use ACPI SSDT Overlays to provide the missing parts. Just
147+
keep in mind that in this case you would need to load your extra SSDT table
148+
before the piix4 driver starts, i.e. you should provide SSDT via initrd or EFI
149+
variable methods and not via configfs.
150+
151+
As an example of usage here is the ACPI snippet code that would assign jc42
152+
driver to the 0x1C device on the I2C bus created by the PIIX port 0::
153+
154+
Device (JC42) {
155+
Name (_HID, "PRP0001")
156+
Name (_DDN, "JC42 Temperature sensor")
157+
Name (_CRS, ResourceTemplate () {
158+
I2cSerialBusV2 (
159+
0x001c,
160+
ControllerInitiated,
161+
100000,
162+
AddressingMode7Bit,
163+
"\\_SB.PCI0.SMBS.SMB0",
164+
0
165+
)
166+
})
167+
168+
Name (_DSD, Package () {
169+
ToUUID("daffd814-6eba-4d8c-8a91-bc9bbf4aa301"),
170+
Package () {
171+
Package () { "compatible", Package() { "jedec,jc-42.4-temp" } },
172+
}
173+
})
174+
}

Documentation/i2c/writing-clients.rst

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -31,12 +31,11 @@ driver model device node, and its I2C address.
3131

3232
::
3333

34-
static struct i2c_device_id foo_idtable[] = {
34+
static const struct i2c_device_id foo_idtable[] = {
3535
{ "foo", my_id_for_foo },
3636
{ "bar", my_id_for_bar },
3737
{ }
3838
};
39-
4039
MODULE_DEVICE_TABLE(i2c, foo_idtable);
4140

4241
static struct i2c_driver foo_driver = {

MAINTAINERS

Lines changed: 14 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1115,6 +1115,12 @@ L: linux-i2c@vger.kernel.org
11151115
S: Maintained
11161116
F: drivers/i2c/busses/i2c-amd-mp2*
11171117

1118+
AMD ASF I2C DRIVER
1119+
M: Shyam Sundar S K <shyam-sundar.s-k@amd.com>
1120+
L: linux-i2c@vger.kernel.org
1121+
S: Supported
1122+
F: drivers/i2c/busses/i2c-amd-asf-plat.c
1123+
11181124
AMD PDS CORE DRIVER
11191125
M: Shannon Nelson <shannon.nelson@amd.com>
11201126
M: Brett Creeley <brett.creeley@amd.com>
@@ -10750,14 +10756,12 @@ F: Documentation/i2c/busses/i2c-viapro.rst
1075010756
F: drivers/i2c/busses/i2c-ali1535.c
1075110757
F: drivers/i2c/busses/i2c-ali1563.c
1075210758
F: drivers/i2c/busses/i2c-ali15x3.c
10753-
F: drivers/i2c/busses/i2c-amd756-s4882.c
1075410759
F: drivers/i2c/busses/i2c-amd756.c
1075510760
F: drivers/i2c/busses/i2c-amd8111.c
1075610761
F: drivers/i2c/busses/i2c-i801.c
1075710762
F: drivers/i2c/busses/i2c-isch.c
10758-
F: drivers/i2c/busses/i2c-nforce2-s4985.c
1075910763
F: drivers/i2c/busses/i2c-nforce2.c
10760-
F: drivers/i2c/busses/i2c-piix4.c
10764+
F: drivers/i2c/busses/i2c-piix4.*
1076110765
F: drivers/i2c/busses/i2c-sis5595.c
1076210766
F: drivers/i2c/busses/i2c-sis630.c
1076310767
F: drivers/i2c/busses/i2c-sis96x.c
@@ -20218,6 +20222,13 @@ S: Maintained
2021820222
T: git https://github.com/pkshih/rtw.git
2021920223
F: drivers/net/wireless/realtek/rtl8xxxu/
2022020224

20225+
RTL9300 I2C DRIVER (rtl9300-i2c)
20226+
M: Chris Packham <chris.packham@alliedtelesis.co.nz>
20227+
L: linux-i2c@vger.kernel.org
20228+
S: Maintained
20229+
F: Documentation/devicetree/bindings/i2c/realtek,rtl9301-i2c.yaml
20230+
F: drivers/i2c/busses/i2c-rtl9300.c
20231+
2022120232
RTRS TRANSPORT DRIVERS
2022220233
M: Md. Haris Iqbal <haris.iqbal@ionos.com>
2022320234
M: Jack Wang <jinpu.wang@ionos.com>

drivers/i2c/Makefile

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,10 +5,10 @@
55

66
obj-$(CONFIG_I2C_BOARDINFO) += i2c-boardinfo.o
77
obj-$(CONFIG_I2C) += i2c-core.o
8-
i2c-core-objs := i2c-core-base.o i2c-core-smbus.o
8+
i2c-core-y := i2c-core-base.o i2c-core-smbus.o
99
i2c-core-$(CONFIG_ACPI) += i2c-core-acpi.o
10-
i2c-core-$(CONFIG_I2C_SLAVE) += i2c-core-slave.o
11-
i2c-core-$(CONFIG_OF) += i2c-core-of.o
10+
i2c-core-$(CONFIG_I2C_SLAVE) += i2c-core-slave.o
11+
i2c-core-$(CONFIG_OF) += i2c-core-of.o
1212

1313
obj-$(CONFIG_I2C_SMBUS) += i2c-smbus.o
1414
obj-$(CONFIG_I2C_CHARDEV) += i2c-dev.o

0 commit comments

Comments
 (0)