Kconfig 22 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776
  1. #
  2. # I2C subsystem configuration
  3. #
  4. menuconfig I2C
  5. bool "I2C support"
  6. default y
  7. help
  8. Note:
  9. This is a stand-in for an option to enable I2C support. In fact this
  10. simply enables building of the I2C directory for U-Boot. The actual
  11. I2C feature is enabled by DM_I2C (for driver model) and
  12. the #define CONFIG_SYS_I2C_LEGACY (for the legacy I2C stack).
  13. So at present there is no need to ever disable this option.
  14. Eventually it will:
  15. Enable support for the I2C (Inter-Integrated Circuit) bus in U-Boot.
  16. I2C works with a clock and data line which can be driven by a
  17. one or more masters or slaves. It is a fairly complex bus but is
  18. widely used as it only needs two lines for communication. Speeds of
  19. 400kbps are typical but up to 3.4Mbps is supported by some
  20. hardware. Enable this option to build the drivers in drivers/i2c as
  21. part of a U-Boot build.
  22. if I2C
  23. config DM_I2C
  24. bool "Enable Driver Model for I2C drivers"
  25. depends on DM
  26. help
  27. Enable driver model for I2C. The I2C uclass interface: probe, read,
  28. write and speed, is implemented with the bus drivers operations,
  29. which provide methods for bus setting and data transfer. Each chip
  30. device (bus child) info is kept as parent plat. The interface
  31. is defined in include/i2c.h.
  32. config SPL_DM_I2C
  33. bool "Enable Driver Model for I2C drivers in SPL"
  34. depends on SPL_DM && DM_I2C
  35. default y
  36. help
  37. Enable driver model for I2C. The I2C uclass interface: probe, read,
  38. write and speed, is implemented with the bus drivers operations,
  39. which provide methods for bus setting and data transfer. Each chip
  40. device (bus child) info is kept as parent platdata. The interface
  41. is defined in include/i2c.h.
  42. config TPL_DM_I2C
  43. bool "Enable Driver Model for I2C drivers in TPL"
  44. depends on TPL_DM && DM_I2C
  45. help
  46. Enable driver model for I2C. The I2C uclass interface: probe, read,
  47. write and speed, is implemented with the bus drivers operations,
  48. which provide methods for bus setting and data transfer. Each chip
  49. device (bus child) info is kept as parent platdata. The interface
  50. is defined in include/i2c.h.
  51. config VPL_DM_I2C
  52. bool "Enable Driver Model for I2C drivers in VPL"
  53. depends on VPL_DM && DM_I2C
  54. default y
  55. help
  56. Enable driver model for I2C. The I2C uclass interface: probe, read,
  57. write and speed, is implemented with the bus drivers operations,
  58. which provide methods for bus setting and data transfer. Each chip
  59. device (bus child) info is kept as parent platdata. The interface
  60. is defined in include/i2c.h.
  61. config SYS_I2C_LEGACY
  62. bool "Enable legacy I2C subsystem and drivers"
  63. depends on !DM_I2C
  64. help
  65. Enable the legacy I2C subsystem and drivers. While this is
  66. deprecated in U-Boot itself, this can be useful in some situations
  67. in SPL or TPL.
  68. config SPL_SYS_I2C_LEGACY
  69. bool "Enable legacy I2C subsystem and drivers in SPL"
  70. depends on SUPPORT_SPL && !SPL_DM_I2C
  71. help
  72. Enable the legacy I2C subsystem and drivers in SPL. This is useful
  73. in some size constrained situations.
  74. config TPL_SYS_I2C_LEGACY
  75. bool "Enable legacy I2C subsystem and drivers in TPL"
  76. depends on SUPPORT_TPL && !SPL_DM_I2C
  77. help
  78. Enable the legacy I2C subsystem and drivers in TPL. This is useful
  79. in some size constrained situations.
  80. config SYS_I2C_EARLY_INIT
  81. bool "Enable legacy I2C subsystem early in boot"
  82. depends on BOARD_EARLY_INIT_F && SPL_SYS_I2C_LEGACY && SYS_I2C_MXC
  83. help
  84. Add the function prototype for i2c_early_init_f which is called in
  85. board_early_init_f.
  86. config I2C_CROS_EC_TUNNEL
  87. tristate "Chrome OS EC tunnel I2C bus"
  88. depends on CROS_EC
  89. help
  90. This provides an I2C bus that will tunnel i2c commands through to
  91. the other side of the Chrome OS EC to the I2C bus connected there.
  92. This will work whatever the interface used to talk to the EC (SPI,
  93. I2C or LPC). Some Chromebooks use this when the hardware design
  94. does not allow direct access to the main PMIC from the AP.
  95. config I2C_CROS_EC_LDO
  96. bool "Provide access to LDOs on the Chrome OS EC"
  97. depends on CROS_EC
  98. ---help---
  99. On many Chromebooks the main PMIC is inaccessible to the AP. This is
  100. often dealt with by using an I2C pass-through interface provided by
  101. the EC. On some unfortunate models (e.g. Spring) the pass-through
  102. is not available, and an LDO message is available instead. This
  103. option enables a driver which provides very basic access to those
  104. regulators, via the EC. We implement this as an I2C bus which
  105. emulates just the TPS65090 messages we know about. This is done to
  106. avoid duplicating the logic in the TPS65090 regulator driver for
  107. enabling/disabling an LDO.
  108. config I2C_SET_DEFAULT_BUS_NUM
  109. bool "Set default I2C bus number"
  110. depends on DM_I2C
  111. help
  112. Set default number of I2C bus to be accessed. This option provides
  113. behaviour similar to old (i.e. pre DM) I2C bus driver.
  114. config I2C_DEFAULT_BUS_NUMBER
  115. hex "I2C default bus number"
  116. depends on I2C_SET_DEFAULT_BUS_NUM
  117. default 0x0
  118. help
  119. Number of default I2C bus to use
  120. config DM_I2C_GPIO
  121. bool "Enable Driver Model for software emulated I2C bus driver"
  122. depends on DM_I2C && DM_GPIO
  123. help
  124. Enable the i2c bus driver emulation by using the GPIOs. The bus GPIO
  125. configuration is given by the device tree. Kernel-style device tree
  126. bindings are supported.
  127. Binding info: doc/device-tree-bindings/i2c/i2c-gpio.txt
  128. config SPL_DM_I2C_GPIO
  129. bool "Enable Driver Model for software emulated I2C bus driver in SPL"
  130. depends on SPL_DM && DM_I2C_GPIO && SPL_DM_GPIO && SPL_GPIO
  131. default y
  132. help
  133. Enable the i2c bus driver emulation by using the GPIOs. The bus GPIO
  134. configuration is given by the device tree. Kernel-style device tree
  135. bindings are supported.
  136. Binding info: doc/device-tree-bindings/i2c/i2c-gpio.txt
  137. config SYS_I2C_AT91
  138. bool "Atmel I2C driver"
  139. depends on DM_I2C && ARCH_AT91
  140. help
  141. Add support for the Atmel I2C driver. A serious problem is that there
  142. is no documented way to issue repeated START conditions for more than
  143. two messages, as needed to support combined I2C messages. Use the
  144. i2c-gpio driver unless your system can cope with this limitation.
  145. Binding info: doc/device-tree-bindings/i2c/i2c-at91.txt
  146. config SYS_I2C_IPROC
  147. bool "Broadcom I2C driver"
  148. depends on DM_I2C
  149. help
  150. Broadcom I2C driver.
  151. Add support for Broadcom I2C driver.
  152. Say yes here to to enable the Broadco I2C driver.
  153. config SYS_I2C_FSL
  154. bool "Freescale I2C bus driver"
  155. help
  156. Add support for Freescale I2C busses as used on MPC8240, MPC8245, and
  157. MPC85xx processors.
  158. if SYS_I2C_FSL && (SYS_I2C_LEGACY || SPL_SYS_I2C_LEGACY)
  159. config SYS_FSL_I2C_OFFSET
  160. hex "Offset from the IMMR of the address of the first I2C controller"
  161. config SYS_FSL_HAS_I2C2_OFFSET
  162. bool "Support a second I2C controller"
  163. config SYS_FSL_I2C2_OFFSET
  164. hex "Offset from the IMMR of the address of the second I2C controller"
  165. depends on SYS_FSL_HAS_I2C2_OFFSET
  166. config SYS_FSL_HAS_I2C3_OFFSET
  167. bool "Support a third I2C controller"
  168. config SYS_FSL_I2C3_OFFSET
  169. hex "Offset from the IMMR of the address of the third I2C controller"
  170. depends on SYS_FSL_HAS_I2C3_OFFSET
  171. config SYS_FSL_HAS_I2C4_OFFSET
  172. bool "Support a fourth I2C controller"
  173. config SYS_FSL_I2C4_OFFSET
  174. hex "Offset from the IMMR of the address of the fourth I2C controller"
  175. depends on SYS_FSL_HAS_I2C4_OFFSET
  176. endif
  177. config SYS_I2C_CADENCE
  178. tristate "Cadence I2C Controller"
  179. depends on DM_I2C
  180. help
  181. Say yes here to select Cadence I2C Host Controller. This controller is
  182. e.g. used by Xilinx Zynq.
  183. config SYS_I2C_CA
  184. tristate "Cortina-Access I2C Controller"
  185. depends on DM_I2C && CORTINA_PLATFORM
  186. help
  187. Add support for the Cortina Access I2C host controller.
  188. Say yes here to select Cortina-Access I2C Host Controller.
  189. config SYS_I2C_DAVINCI
  190. bool "Davinci I2C Controller"
  191. depends on (ARCH_KEYSTONE || ARCH_DAVINCI)
  192. help
  193. Say yes here to add support for Davinci and Keystone I2C controller
  194. config SYS_I2C_DW
  195. bool "Designware I2C Controller"
  196. help
  197. Say yes here to select the Designware I2C Host Controller. This
  198. controller is used in various SoCs, e.g. the ST SPEAr, Altera
  199. SoCFPGA, Synopsys ARC700 and some Intel x86 SoCs.
  200. config SYS_I2C_DW_PCI
  201. bool "Designware PCI I2C Controller"
  202. depends on SYS_I2C_DW && PCI && ACPIGEN
  203. default y
  204. help
  205. Say yes here to select the Designware PCI I2C Host Controller.
  206. This PCI I2C controller is the base on Desigware I2C host
  207. controller.
  208. config SYS_I2C_AST2600
  209. bool "AST2600 I2C Controller"
  210. depends on DM_I2C && ARCH_ASPEED
  211. help
  212. Say yes here to select AST2600 I2C Host Controller. The driver
  213. support AST2600 I2C new mode register. This I2C controller supports:
  214. _Standard-mode (up to 100 kHz)
  215. _Fast-mode (up to 400 kHz)
  216. _Fast-mode Plus (up to 1 MHz)
  217. config SYS_I2C_ASPEED
  218. bool "Aspeed I2C Controller"
  219. depends on DM_I2C && ARCH_ASPEED
  220. help
  221. Say yes here to select Aspeed I2C Host Controller. The driver
  222. supports AST2500 and AST2400 controllers, but is very limited.
  223. Only single master mode is supported and only byte-by-byte
  224. synchronous reads and writes are supported, no Pool Buffers or DMA.
  225. config SYS_I2C_INTEL
  226. bool "Intel I2C/SMBUS driver"
  227. depends on DM_I2C
  228. help
  229. Add support for the Intel SMBUS driver. So far this driver is just
  230. a stub which perhaps some basic init. There is no implementation of
  231. the I2C API meaning that any I2C operations will immediately fail
  232. for now.
  233. config SYS_I2C_IMX_LPI2C
  234. bool "NXP i.MX LPI2C driver"
  235. help
  236. Add support for the NXP i.MX LPI2C driver.
  237. config SYS_I2C_LPC32XX
  238. bool "LPC32XX I2C driver"
  239. depends on ARCH_LPC32XX
  240. help
  241. Enable support for the LPC32xx I2C driver.
  242. config SYS_I2C_MESON
  243. bool "Amlogic Meson I2C driver"
  244. depends on DM_I2C && ARCH_MESON
  245. help
  246. Add support for the I2C controller available in Amlogic Meson
  247. SoCs. The controller supports programmable bus speed including
  248. standard (100kbits/s) and fast (400kbit/s) speed and allows the
  249. software to define a flexible format of the bit streams. It has an
  250. internal buffer holding up to 8 bytes for transfers and supports
  251. both 7-bit and 10-bit addresses.
  252. config SYS_I2C_MTK
  253. bool "MediaTek I2C driver"
  254. help
  255. This selects the MediaTek Integrated Inter Circuit bus driver.
  256. The I2C bus adapter is the base for some other I2C client,
  257. eg: touch, sensors.
  258. If you want to use MediaTek I2C interface, say Y here.
  259. If unsure, say N.
  260. config SYS_I2C_MICROCHIP
  261. bool "Microchip I2C driver"
  262. help
  263. Add support for the Microchip I2C driver. This is operating on
  264. standard mode up to 100 kbits/s and fast mode up to 400 kbits/s.
  265. config SYS_I2C_MXC
  266. bool "NXP MXC I2C driver"
  267. help
  268. Add support for the NXP I2C driver. This supports up to four bus
  269. channels and operating on standard mode up to 100 kbits/s and fast
  270. mode up to 400 kbits/s.
  271. if SYS_I2C_MXC && (SYS_I2C_LEGACY || SPL_SYS_I2C_LEGACY)
  272. config SYS_I2C_MXC_I2C1
  273. bool "NXP MXC I2C1"
  274. help
  275. Add support for NXP MXC I2C Controller 1.
  276. Required for SoCs which have I2C MXC controller 1 eg LS1088A, LS2080A
  277. config SYS_I2C_MXC_I2C2
  278. bool "NXP MXC I2C2"
  279. help
  280. Add support for NXP MXC I2C Controller 2.
  281. Required for SoCs which have I2C MXC controller 2 eg LS1088A, LS2080A
  282. config SYS_I2C_MXC_I2C3
  283. bool "NXP MXC I2C3"
  284. help
  285. Add support for NXP MXC I2C Controller 3.
  286. Required for SoCs which have I2C MXC controller 3 eg LS1088A, LS2080A
  287. config SYS_I2C_MXC_I2C4
  288. bool "NXP MXC I2C4"
  289. help
  290. Add support for NXP MXC I2C Controller 4.
  291. Required for SoCs which have I2C MXC controller 4 eg LS1088A, LS2080A
  292. config SYS_I2C_MXC_I2C5
  293. bool "NXP MXC I2C5"
  294. help
  295. Add support for NXP MXC I2C Controller 5.
  296. Required for SoCs which have I2C MXC controller 5 eg LX2160A
  297. config SYS_I2C_MXC_I2C6
  298. bool "NXP MXC I2C6"
  299. help
  300. Add support for NXP MXC I2C Controller 6.
  301. Required for SoCs which have I2C MXC controller 6 eg LX2160A
  302. config SYS_I2C_MXC_I2C7
  303. bool "NXP MXC I2C7"
  304. help
  305. Add support for NXP MXC I2C Controller 7.
  306. Required for SoCs which have I2C MXC controller 7 eg LX2160A
  307. config SYS_I2C_MXC_I2C8
  308. bool "NXP MXC I2C8"
  309. help
  310. Add support for NXP MXC I2C Controller 8.
  311. Required for SoCs which have I2C MXC controller 8 eg LX2160A
  312. endif
  313. if SYS_I2C_MXC_I2C1
  314. config SYS_MXC_I2C1_SPEED
  315. int "I2C Channel 1 speed"
  316. default 40000000 if TARGET_LS2080A_EMU
  317. default 100000
  318. help
  319. MXC I2C Channel 1 speed
  320. config SYS_MXC_I2C1_SLAVE
  321. hex "I2C1 Slave"
  322. default 0
  323. help
  324. MXC I2C1 Slave
  325. endif
  326. if SYS_I2C_MXC_I2C2
  327. config SYS_MXC_I2C2_SPEED
  328. int "I2C Channel 2 speed"
  329. default 40000000 if TARGET_LS2080A_EMU
  330. default 100000
  331. help
  332. MXC I2C Channel 2 speed
  333. config SYS_MXC_I2C2_SLAVE
  334. hex "I2C2 Slave"
  335. default 0
  336. help
  337. MXC I2C2 Slave
  338. endif
  339. if SYS_I2C_MXC_I2C3
  340. config SYS_MXC_I2C3_SPEED
  341. int "I2C Channel 3 speed"
  342. default 100000
  343. help
  344. MXC I2C Channel 3 speed
  345. config SYS_MXC_I2C3_SLAVE
  346. hex "I2C3 Slave"
  347. default 0
  348. help
  349. MXC I2C3 Slave
  350. endif
  351. if SYS_I2C_MXC_I2C4
  352. config SYS_MXC_I2C4_SPEED
  353. int "I2C Channel 4 speed"
  354. default 100000
  355. help
  356. MXC I2C Channel 4 speed
  357. config SYS_MXC_I2C4_SLAVE
  358. hex "I2C4 Slave"
  359. default 0
  360. help
  361. MXC I2C4 Slave
  362. endif
  363. if SYS_I2C_MXC_I2C5
  364. config SYS_MXC_I2C5_SPEED
  365. int "I2C Channel 5 speed"
  366. default 100000
  367. help
  368. MXC I2C Channel 5 speed
  369. config SYS_MXC_I2C5_SLAVE
  370. hex "I2C5 Slave"
  371. default 0
  372. help
  373. MXC I2C5 Slave
  374. endif
  375. if SYS_I2C_MXC_I2C6
  376. config SYS_MXC_I2C6_SPEED
  377. int "I2C Channel 6 speed"
  378. default 100000
  379. help
  380. MXC I2C Channel 6 speed
  381. config SYS_MXC_I2C6_SLAVE
  382. hex "I2C6 Slave"
  383. default 0
  384. help
  385. MXC I2C6 Slave
  386. endif
  387. if SYS_I2C_MXC_I2C7
  388. config SYS_MXC_I2C7_SPEED
  389. int "I2C Channel 7 speed"
  390. default 100000
  391. help
  392. MXC I2C Channel 7 speed
  393. config SYS_MXC_I2C7_SLAVE
  394. hex "I2C7 Slave"
  395. default 0
  396. help
  397. MXC I2C7 Slave
  398. endif
  399. if SYS_I2C_MXC_I2C8
  400. config SYS_MXC_I2C8_SPEED
  401. int "I2C Channel 8 speed"
  402. default 100000
  403. help
  404. MXC I2C Channel 8 speed
  405. config SYS_MXC_I2C8_SLAVE
  406. hex "I2C8 Slave"
  407. default 0
  408. help
  409. MXC I2C8 Slave
  410. endif
  411. config SYS_I2C_NEXELL
  412. bool "Nexell I2C driver"
  413. depends on DM_I2C
  414. help
  415. Add support for the Nexell I2C driver. This is used with various
  416. Nexell parts such as S5Pxx18 series SoCs. All chips
  417. have several I2C ports and all are provided, controlled by the
  418. device tree.
  419. config SYS_I2C_NPCM
  420. bool "Nuvoton NPCM I2C driver"
  421. help
  422. Support for Nuvoton I2C controller driver.
  423. config SYS_I2C_OCORES
  424. bool "ocores I2C driver"
  425. depends on DM_I2C
  426. help
  427. Add support for ocores I2C controller. For details see
  428. https://opencores.org/projects/i2c
  429. config SYS_I2C_OMAP24XX
  430. bool "TI OMAP2+ I2C driver"
  431. depends on ARCH_OMAP2PLUS || ARCH_K3
  432. help
  433. Add support for the OMAP2+ I2C driver.
  434. config SYS_I2C_RCAR_I2C
  435. bool "Renesas RCar I2C driver"
  436. depends on (RCAR_GEN2 || RCAR_64) && DM_I2C
  437. help
  438. Support for Renesas RCar I2C controller.
  439. config SYS_I2C_RCAR_IIC
  440. bool "Renesas RCar Gen3 IIC driver"
  441. depends on (RCAR_GEN2 || RCAR_GEN3) && DM_I2C
  442. help
  443. Support for Renesas RCar Gen3 IIC controller.
  444. config SYS_I2C_ROCKCHIP
  445. bool "Rockchip I2C driver"
  446. depends on DM_I2C
  447. help
  448. Add support for the Rockchip I2C driver. This is used with various
  449. Rockchip parts such as RK3126, RK3128, RK3036 and RK3288. All chips
  450. have several I2C ports and all are provided, controlled by the
  451. device tree.
  452. config SYS_I2C_SANDBOX
  453. bool "Sandbox I2C driver"
  454. depends on SANDBOX && DM_I2C
  455. default y
  456. help
  457. Enable I2C support for sandbox. This is an emulation of a real I2C
  458. bus. Devices can be attached to the bus using the device tree
  459. which specifies the driver to use. See sandbox.dts as an example.
  460. config SPL_SYS_I2C_SANDBOX
  461. bool "Sandbox I2C driver (SPL)"
  462. depends on SPL && SANDBOX && DM_I2C
  463. default y
  464. help
  465. Enable I2C support for sandbox. This is an emulation of a real I2C
  466. bus. Devices can be attached to the bus using the device tree
  467. which specifies the driver to use. See sandbox.dts as an example.
  468. config SYS_I2C_SH
  469. bool "Legacy SuperH I2C interface"
  470. depends on ARCH_RMOBILE && SYS_I2C_LEGACY
  471. help
  472. Enable the legacy SuperH I2C interface.
  473. if SYS_I2C_SH
  474. config SYS_I2C_SH_NUM_CONTROLLERS
  475. int
  476. default 5
  477. config SYS_I2C_SH_BASE0
  478. hex
  479. default 0xE6820000
  480. config SYS_I2C_SH_BASE1
  481. hex
  482. default 0xE6822000
  483. config SYS_I2C_SH_BASE2
  484. hex
  485. default 0xE6824000
  486. config SYS_I2C_SH_BASE3
  487. hex
  488. default 0xE6826000
  489. config SYS_I2C_SH_BASE4
  490. hex
  491. default 0xE6828000
  492. config SH_I2C_8BIT
  493. bool
  494. default y
  495. config SH_I2C_DATA_HIGH
  496. int
  497. default 4
  498. config SH_I2C_DATA_LOW
  499. int
  500. default 5
  501. config SH_I2C_CLOCK
  502. int
  503. default 104000000
  504. endif
  505. config SYS_I2C_SOFT
  506. bool "Legacy software I2C interface"
  507. help
  508. Enable the legacy software defined I2C interface
  509. config SYS_I2C_SOFT_SPEED
  510. int "Software I2C bus speed"
  511. depends on SYS_I2C_SOFT
  512. default 100000
  513. help
  514. Speed of the software I2C bus
  515. config SYS_I2C_SOFT_SLAVE
  516. hex "Software I2C slave address"
  517. depends on SYS_I2C_SOFT
  518. default 0xfe
  519. help
  520. Slave address of the software I2C bus
  521. config SYS_I2C_OCTEON
  522. bool "Octeon II/III/TX/TX2 I2C driver"
  523. depends on (ARCH_OCTEON || ARCH_OCTEONTX || ARCH_OCTEONTX2) && DM_I2C
  524. default y
  525. help
  526. Add support for the Marvell Octeon I2C driver. This is used with
  527. various Octeon parts such as Octeon II/III and OcteonTX/TX2. All
  528. chips have several I2C ports and all are provided, controlled by
  529. the device tree.
  530. config SYS_I2C_QUP
  531. bool "Qualcomm QUP I2C controller"
  532. depends on ARCH_SNAPDRAGON
  533. help
  534. Support for Qualcomm QUP I2C controller based on Qualcomm Universal
  535. Peripherals (QUP) engine. The QUP engine is an advanced high
  536. performance slave port that provides a common data path (an output
  537. FIFO and an input FIFO) for I2C and SPI interfaces. The I2C/SPI QUP
  538. controller is publicly documented in the Snapdragon 410E (APQ8016E)
  539. Technical Reference Manual, chapter "6.1 Qualcomm Universal
  540. Peripherals Engine (QUP)".
  541. config SYS_I2C_S3C24X0
  542. bool "Samsung I2C driver"
  543. depends on (ARCH_EXYNOS4 || ARCH_EXYNOS5) && DM_I2C
  544. help
  545. Support for Samsung I2C controller as Samsung SoCs.
  546. config SYS_I2C_STM32F7
  547. bool "STMicroelectronics STM32F7 I2C support"
  548. depends on (STM32F7 || STM32H7 || ARCH_STM32MP) && DM_I2C
  549. help
  550. Enable this option to add support for STM32 I2C controller
  551. introduced with STM32F7/H7 SoCs. This I2C controller supports :
  552. _ Slave and master modes
  553. _ Multimaster capability
  554. _ Standard-mode (up to 100 kHz)
  555. _ Fast-mode (up to 400 kHz)
  556. _ Fast-mode Plus (up to 1 MHz)
  557. _ 7-bit and 10-bit addressing mode
  558. _ Multiple 7-bit slave addresses (2 addresses, 1 with configurable mask)
  559. _ All 7-bit addresses acknowledge mode
  560. _ General call
  561. _ Programmable setup and hold times
  562. _ Easy to use event management
  563. _ Optional clock stretching
  564. _ Software reset
  565. config SYS_I2C_SUN6I_P2WI
  566. bool "Allwinner sun6i P2WI controller"
  567. depends on ARCH_SUNXI
  568. help
  569. Support for the P2WI (Push/Pull 2 Wire Interface) controller embedded
  570. in the Allwinner A31 and A31s SOCs. This interface is used to connect
  571. to specific devices like the X-Powers AXP221 PMIC.
  572. config SYS_I2C_SUN8I_RSB
  573. bool "Allwinner sun8i Reduced Serial Bus controller"
  574. depends on ARCH_SUNXI
  575. help
  576. Support for Allwinner's Reduced Serial Bus (RSB) controller. This
  577. controller is responsible for communicating with various RSB based
  578. devices, such as X-Powers AXPxxx PMICs and AC100/AC200 CODEC ICs.
  579. config SYS_I2C_SYNQUACER
  580. bool "Socionext SynQuacer I2C controller"
  581. depends on ARCH_SYNQUACER && DM_I2C
  582. help
  583. Support for Socionext Synquacer I2C controller. This I2C controller
  584. will be used for RTC and LS-connector on DeveloperBox.
  585. config SYS_I2C_TEGRA
  586. bool "NVIDIA Tegra internal I2C controller"
  587. depends on ARCH_TEGRA
  588. help
  589. Support for NVIDIA I2C controller available in Tegra SoCs.
  590. config SYS_I2C_UNIPHIER
  591. bool "UniPhier I2C driver"
  592. depends on ARCH_UNIPHIER && DM_I2C
  593. default y
  594. help
  595. Support for UniPhier I2C controller driver. This I2C controller
  596. is used on PH1-LD4, PH1-sLD8 or older UniPhier SoCs.
  597. config SYS_I2C_UNIPHIER_F
  598. bool "UniPhier FIFO-builtin I2C driver"
  599. depends on ARCH_UNIPHIER && DM_I2C
  600. default y
  601. help
  602. Support for UniPhier FIFO-builtin I2C controller driver.
  603. This I2C controller is used on PH1-Pro4 or newer UniPhier SoCs.
  604. config SYS_I2C_VERSATILE
  605. bool "Arm Ltd Versatile I2C bus driver"
  606. depends on DM_I2C && TARGET_VEXPRESS64_JUNO
  607. help
  608. Add support for the Arm Ltd Versatile Express I2C driver. The I2C host
  609. controller is present in the development boards manufactured by Arm Ltd.
  610. config SYS_I2C_MV
  611. bool "Marvell PXA (Armada 3720) I2C driver"
  612. help
  613. Support for PXA based I2C controller used on Armada 3720 SoC.
  614. In Linux, this driver is called i2c-pxa.
  615. config SYS_I2C_MVTWSI
  616. bool "Marvell I2C driver"
  617. help
  618. Support for Marvell I2C controllers as used on the orion5x and
  619. kirkwood SoC families.
  620. config TEGRA186_BPMP_I2C
  621. bool "Enable Tegra186 BPMP-based I2C driver"
  622. depends on TEGRA186_BPMP
  623. help
  624. Support for Tegra I2C controllers managed by the BPMP (Boot and
  625. Power Management Processor). On Tegra186, some I2C controllers are
  626. directly controlled by the main CPU, whereas others are controlled
  627. by the BPMP, and can only be accessed by the main CPU via IPC
  628. requests to the BPMP. This driver covers the latter case.
  629. config SYS_I2C_SLAVE
  630. hex "I2C Slave address channel (all buses)"
  631. depends on SYS_I2C_LEGACY || SPL_SYS_I2C_LEGACY || TPL_SYS_I2C_LEGACY
  632. default 0xfe
  633. help
  634. I2C Slave address channel 0 for all buses in the legacy drivers.
  635. Many boards/controllers/drivers don't support an I2C slave
  636. interface so provide a default slave address for them for use in
  637. common code. A real value for CONFIG_SYS_I2C_SLAVE should be
  638. defined for any board which does support a slave interface and
  639. this default used otherwise.
  640. config SYS_I2C_SPEED
  641. int "I2C Slave channel 0 speed (all buses)"
  642. depends on SYS_I2C_LEGACY || SPL_SYS_I2C_LEGACY || TPL_SYS_I2C_LEGACY
  643. default 100000
  644. help
  645. I2C Slave speed channel 0 for all buses in the legacy drivers.
  646. config SYS_I2C_BUS_MAX
  647. int "Max I2C busses"
  648. depends on ARCH_OMAP2PLUS || ARCH_SOCFPGA
  649. default 3 if OMAP34XX || AM33XX || AM43XX
  650. default 4 if ARCH_SOCFPGA || OMAP44XX
  651. default 5 if OMAP54XX
  652. help
  653. Define the maximum number of available I2C buses.
  654. config SYS_I2C_XILINX_XIIC
  655. bool "Xilinx AXI I2C driver"
  656. depends on DM_I2C
  657. help
  658. Support for Xilinx AXI I2C controller.
  659. config SYS_I2C_IHS
  660. bool "gdsys IHS I2C driver"
  661. depends on DM_I2C
  662. help
  663. Support for gdsys IHS I2C driver on FPGA bus.
  664. source "drivers/i2c/muxes/Kconfig"
  665. endif