Thomas Gleixner | ec8f24b | 2019-05-19 13:07:45 +0100 | [diff] [blame] | 1 | # SPDX-License-Identifier: GPL-2.0-only |
Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 2 | # |
Arthur Othieno | be53f9b | 2006-08-13 23:39:11 +0200 | [diff] [blame] | 3 | # I2C subsystem configuration |
Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 4 | # |
| 5 | |
Lan Tianyu | da3c664 | 2014-05-20 20:59:24 +0800 | [diff] [blame] | 6 | menu "I2C support" |
| 7 | |
| 8 | config I2C |
Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 9 | tristate "I2C support" |
Mika Kuoppala | 194684e | 2009-12-06 17:06:22 +0100 | [diff] [blame] | 10 | select RT_MUTEXES |
Benjamin Tissoires | 4d5538f | 2016-10-13 14:10:40 +0200 | [diff] [blame] | 11 | select IRQ_DOMAIN |
Masahiro Yamada | a7f7f62 | 2020-06-14 01:50:22 +0900 | [diff] [blame] | 12 | help |
Michael Witten | 622e040 | 2011-07-08 22:33:24 +0000 | [diff] [blame] | 13 | I2C (pronounce: I-squared-C) is a slow serial bus protocol used in |
Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 14 | many micro controller applications and developed by Philips. SMBus, |
| 15 | or System Management Bus is a subset of the I2C protocol. More |
| 16 | information is contained in the directory <file:Documentation/i2c/>, |
| 17 | especially in the file called "summary" there. |
| 18 | |
| 19 | Both I2C and SMBus are supported here. You will need this for |
| 20 | hardware sensors support, and also for Video For Linux support. |
| 21 | |
| 22 | If you want I2C support, you should say Y here and also to the |
| 23 | specific driver for your bus adapter(s) below. |
| 24 | |
| 25 | This I2C support can also be built as a module. If so, the module |
| 26 | will be called i2c-core. |
| 27 | |
Lan Tianyu | 3660475 | 2014-08-15 13:38:59 +0800 | [diff] [blame] | 28 | config ACPI_I2C_OPREGION |
| 29 | bool "ACPI I2C Operation region support" |
| 30 | depends on I2C=y && ACPI |
Lan Tianyu | da3c664 | 2014-05-20 20:59:24 +0800 | [diff] [blame] | 31 | default y |
| 32 | help |
Lan Tianyu | 3660475 | 2014-08-15 13:38:59 +0800 | [diff] [blame] | 33 | Say Y here if you want to enable ACPI I2C operation region support. |
| 34 | Operation Regions allow firmware (BIOS) code to access I2C slave devices, |
| 35 | such as smart batteries through an I2C host controller driver. |
Lan Tianyu | da3c664 | 2014-05-20 20:59:24 +0800 | [diff] [blame] | 36 | |
Jan Engelhardt | 16538e6 | 2007-05-01 23:26:34 +0200 | [diff] [blame] | 37 | if I2C |
| 38 | |
David Brownell | 9c1600e | 2007-05-01 23:26:31 +0200 | [diff] [blame] | 39 | config I2C_BOARDINFO |
Christoph Jaeger | 6341e62 | 2014-12-20 15:41:11 -0500 | [diff] [blame] | 40 | bool |
David Brownell | 9c1600e | 2007-05-01 23:26:31 +0200 | [diff] [blame] | 41 | default y |
| 42 | |
Jean Delvare | 2bb5095 | 2009-09-18 22:45:46 +0200 | [diff] [blame] | 43 | config I2C_COMPAT |
Christoph Jaeger | 6341e62 | 2014-12-20 15:41:11 -0500 | [diff] [blame] | 44 | bool "Enable compatibility bits for old user-space" |
Jean Delvare | 2bb5095 | 2009-09-18 22:45:46 +0200 | [diff] [blame] | 45 | default y |
| 46 | help |
| 47 | Say Y here if you intend to run lm-sensors 3.1.1 or older, or any |
| 48 | other user-space package which expects i2c adapters to be class |
| 49 | devices. If you don't know, say Y. |
| 50 | |
Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 51 | config I2C_CHARDEV |
| 52 | tristate "I2C device interface" |
Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 53 | help |
| 54 | Say Y here to use i2c-* device files, usually found in the /dev |
| 55 | directory on your system. They make it possible to have user-space |
| 56 | programs use the I2C bus. Information on how to do this is |
Mauro Carvalho Chehab | ccf988b | 2019-07-26 09:51:16 -0300 | [diff] [blame] | 57 | contained in the file <file:Documentation/i2c/dev-interface.rst>. |
Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 58 | |
| 59 | This support is also available as a module. If so, the module |
| 60 | will be called i2c-dev. |
| 61 | |
Michael Lawnick | 0826374 | 2010-08-11 18:21:02 +0200 | [diff] [blame] | 62 | config I2C_MUX |
| 63 | tristate "I2C bus multiplexing support" |
Michael Lawnick | 0826374 | 2010-08-11 18:21:02 +0200 | [diff] [blame] | 64 | help |
| 65 | Say Y here if you want the I2C core to support the ability to |
| 66 | handle multiplexed I2C bus topologies, by presenting each |
| 67 | multiplexed segment as a I2C adapter. |
| 68 | |
| 69 | This support is also available as a module. If so, the module |
| 70 | will be called i2c-mux. |
| 71 | |
Masahiro Yamada | 8636a1f | 2018-12-11 20:01:04 +0900 | [diff] [blame] | 72 | source "drivers/i2c/muxes/Kconfig" |
Michael Lawnick | 7f52813 | 2010-08-11 18:21:03 +0200 | [diff] [blame] | 73 | |
Jean Delvare | 8d24f8d | 2008-08-10 22:56:15 +0200 | [diff] [blame] | 74 | config I2C_HELPER_AUTO |
| 75 | bool "Autoselect pertinent helper modules" |
| 76 | default y |
| 77 | help |
| 78 | Some I2C bus drivers require so-called "I2C algorithm" modules |
| 79 | to work. These are basically software-only abstractions of generic |
| 80 | I2C interfaces. This option will autoselect them so that you don't |
| 81 | have to care. |
| 82 | |
| 83 | Unselect this only if you need to enable additional helper |
| 84 | modules, for example for use with external I2C bus drivers. |
| 85 | |
| 86 | In doubt, say Y. |
| 87 | |
Jean Delvare | e2ca307 | 2010-03-02 12:23:43 +0100 | [diff] [blame] | 88 | config I2C_SMBUS |
Arnaud Lacombe | dfc518d | 2010-11-06 18:30:25 -0300 | [diff] [blame] | 89 | tristate "SMBus-specific protocols" if !I2C_HELPER_AUTO |
Jean Delvare | e2ca307 | 2010-03-02 12:23:43 +0100 | [diff] [blame] | 90 | help |
| 91 | Say Y here if you want support for SMBus extensions to the I2C |
Jean Delvare | d380a20 | 2016-07-18 12:39:43 +0200 | [diff] [blame] | 92 | specification. At the moment, two extensions are supported: |
| 93 | the SMBus Alert protocol and the SMBus Host Notify protocol. |
Jean Delvare | e2ca307 | 2010-03-02 12:23:43 +0100 | [diff] [blame] | 94 | |
| 95 | This support is also available as a module. If so, the module |
| 96 | will be called i2c-smbus. |
| 97 | |
Masahiro Yamada | 8636a1f | 2018-12-11 20:01:04 +0900 | [diff] [blame] | 98 | source "drivers/i2c/algos/Kconfig" |
| 99 | source "drivers/i2c/busses/Kconfig" |
Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 100 | |
Peter Huewe | 3ddb59d | 2012-10-05 22:23:52 +0200 | [diff] [blame] | 101 | config I2C_STUB |
| 102 | tristate "I2C/SMBus Test Stub" |
Kees Cook | 417e86c | 2013-01-16 18:53:37 -0800 | [diff] [blame] | 103 | depends on m |
Peter Huewe | 3ddb59d | 2012-10-05 22:23:52 +0200 | [diff] [blame] | 104 | help |
| 105 | This module may be useful to developers of SMBus client drivers, |
| 106 | especially for certain kinds of sensor chips. |
| 107 | |
| 108 | If you do build this module, be sure to read the notes and warnings |
Mauro Carvalho Chehab | ccf988b | 2019-07-26 09:51:16 -0300 | [diff] [blame] | 109 | in <file:Documentation/i2c/i2c-stub.rst>. |
Peter Huewe | 3ddb59d | 2012-10-05 22:23:52 +0200 | [diff] [blame] | 110 | |
| 111 | If you don't know what to do here, definitely say N. |
| 112 | |
Wolfram Sang | 389be32 | 2014-11-18 17:04:54 +0100 | [diff] [blame] | 113 | config I2C_SLAVE |
| 114 | bool "I2C slave support" |
Wolfram Sang | 58e64b0 | 2020-06-28 20:55:22 +0200 | [diff] [blame] | 115 | help |
| 116 | This enables Linux to act as an I2C slave device. Note that your I2C |
| 117 | bus master driver also needs to support this functionality. Please |
| 118 | read Documentation/i2c/slave-interface.rst for further details. |
Wolfram Sang | 389be32 | 2014-11-18 17:04:54 +0100 | [diff] [blame] | 119 | |
| 120 | if I2C_SLAVE |
| 121 | |
| 122 | config I2C_SLAVE_EEPROM |
| 123 | tristate "I2C eeprom slave driver" |
Wolfram Sang | 59d3d60 | 2020-06-28 20:54:26 +0200 | [diff] [blame] | 124 | help |
| 125 | This backend makes Linux behave like an I2C EEPROM. Please read |
| 126 | Documentation/i2c/slave-eeprom-backend.rst for further details. |
Wolfram Sang | 389be32 | 2014-11-18 17:04:54 +0100 | [diff] [blame] | 127 | |
Wolfram Sang | a8335c6 | 2020-09-11 09:16:58 +0200 | [diff] [blame] | 128 | config I2C_SLAVE_TESTUNIT |
| 129 | tristate "I2C eeprom testunit driver" |
| 130 | help |
| 131 | This backend can be used to trigger test cases for I2C bus masters |
| 132 | which require a remote device with certain capabilities, e.g. |
| 133 | multi-master, SMBus Host Notify, etc. Please read |
| 134 | Documentation/i2c/slave-testunit-backend.rst for further details. |
| 135 | |
Wolfram Sang | 389be32 | 2014-11-18 17:04:54 +0100 | [diff] [blame] | 136 | endif |
| 137 | |
Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 138 | config I2C_DEBUG_CORE |
| 139 | bool "I2C Core debugging messages" |
Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 140 | help |
| 141 | Say Y here if you want the I2C core to produce a bunch of debug |
| 142 | messages to the system log. Select this if you are having a |
| 143 | problem with I2C support and want to see more of what is going on. |
| 144 | |
| 145 | config I2C_DEBUG_ALGO |
| 146 | bool "I2C Algorithm debugging messages" |
Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 147 | help |
| 148 | Say Y here if you want the I2C algorithm drivers to produce a bunch |
| 149 | of debug messages to the system log. Select this if you are having |
| 150 | a problem with I2C support and want to see more of what is going |
| 151 | on. |
| 152 | |
| 153 | config I2C_DEBUG_BUS |
| 154 | bool "I2C Bus debugging messages" |
Peter Huewe | 3ddb59d | 2012-10-05 22:23:52 +0200 | [diff] [blame] | 155 | depends on HAS_IOMEM |
Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 156 | help |
| 157 | Say Y here if you want the I2C bus drivers to produce a bunch of |
| 158 | debug messages to the system log. Select this if you are having |
| 159 | a problem with I2C support and want to see more of what is going |
| 160 | on. |
| 161 | |
Jan Engelhardt | 16538e6 | 2007-05-01 23:26:34 +0200 | [diff] [blame] | 162 | endif # I2C |
Lan Tianyu | da3c664 | 2014-05-20 20:59:24 +0800 | [diff] [blame] | 163 | |
| 164 | endmenu |