linux/drivers/i2c/busses
Alexander Monakov 9f4659ba38 i2c: designware: refactor low-level enable/disable
Low-level controller enable function __i2c_dw_enable is overloaded to
also handle disabling. What's worse, even though the documentation
requires polling the IC_ENABLE_STATUS register when disabling, this
is not done: polling needs to be requested specifically by calling
__i2c_dw_enable_and_wait, which can also poll on enabling, but that
doesn't work if the IC_ENABLE_STATUS register is not implemented.
This is quite confusing if not in fact backwards.

Especially since the documentation says that disabling should be
followed by polling, the driver should be using a separate function
where it does one-shot disables to make the optimization stand out.

This refactors the two functions so that requested status is given
in the name rather than in a boolean argument. Specifically:

 - __i2c_dw_enable: enable without polling (in accordance with docs)
 - __i2c_dw_disable: disable and do poll (also as suggested by docs)
 - __i2c_dw_disable_nowait: disable without polling (Linux-specific)

No functional change.

Signed-off-by: Alexander Monakov <amonakov@ispras.ru>
Acked-by: Jarkko Nikula <jarkko.nikula@linux.intel.com>
[wsa: fixed blank lines in header file]
Signed-off-by: Wolfram Sang <wsa@the-dreams.de>
2018-05-15 10:42:19 +02:00
..
i2c-acorn.c i2c: acorn: remove outdated path from file header 2018-01-18 00:08:20 +01:00
i2c-ali15x3.c Annotate hardware config module parameters in drivers/i2c/ 2017-04-20 12:02:32 +01:00
i2c-ali1535.c
i2c-ali1563.c
i2c-altera.c i2c: altera: Add Altera I2C Controller driver 2017-09-13 23:37:16 +02:00
i2c-amd756-s4882.c
i2c-amd756.c
i2c-amd8111.c
i2c-aspeed.c i2c: aspeed: Deassert reset in probe 2017-11-06 19:15:31 +01:00
i2c-at91.c i2c: at91: Read all available bytes at once 2018-04-30 10:39:28 +02:00
i2c-au1550.c
i2c-axxia.c i2c: axxia: enable clock before calling clk_get_rate() 2018-05-08 23:13:19 +02:00
i2c-bcm2835.c i2c: bcm2835: Set up the rising/falling edge delays 2018-02-22 12:11:07 +01:00
i2c-bcm-iproc.c i2c: use dev_get_drvdata() to get private data in suspend/resume hooks 2017-07-31 17:03:32 +02:00
i2c-bcm-kona.c
i2c-brcmstb.c
i2c-cadence.c i2c: use dev_get_drvdata() to get private data in suspend/resume hooks 2017-07-31 17:03:32 +02:00
i2c-cbus-gpio.c
i2c-cht-wc.c i2c-cht-wc: constify platform_device_id 2017-12-07 12:00:35 +01:00
i2c-cpm.c i2c: busses: make i2c_adapter_quirks const 2017-08-29 22:32:47 +02:00
i2c-cros-ec-tunnel.c
i2c-davinci.c i2c: davinci: fix the cpufreq transition 2018-01-24 07:14:59 +01:00
i2c-designware-baytrail.c i2c: designware-baytrail: fix potential null pointer dereference on dev 2017-04-19 21:00:13 +02:00
i2c-designware-common.c i2c: designware: refactor low-level enable/disable 2018-05-15 10:42:19 +02:00
i2c-designware-core.h i2c: designware: refactor low-level enable/disable 2018-05-15 10:42:19 +02:00
i2c-designware-master.c i2c: designware: refactor low-level enable/disable 2018-05-15 10:42:19 +02:00
i2c-designware-pcidrv.c i2c: designware: MASTER mode as separated driver 2017-06-19 18:24:59 +02:00
i2c-designware-platdrv.c Merge branch 'i2c/for-4.16' of git://git.kernel.org/pub/scm/linux/kernel/git/wsa/linux 2018-02-04 10:57:43 -08:00
i2c-designware-slave.c i2c: designware: refactor low-level enable/disable 2018-05-15 10:42:19 +02:00
i2c-digicolor.c
i2c-diolan-u2c.c
i2c-dln2.c
i2c-efm32.c
i2c-eg20t.c
i2c-elektor.c Annotate hardware config module parameters in drivers/i2c/ 2017-04-20 12:02:32 +01:00
i2c-emev2.c i2c: emev2: Handle return value of clk_prepare_enable 2017-06-19 22:18:55 +02:00
i2c-exynos5.c i2c: exynos5: rework HSI2C_MASTER_ST_LOSE state handling 2018-02-27 13:47:28 +01:00
i2c-gpio.c i2c: gpio: Enable working over slow can_sleep GPIOs 2018-01-04 01:02:55 +01:00
i2c-highlander.c
i2c-hix5hd2.c i2c: busses: remove superfluous ignoring of children for RPM 2018-05-08 23:19:02 +02:00
i2c-hydra.c
i2c-i801.c i2c: i801: Don't restore config registers on runtime PM 2018-04-30 10:39:28 +02:00
i2c-ibm_iic.c
i2c-ibm_iic.h
i2c-img-scb.c i2c: img-scb: Add runtime PM 2017-10-28 14:03:45 +02:00
i2c-imx-lpi2c.c i2c: imx-lpi2c: add runtime pm support 2018-01-24 07:20:30 +01:00
i2c-imx.c i2c: imx: avoid taking clk_prepare mutex in PM callbacks 2018-04-03 15:29:28 +02:00
i2c-iop3xx.c
i2c-iop3xx.h
i2c-isch.c
i2c-ismt.c i2c: ismt: 16-byte align the DMA buffer address 2018-01-15 21:02:43 +01:00
i2c-jz4780.c
i2c-kempld.c i2c: busses: make i2c_adapter const 2017-08-29 22:26:08 +02:00
i2c-lpc2k.c i2c: use dev_get_drvdata() to get private data in suspend/resume hooks 2017-07-31 17:03:32 +02:00
i2c-meson.c i2c: meson: update doc description to fix build warnings 2018-01-26 18:33:44 +01:00
i2c-mlxcpld.c i2c: mlxcpld: Allow configurable adapter id for mlxcpld 2018-04-30 10:39:29 +02:00
i2c-mpc.c i2c: mpc: always determine I2C clock prescaler at runtime 2018-01-15 19:19:55 +01:00
i2c-mt65xx.c i2c: mediatek: use of_device_get_match_data() 2018-04-30 10:39:28 +02:00
i2c-mv64xxx.c i2c: mv64xxx: Apply errata delay only in standard mode 2018-03-17 21:20:04 +01:00
i2c-mxs.c i2c: mxs: use true and false for boolean values 2018-01-26 18:34:50 +01:00
i2c-nforce2-s4985.c
i2c-nforce2.c
i2c-nomadik.c i2c: busses: remove superfluous ignoring of children for RPM 2018-05-08 23:19:02 +02:00
i2c-ocores.c i2c: busses: make i2c_adapter const 2017-08-29 22:26:08 +02:00
i2c-octeon-core.c i2c: octeon: Prevent error message on bus error 2018-03-02 11:11:15 +01:00
i2c-octeon-core.h i2c: octeon: Prevent error message on bus error 2018-03-02 11:11:15 +01:00
i2c-octeon-platdrv.c i2c: busses: make i2c_adapter const 2017-08-29 22:26:08 +02:00
i2c-omap.c i2c: omap: Trigger bus recovery in lockup case 2017-10-30 15:18:31 +01:00
i2c-opal.c i2c: busses: make i2c_adapter_quirks const 2017-08-29 22:32:47 +02:00
i2c-parport-light.c i2c: i2c-smbus: Use threaded irq for smbalert 2017-10-28 23:42:26 +02:00
i2c-parport.c i2c: i2c-smbus: Use threaded irq for smbalert 2017-10-28 23:42:26 +02:00
i2c-parport.h
i2c-pasemi.c
i2c-pca-isa.c Annotate hardware config module parameters in drivers/i2c/ 2017-04-20 12:02:32 +01:00
i2c-pca-platform.c i2c: pca-platform: use device_property_read_u32 2018-03-24 13:26:04 +01:00
i2c-piix4.c i2c: piix4: Use request_muxed_region 2018-03-02 11:17:23 +01:00
i2c-pmcmsp.c i2c: pmcmsp: fix error return from master_xfer 2018-05-15 09:31:19 +02:00
i2c-pnx.c i2c/busses: Convert timers to use timer_setup() 2017-10-27 15:53:30 +02:00
i2c-powermac.c i2c: busses: make i2c_adapter_quirks const 2017-08-29 22:32:47 +02:00
i2c-puv3.c i2c: busses: make i2c_algorithm const 2017-08-29 22:20:20 +02:00
i2c-pxa-pci.c ARM: pxa: move header file out of I2C realm 2017-11-28 22:49:30 +01:00
i2c-pxa.c ARM: pxa: move header file out of I2C realm 2017-11-28 22:49:30 +01:00
i2c-qup.c i2c: qup: reorganization of driver code to remove polling for qup v2 2018-03-24 13:21:02 +01:00
i2c-rcar.c i2c: rcar: enhance comment to avoid regressions 2018-04-30 11:14:35 +02:00
i2c-riic.c i2c: riic: remove clock and frequency restrictions 2017-10-27 21:39:29 +02:00
i2c-rk3x.c i2c: rk3x: add proper kerneldoc header 2018-01-18 00:34:09 +01:00
i2c-robotfuzz-osif.c
i2c-s3c2410.c i2c: s3c2410: Remove support for Exynos5440 2018-04-30 10:39:28 +02:00
i2c-scmi.c i2c: scmi: Use standard device message logging functions 2018-03-02 11:18:55 +01:00
i2c-sh7760.c
i2c-sh_mobile.c i2c: busses: remove superfluous ignoring of children for RPM 2018-05-08 23:19:02 +02:00
i2c-sibyte.c
i2c-simtec.c i2c: simtec: use release_mem_region instead of release_resource 2017-08-14 21:39:21 +02:00
i2c-sirf.c i2c: busses: i2c-sirf: Fix spelling: "formular" -> "formula". 2018-02-22 12:12:35 +01:00
i2c-sis96x.c
i2c-sis630.c
i2c-sis5595.c Annotate hardware config module parameters in drivers/i2c/ 2017-04-20 12:02:32 +01:00
i2c-sprd.c i2c: sprd: Fix the i2c count issue 2018-04-27 14:12:43 +02:00
i2c-st.c i2c: use dev_get_drvdata() to get private data in suspend/resume hooks 2017-07-31 17:03:32 +02:00
i2c-stm32.c i2c: i2c-stm32: Add generic DMA API 2018-04-30 10:39:27 +02:00
i2c-stm32.h i2c: i2c-stm32: Add generic DMA API 2018-04-30 10:39:27 +02:00
i2c-stm32f4.c i2c-stm32f4: remove redundant initialization of pointer reg 2018-02-27 13:51:05 +01:00
i2c-stm32f7.c i2c: i2c-stm32f7: Implement I2C release mechanism 2018-04-30 10:39:28 +02:00
i2c-stu300.c
i2c-sun6i-p2wi.c i2c: sun6i-pw2i: explicitly request exclusive reset control 2017-08-14 21:40:21 +02:00
i2c-synquacer.c i2c: add support for Socionext SynQuacer I2C controller 2018-04-04 20:33:03 +02:00
i2c-taos-evm.c i2c: taos-evm: Remove duplicate NULL check 2017-11-02 00:01:21 +01:00
i2c-tegra-bpmp.c i2c: tegra: fix spelling mistake: "contoller" -> "controller" 2017-04-21 14:04:57 +02:00
i2c-tegra.c i2c: busses: make i2c_adapter_quirks const 2017-08-29 22:32:47 +02:00
i2c-thunderx-pcidrv.c i2c: thunderx: Remove duplicate NULL check 2017-11-02 00:01:31 +01:00
i2c-tiny-usb.c i2c: i2c-tiny-usb: fix buffer not being DMA capable 2017-05-22 10:33:42 +02:00
i2c-uniphier-f.c i2c: uniphier-f: add suspend / resume support 2017-08-12 15:38:23 +02:00
i2c-uniphier.c i2c: uniphier: add suspend / resume support 2017-08-12 15:38:13 +02:00
i2c-versatile.c i2c: versatile: Make i2c_algo_bit_data const 2017-08-29 22:34:12 +02:00
i2c-via.c
i2c-viapro.c Annotate hardware config module parameters in drivers/i2c/ 2017-04-20 12:02:32 +01:00
i2c-viperboard.c i2c: viperboard: return message count on master_xfer success 2018-05-15 09:31:26 +02:00
i2c-wmt.c
i2c-xgene-slimpro.c i2c: xgene-slimpro: Support v2 2017-11-01 23:54:53 +01:00
i2c-xiic.c i2c: xiic: Make suspend function names consistent 2018-03-17 21:15:12 +01:00
i2c-xlp9xx.c i2c: xlp9xx: Handle NACK on DATA properly 2018-03-17 21:57:44 +01:00
i2c-xlr.c
i2c-zx2967.c i2c: zx2967: always use the same device when printing errors 2017-06-27 23:21:00 +02:00
Kconfig i2c: i2c-stm32f7: Add slave support 2018-04-30 10:39:27 +02:00
Makefile i2c: i2c-stm32f7: Add DMA support 2018-04-30 10:39:28 +02:00
scx200_acb.c Annotate hardware config module parameters in drivers/i2c/ 2017-04-20 12:02:32 +01:00