linux_dsm_epyc7002/drivers/i2c/busses
Cyrille Pitchen 0ef6f3213d i2c: at91: add support for new alternative command mode
The alternative command mode was introduced to simplify the transmission
of STOP conditions and to solve timing and latency issues around them.

This mode relies on a new register, the Alternative Command Register,
which must be set at the same time as the Master Mode Register. This new
register was designed to allow simple setup of basic combined transactions
built from up to two unitary transactions.

Indeed, the ACR is split into two areas, which describe one unitary
transaction each. Each area is filled with Data Length 8bit counter, a
Direction and a PEC Request bit. The PEC bit is only used in SMBus mode
and is not supported by this driver yet. Also when using alternative
command mode, the MREAD bit from the Master Mode Register is ignored.
Instead the Direction bits from ACR are used to setup the direction, read
or write, of each unitary transaction. Finally the 8bit counters must
filled with the data length of their respective transaction. Then if only
one transaction is to be used, the data length of the second one must be
set to zero. At the moment, this driver uses only the first transaction.

In addition to MMR and ACR, the Control Register also need to be written
to enable the alternative command mode. That's the purpose of its ACMEN
bit, which stands for Alternative Command Mode Enable.

Note that the alternative command mode is compatible with the use of the
Internal Address Register. So combined transactions for eeprom read are
actually implemented with the Internal Address Register. This register is
written with up to 3 bytes, which are the internal address sent to the
slave through the first write transaction. Then the first area of the ACR
describe the write transaction to follow, which carries the data to be
read from the eeprom. The second area of the ACR is not used so its Data
Length 8bit counter is cleared.

For each byte sent or received by the device, the Data Length 8bit counter
is decremented. When it reaches 0, a STOP condition is automatically sent.

Signed-off-by: Cyrille Pitchen <cyrille.pitchen@atmel.com>
Acked-by: Ludovic Desroches <ludovic.desroches@atmel.com>
Signed-off-by: Wolfram Sang <wsa@the-dreams.de>
2015-06-10 21:52:42 +09:00
..
i2c-acorn.c i2c: acorn: is tristate and should use module.h 2014-01-24 18:21:11 +01:00
i2c-ali15x3.c i2c: remove FSF address 2014-11-07 18:35:33 +01:00
i2c-ali1535.c i2c: remove FSF address 2014-11-07 18:35:33 +01:00
i2c-ali1563.c i2c: ali1563: fix checkpatch.pl issues 2014-05-22 10:09:21 +02:00
i2c-amd756-s4882.c i2c: remove FSF address 2014-11-07 18:35:33 +01:00
i2c-amd756.c i2c: remove FSF address 2014-11-07 18:35:33 +01:00
i2c-amd8111.c i2c: remove DEFINE_PCI_DEVICE_TABLE macro 2014-03-13 09:44:59 +01:00
i2c-at91.c i2c: at91: add support for new alternative command mode 2015-06-10 21:52:42 +09:00
i2c-au1550.c Driver core patches for 3.19-rc1 2014-12-14 16:10:09 -08:00
i2c-axxia.c i2c: axxia: Add bus recovery functionality 2015-06-03 00:40:16 +09:00
i2c-bcm2835.c i2c: i2c-bcm2835: match return type of wait_for_completion_timeout 2015-03-15 10:28:34 +01:00
i2c-bcm-iproc.c i2c: iproc: Add suspend/resume support 2015-06-03 03:04:53 +09:00
i2c-bcm-kona.c i2c: busses: drop owner assignment from platform_drivers 2014-10-20 16:20:37 +02:00
i2c-bfin-twi.c i2c: busses: drop owner assignment from platform_drivers 2014-10-20 16:20:37 +02:00
i2c-cadence.c i2c: cadence: fixup wait_for_completion_timeout return handling 2015-03-15 10:20:45 +01:00
i2c-cbus-gpio.c i2c: busses: drop owner assignment from platform_drivers 2014-10-20 16:20:37 +02:00
i2c-cpm.c i2c: cpm: make use of the new infrastructure for quirks 2015-03-13 15:10:54 +01:00
i2c-cros-ec-tunnel.c mfd: cros_ec: Use fixed size arrays to transfer data with the EC 2015-02-26 15:44:52 -08:00
i2c-davinci.c i2c: davinci: use ICPFUNC to toggle I2C as gpio for bus recovery 2015-04-10 17:57:28 +02:00
i2c-designware-baytrail.c i2c: designware-baytrail: baytrail_i2c_acquire() might sleep 2015-03-07 01:08:26 +01:00
i2c-designware-core.c i2c: designware: fixup return handling of wait_for_completion_timeout 2015-03-15 10:22:38 +01:00
i2c-designware-core.h i2c: designware: Add Intel Baytrail PMIC I2C bus support 2015-01-26 12:26:25 +01:00
i2c-designware-pcidrv.c i2c: designware-pci: update Intel copyright line 2015-02-17 16:42:43 +01:00
i2c-designware-platdrv.c i2c: designware: Avoid unnecessary resuming during system suspend 2015-06-03 02:54:19 +09:00
i2c-digicolor.c i2c: digicolor: remove duplicate include 2015-04-23 19:35:32 +02:00
i2c-diolan-u2c.c i2c: remove unnecessary OOM messages 2014-06-02 19:24:33 +02:00
i2c-dln2.c i2c: dln2: set the device tree node of the adapter 2015-03-27 16:56:21 +01:00
i2c-efm32.c i2c: busses: drop owner assignment from platform_drivers 2014-10-20 16:20:37 +02:00
i2c-eg20t.c i2c: remove FSF address 2014-11-07 18:35:33 +01:00
i2c-elektor.c i2c: remove FSF address 2014-11-07 18:35:33 +01:00
i2c-exynos5.c Driver core patches for 3.19-rc1 2014-12-14 16:10:09 -08:00
i2c-gpio.c i2c: busses: drop owner assignment from platform_drivers 2014-10-20 16:20:37 +02:00
i2c-highlander.c i2c: busses: drop owner assignment from platform_drivers 2014-10-20 16:20:37 +02:00
i2c-hix5hd2.c PM: Merge the SET*_RUNTIME_PM_OPS() macros 2014-12-04 00:51:30 +01:00
i2c-hydra.c i2c: remove FSF address 2014-11-07 18:35:33 +01:00
i2c-i801.c i2c: i801: Use managed pcim_* PCI device initialization and reservation 2015-03-09 10:51:59 +01:00
i2c-ibm_iic.c i2c: busses: drop owner assignment from platform_drivers 2014-10-20 16:20:37 +02:00
i2c-ibm_iic.h i2c-ibm_iic: Whitespace cleanup 2008-01-27 18:14:45 +01:00
i2c-img-scb.c i2c: img-scb: fixup of wait_for_completion_timeout return handling 2015-03-15 10:54:09 +01:00
i2c-imx.c i2c: constify platform_device_id 2015-05-12 18:27:48 +02:00
i2c-iop3xx.c i2c: busses: drop owner assignment from platform_drivers 2014-10-20 16:20:37 +02:00
i2c-iop3xx.h i2c: remove FSF address 2014-11-07 18:35:33 +01:00
i2c-isch.c Driver core patches for 3.19-rc1 2014-12-14 16:10:09 -08:00
i2c-ismt.c i2c: ismt: fix type of return var of wait_for_completion_timeout 2015-03-15 10:50:02 +01:00
i2c-jz4780.c i2c: jz4780: Fix build for m68k and sparc64 2015-04-15 17:57:26 +02:00
i2c-kempld.c i2c: busses: drop owner assignment from platform_drivers 2014-10-20 16:20:37 +02:00
i2c-meson.c i2c: add support for Amlogic Meson I2C controller 2014-11-18 16:16:44 +01:00
i2c-mpc.c i2c: mpc: Fix ISR return value 2015-03-27 16:53:41 +01:00
i2c-mt65xx.c I2C: mediatek: Add driver for MediaTek MT8173 I2C controller 2015-06-01 08:28:23 +09:00
i2c-mv64xxx.c i2c: mv64xxx: rework offload support to fix several problems 2014-12-17 19:26:03 +01:00
i2c-mxs.c i2c: constify platform_device_id 2015-05-12 18:27:48 +02:00
i2c-nforce2-s4985.c i2c: remove FSF address 2014-11-07 18:35:33 +01:00
i2c-nforce2.c i2c: remove FSF address 2014-11-07 18:35:33 +01:00
i2c-nomadik.c i2c: nomadik: match status to return type of read_i2c 2015-03-15 10:51:13 +01:00
i2c-ocores.c i2c: ocores: rework clk code to handle NULL cookie 2015-02-20 18:01:23 +01:00
i2c-octeon.c i2c: busses: drop owner assignment from platform_drivers 2014-10-20 16:20:37 +02:00
i2c-omap.c i2c: omap: implement bus recovery 2015-05-12 21:16:04 +02:00
i2c-opal.c i2c: opal: Update quirk flags to do write-then-anything 2015-03-14 12:08:21 +01:00
i2c-parport-light.c Driver core patches for 3.19-rc1 2014-12-14 16:10:09 -08:00
i2c-parport.c i2c: remove FSF address 2014-11-07 18:35:33 +01:00
i2c-parport.h i2c: remove FSF address 2014-11-07 18:35:33 +01:00
i2c-pasemi.c i2c: remove FSF address 2014-11-07 18:35:33 +01:00
i2c-pca-isa.c i2c: remove FSF address 2014-11-07 18:35:33 +01:00
i2c-pca-platform.c i2c: pca-platform: fix broken email address 2015-04-23 19:35:30 +02:00
i2c-piix4.c i2c: remove FSF address 2014-11-07 18:35:33 +01:00
i2c-pmcmsp.c i2c: pmcmsp: make use of the new infrastructure for quirks 2015-03-13 15:10:58 +01:00
i2c-pnx.c i2c: busses: drop owner assignment from platform_drivers 2014-10-20 16:20:37 +02:00
i2c-powermac.c i2c: powermac: make use of the new infrastructure for quirks 2015-03-13 15:10:57 +01:00
i2c-puv3.c i2c: busses: drop owner assignment from platform_drivers 2014-10-20 16:20:37 +02:00
i2c-pxa-pci.c i2c: remove DEFINE_PCI_DEVICE_TABLE macro 2014-03-13 09:44:59 +01:00
i2c-pxa.c Driver core patches for 3.19-rc1 2014-12-14 16:10:09 -08:00
i2c-qup.c i2c: qup: make use of the new infrastructure for quirks 2015-03-13 15:10:53 +01:00
i2c-rcar.c i2c: rcar: report slave capabilities to users 2015-06-01 08:07:14 +09:00
i2c-riic.c i2c: busses: drop owner assignment from platform_drivers 2014-10-20 16:20:37 +02:00
i2c-rk3x.c i2c: rk3x: Increase wait timeout to 1 second 2015-05-12 15:15:17 +02:00
i2c-robotfuzz-osif.c i2c: Add bus driver for for OSIF USB i2c device. 2014-01-13 13:56:56 +01:00
i2c-s3c2410.c i2c: constify platform_device_id 2015-05-12 18:27:48 +02:00
i2c-scmi.c i2c: delete non-required instances of include <linux/init.h> 2014-01-24 18:24:31 +01:00
i2c-sh7760.c i2c: busses: drop owner assignment from platform_drivers 2014-10-20 16:20:37 +02:00
i2c-sh_mobile.c i2c: sh_mobile: terminate DMA reads properly 2015-01-30 17:58:43 +01:00
i2c-sibyte.c i2c: remove FSF address 2014-11-07 18:35:33 +01:00
i2c-simtec.c Driver core patches for 3.19-rc1 2014-12-14 16:10:09 -08:00
i2c-sirf.c i2c: busses: drop owner assignment from platform_drivers 2014-10-20 16:20:37 +02:00
i2c-sis96x.c i2c: remove FSF address 2014-11-07 18:35:33 +01:00
i2c-sis630.c i2c: remove FSF address 2014-11-07 18:35:33 +01:00
i2c-sis5595.c i2c: remove FSF address 2014-11-07 18:35:33 +01:00
i2c-st.c i2c: st: add include for pinctrl 2015-04-23 19:35:33 +02:00
i2c-stu300.c i2c: busses: drop owner assignment from platform_drivers 2014-10-20 16:20:37 +02:00
i2c-sun6i-p2wi.c i2c: busses: drop owner assignment from platform_drivers 2014-10-20 16:20:37 +02:00
i2c-taos-evm.c i2c: remove FSF address 2014-11-07 18:35:33 +01:00
i2c-tegra.c i2c: tegra: match return type of wait_for_completion_timeout 2015-03-15 10:16:17 +01:00
i2c-tiny-usb.c i2c: i2c-tiny-usb: Remove RobotFuzz USB vendor:product ID 2014-01-13 13:56:52 +01:00
i2c-versatile.c i2c: busses: drop owner assignment from platform_drivers 2014-10-20 16:20:37 +02:00
i2c-via.c i2c: remove FSF address 2014-11-07 18:35:33 +01:00
i2c-viapro.c i2c: remove FSF address 2014-11-07 18:35:33 +01:00
i2c-viperboard.c i2c: viperboard: make use of the new infrastructure for quirks 2015-03-13 15:10:57 +01:00
i2c-wmt.c i2c: wmt: match return type of wait_for_completion_timeout 2015-03-15 10:29:53 +01:00
i2c-xgene-slimpro.c i2c: add SLIMpro I2C device driver on APM X-Gene platform 2015-05-12 22:06:05 +02:00
i2c-xiic.c i2c: xiic: Fix kerneldoc warnings 2015-05-12 15:18:27 +02:00
i2c-xlp9xx.c i2c: xlp9xx: Driver for Netlogic XLP9XX/5XX I2C controller 2015-04-10 18:59:49 +02:00
i2c-xlr.c i2c: busses: drop owner assignment from platform_drivers 2014-10-20 16:20:37 +02:00
Kconfig I2C: mediatek: Add driver for MediaTek I2C controller 2015-06-01 08:28:09 +09:00
Makefile I2C: mediatek: Add driver for MediaTek I2C controller 2015-06-01 08:28:09 +09:00
scx200_acb.c Driver core patches for 3.19-rc1 2014-12-14 16:10:09 -08:00