f2fs: Provide a splice-read wrapper
[linux-block.git] / Documentation / i2c / busses / i2c-i801.rst
CommitLineData
ccf988b6 1======================
1da177e4 2Kernel driver i2c-i801
ccf988b6
MCC
3======================
4
1da177e4
LT
5
6Supported adapters:
7 * Intel 82801AA and 82801AB (ICH and ICH0 - part of the
8 '810' and '810E' chipsets)
9 * Intel 82801BA (ICH2 - part of the '815E' chipset)
10 * Intel 82801CA/CAM (ICH3)
7edcb9ab
OR
11 * Intel 82801DB (ICH4) (HW PEC supported)
12 * Intel 82801EB/ER (ICH5) (HW PEC supported)
1da177e4
LT
13 * Intel 6300ESB
14 * Intel 82801FB/FR/FW/FRW (ICH6)
a980a99a
JG
15 * Intel 82801G (ICH7)
16 * Intel 631xESB/632xESB (ESB2)
17 * Intel 82801H (ICH8)
d28dc711 18 * Intel 82801I (ICH9)
c429a247
SH
19 * Intel EP80579 (Tolapai)
20 * Intel 82801JI (ICH10)
e30d9859 21 * Intel 5/3400 Series (PCH)
662cda8a 22 * Intel 6 Series (PCH)
e30d9859 23 * Intel Patsburg (PCH)
662cda8a 24 * Intel DH89xxCC (PCH)
6e2a851e 25 * Intel Panther Point (PCH)
062737fb 26 * Intel Lynx Point (PCH)
c2db409c 27 * Intel Avoton (SOC)
a3fc0ff0 28 * Intel Wellsburg (PCH)
f39901c1 29 * Intel Coleto Creek (PCH)
b299de83 30 * Intel Wildcat Point (PCH)
1b31e9b7 31 * Intel BayTrail (SOC)
15407798 32 * Intel Braswell (SOC)
80d943ab
JN
33 * Intel Sunrise Point (PCH)
34 * Intel Kaby Lake (PCH)
2b630df7
JN
35 * Intel DNV (SOC)
36 * Intel Broxton (SOC)
cdc5a311 37 * Intel Lewisburg (PCH)
9827f9eb 38 * Intel Gemini Lake (SOC)
80d943ab 39 * Intel Cannon Lake (PCH)
cb09d943 40 * Intel Cedar Fork (PCH)
0bff2a86 41 * Intel Ice Lake (PCH)
5cd1c56c 42 * Intel Comet Lake (PCH)
9be1485a 43 * Intel Elkhart Lake (PCH)
051d769f 44 * Intel Tiger Lake (PCH)
790591f4 45 * Intel Jasper Lake (SOC)
12745b07 46 * Intel Emmitsburg (PCH)
332fdaeb 47 * Intel Alder Lake (PCH)
9c02d401 48 * Intel Raptor Lake (PCH)
24fff66f 49 * Intel Meteor Lake (SOC)
ccf988b6 50
e07bc679 51 Datasheets: Publicly available at the Intel website
1da177e4 52
55fee8d7
DW
53On Intel Patsburg and later chipsets, both the normal host SMBus controller
54and the additional 'Integrated Device Function' controllers are supported.
55
ccf988b6
MCC
56Authors:
57 - Mark Studebaker <mdsxyz123@yahoo.com>
58 - Jean Delvare <jdelvare@suse.de>
1da177e4
LT
59
60
61Module Parameters
62-----------------
63
adff687d 64* disable_features (bit vector)
ccf988b6 65
adff687d
JD
66Disable selected features normally supported by the device. This makes it
67possible to work around possible driver or hardware bugs if the feature in
68question doesn't work as intended for whatever reason. Bit values:
ccf988b6
MCC
69
70 ==== =========================================
636752bc
DK
71 0x01 disable SMBus PEC
72 0x02 disable the block buffer
73 0x08 disable the I2C block read functionality
74 0x10 don't use interrupts
ed6182a8 75 0x20 disable SMBus Host Notify
ccf988b6 76 ==== =========================================
1da177e4
LT
77
78
79Description
80-----------
81
82The ICH (properly known as the 82801AA), ICH0 (82801AB), ICH2 (82801BA),
c429a247 83ICH3 (82801CA/CAM) and later devices (PCH) are Intel chips that are a part of
1da177e4
LT
84Intel's '810' chipset for Celeron-based PCs, '810E' chipset for
85Pentium-based PCs, '815E' chipset, and others.
86
87The ICH chips contain at least SEVEN separate PCI functions in TWO logical
88PCI devices. An output of lspci will show something similar to the
ccf988b6 89following::
1da177e4
LT
90
91 00:1e.0 PCI bridge: Intel Corporation: Unknown device 2418 (rev 01)
92 00:1f.0 ISA bridge: Intel Corporation: Unknown device 2410 (rev 01)
93 00:1f.1 IDE interface: Intel Corporation: Unknown device 2411 (rev 01)
94 00:1f.2 USB Controller: Intel Corporation: Unknown device 2412 (rev 01)
95 00:1f.3 Unknown class [0c05]: Intel Corporation: Unknown device 2413 (rev 01)
96
97The SMBus controller is function 3 in device 1f. Class 0c05 is SMBus Serial
98Controller.
99
1da177e4
LT
100The ICH chips are quite similar to Intel's PIIX4 chip, at least in the
101SMBus controller.
102
1da177e4
LT
103
104Process Call Support
105--------------------
106
315cd67c 107Block process call is supported on the 82801EB (ICH5) and later chips.
1da177e4
LT
108
109
110I2C Block Read Support
111----------------------
112
6342064c 113I2C block read is supported on the 82801EB (ICH5) and later chips.
1da177e4
LT
114
115
116SMBus 2.0 Support
117-----------------
118
119The 82801DB (ICH4) and later chips support several SMBus 2.0 features.
120
099ab118 121
636752bc
DK
122Interrupt Support
123-----------------
124
125PCI interrupt support is supported on the 82801EB (ICH5) and later chips.
126
127
099ab118
JD
128Hidden ICH SMBus
129----------------
130
131If your system has an Intel ICH south bridge, but you do NOT see the
132SMBus device at 00:1f.3 in lspci, and you can't figure out any way in the
133BIOS to enable it, it means it has been hidden by the BIOS code. Asus is
134well known for first doing this on their P4B motherboard, and many other
135boards after that. Some vendor machines are affected as well.
136
ed6182a8 137The first thing to try is the "i2c-scmi" ACPI driver. It could be that the
099ab118 138SMBus was hidden on purpose because it'll be driven by ACPI. If the
ed6182a8
JD
139i2c-scmi driver works for you, just forget about the i2c-i801 driver and
140don't try to unhide the ICH SMBus. Even if i2c-scmi doesn't work, you
099ab118 141better make sure that the SMBus isn't used by the ACPI code. Try loading
ed6182a8
JD
142the "fan" and "thermal" drivers, and check in /sys/class/thermal. If you
143find a thermal zone with type "acpitz", it's likely that the ACPI is
144accessing the SMBus and it's safer not to unhide it. Only once you are
145certain that ACPI isn't using the SMBus, you can attempt to unhide it.
099ab118
JD
146
147In order to unhide the SMBus, we need to change the value of a PCI
148register before the kernel enumerates the PCI devices. This is done in
149drivers/pci/quirks.c, where all affected boards must be listed (see
150function asus_hides_smbus_hostbridge.) If the SMBus device is missing,
151and you think there's something interesting on the SMBus (e.g. a
152hardware monitoring chip), you need to add your board to the list.
153
154The motherboard is identified using the subvendor and subdevice IDs of the
ccf988b6 155host bridge PCI device. Get yours with ``lspci -n -v -s 00:00.0``::
099ab118 156
ccf988b6
MCC
157 00:00.0 Class 0600: 8086:2570 (rev 02)
158 Subsystem: 1043:80f2
159 Flags: bus master, fast devsel, latency 0
160 Memory at fc000000 (32-bit, prefetchable) [size=32M]
161 Capabilities: [e4] #09 [2106]
162 Capabilities: [a0] AGP version 3.0
099ab118
JD
163
164Here the host bridge ID is 2570 (82865G/PE/P), the subvendor ID is 1043
165(Asus) and the subdevice ID is 80f2 (P4P800-X). You can find the symbolic
166names for the bridge ID and the subvendor ID in include/linux/pci_ids.h,
167and then add a case for your subdevice ID at the right place in
168drivers/pci/quirks.c. Then please give it very good testing, to make sure
169that the unhidden SMBus doesn't conflict with e.g. ACPI.
170
171If it works, proves useful (i.e. there are usable chips on the SMBus)
172and seems safe, please submit a patch for inclusion into the kernel.
173
174Note: There's a useful script in lm_sensors 2.10.2 and later, named
175unhide_ICH_SMBus (in prog/hotplug), which uses the fakephp driver to
176temporarily unhide the SMBus without having to patch and recompile your
177kernel. It's very convenient if you just want to check if there's
178anything interesting on your hidden ICH SMBus.
179
180
ccf988b6
MCC
181----------------------------------------------------------------------------
182
1da177e4
LT
183The lm_sensors project gratefully acknowledges the support of Texas
184Instruments in the initial development of this driver.
185
186The lm_sensors project gratefully acknowledges the support of Intel in the
187development of SMBus 2.0 / ICH4 features of this driver.