linux/drivers/i2c/busses
Phil Reid 9b9f2b8bc2 i2c: i2c-smbus: Use threaded irq for smbalert
Prior to this commit the smbalert_irq was handling in the hard irq
context. This change switch to using a thread irq which avoids the need
for the work thread. Using threaded irq also removes the need for the
edge_triggered flag as the enabling / disabling of the hard irq for level
triggered interrupts will be handled by the irq core.

Without this change have an irq connected to something like an i2c gpio
resulted in a null ptr deferences. Specifically handle_nested_irq calls
the threaded irq handler.

There are currently 3 in tree drivers affected by this change.

i2c-parport driver calls i2c_handle_smbus_alert in a hard irq context.
This driver use edge trigger interrupts which skip the enable / disable
calls. But it still need to handle the smbus transaction on a thread. So
the work thread is kept for this driver.

i2c-parport-light & i2c-thunderx-pcidrv provide the irq number in the
setup which will result in the thread irq being used.

i2c-parport-light is edge trigger so the enable / disable call was
skipped as well.

i2c-thunderx-pcidrv is getting the edge / level trigger setting from of
data and was setting the flag as required. However the irq core should
handle this automatically.

Signed-off-by: Phil Reid <preid@electromag.com.au>
Reviewed-by: Benjamin Tissoires <benjamin.tissoires@redhat.com>
Signed-off-by: Wolfram Sang <wsa@the-dreams.de>
2017-10-28 23:42:26 +02:00
..
i2c-acorn.c
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: don't print error when adding adapter fails 2016-08-22 08:19:55 +02:00
i2c-amd8111.c
i2c-aspeed.c Merge branch 'i2c/for-4.14' of git://git.kernel.org/pub/scm/linux/kernel/git/wsa/linux 2017-09-09 14:18:40 -07:00
i2c-at91.c i2c: busses: make i2c_adapter_quirks const 2017-08-29 22:32:47 +02:00
i2c-au1550.c i2c: au1550: Convert to devm_kzalloc and devm_ioremap_resource 2015-10-23 23:31:11 +02:00
i2c-axxia.c i2c: constify i2c_adapter_quirks structures 2016-11-18 02:05:03 +01:00
i2c-bcm2835.c i2c: bcm2835: Avoid possible NULL ptr dereference 2017-02-20 19:19:54 +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 Merge branch 'i2c/for-4.9' of git://git.kernel.org/pub/scm/linux/kernel/git/wsa/linux 2016-10-07 14:12:21 -07:00
i2c-bfin-twi.c blackfin: merge the two TWI header files 2017-08-27 15:37:18 +02:00
i2c-brcmstb.c i2c: brcmstb: Fix START and STOP conditions 2017-03-08 18:00:49 +01:00
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: make cht_wc_i2c_adap_driver static 2017-08-29 12:09:06 +02: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: i2c-cros-ec-tunnel: Reduce logging noise 2017-01-28 22:16:38 +01:00
i2c-davinci.c i2c: davinci: Preserve return value of devm_clk_get 2017-08-27 15:34:09 +02: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: add SLAVE mode functions 2017-06-27 23:36:28 +02:00
i2c-designware-core.h i2c: designware: Let slave adapter support be optional 2017-07-04 16:12:45 +02:00
i2c-designware-master.c i2c: designware: Make HW init functions static 2017-07-04 16:11:02 +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.14' of git://git.kernel.org/pub/scm/linux/kernel/git/wsa/linux 2017-09-09 14:18:40 -07:00
i2c-designware-slave.c Merge branch 'i2c/for-4.14' of git://git.kernel.org/pub/scm/linux/kernel/git/wsa/linux 2017-09-09 14:18:40 -07:00
i2c-digicolor.c i2c: digicolor: use clk_disable_unprepare instead of clk_unprepare 2016-11-18 01:48:01 +01:00
i2c-diolan-u2c.c i2c: don't print error when adding adapter fails 2016-08-22 08:19:55 +02:00
i2c-dln2.c i2c: constify i2c_adapter_quirks structures 2016-11-18 02:05:03 +01:00
i2c-efm32.c i2c: don't print error when adding adapter fails 2016-08-22 08:19:55 +02:00
i2c-eg20t.c i2c: busses: constify i2c_algorithm structures 2017-02-09 17:06:52 +01:00
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: use dev_get_drvdata() to get private data in suspend/resume hooks 2017-07-31 17:03:32 +02:00
i2c-gpio.c i2c: Convert to using %pOF instead of full_name 2017-07-31 17:19:35 +02:00
i2c-highlander.c
i2c-hix5hd2.c i2c: use dev_get_drvdata() to get private data in suspend/resume hooks 2017-07-31 17:03:32 +02:00
i2c-hydra.c
i2c-i801.c i2c: i801: Add support for Intel Cedar Fork 2017-10-05 14:44:56 +02:00
i2c-ibm_iic.c sched/headers: Prepare to move signal wakeup & sigpending methods from <linux/sched.h> into <linux/sched/signal.h> 2017-03-02 08:42:32 +01:00
i2c-ibm_iic.h
i2c-img-scb.c Update James Hogan's email address 2017-10-04 17:11:53 -07:00
i2c-imx-lpi2c.c Merge branch 'i2c/for-4.11' of git://git.kernel.org/pub/scm/linux/kernel/git/wsa/linux 2017-02-25 14:21:18 -08:00
i2c-imx.c i2c: imx: fix misleading bus recovery debug message 2017-10-13 21:05:55 +02:00
i2c-iop3xx.c i2c: iop3xx: use new 8 bit address helper function 2016-04-11 18:54:59 +02:00
i2c-iop3xx.h
i2c-isch.c i2c: don't print error when adding adapter fails 2016-08-22 08:19:55 +02:00
i2c-ismt.c i2c: ismt: Separate I2C block read from SMBus block read 2017-10-13 20:31:03 +02:00
i2c-jz4780.c i2c: jz4780: Fix module autoload 2016-10-25 11:48:58 +02:00
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: improve and simplify interrupt handler 2017-03-30 17:31:29 +02:00
i2c-mlxcpld.c i2c: busses: make i2c_adapter_quirks const 2017-08-29 22:32:47 +02:00
i2c-mpc.c sched/headers: Prepare to move signal wakeup & sigpending methods from <linux/sched.h> into <linux/sched/signal.h> 2017-03-02 08:42:32 +01:00
i2c-mt65xx.c i2c: mediatek: Add i2c compatible for MediaTek MT7622 2017-08-27 15:31:00 +02:00
i2c-mv64xxx.c i2c: mv64xxx: explicitly request exclusive reset control 2017-08-14 21:40:07 +02:00
i2c-mxs.c i2c: mxs: change error printing to debug for mxs_i2c_pio_wait_xfer_end 2017-06-02 22:57:14 +02:00
i2c-nforce2-s4985.c
i2c-nforce2.c i2c: busses: constify i2c_algorithm structures 2017-02-09 17:06:52 +01:00
i2c-nomadik.c i2c: nomadik: constify amba_id 2017-08-29 22:35:14 +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: thunderx: Limit register access retries 2016-12-17 19:27:44 +01:00
i2c-octeon-core.h i2c: thunderx: Replace pci_enable_msix() 2017-02-23 13:03:56 +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: Fix error handling for clk_get() 2017-10-18 00:19:26 +02: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: parport: Add VCT-jig adapter 2015-08-10 08:37:34 +02:00
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: propagate error from i2c_pca_add_numbered_bus 2017-07-04 16:03:42 +02:00
i2c-piix4.c i2c: piix4: Disable completely the IMC during SMBUS_BLOCK_DATA 2017-10-13 21:05:56 +02:00
i2c-pmcmsp.c i2c: constify internal structures 2017-08-12 13:25:17 +02:00
i2c-pnx.c i2c: busses: make i2c_algorithm const 2017-08-29 22:20:20 +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 i2c: i2c-pxa-pci; make explicitly non-modular 2016-11-18 01:44:38 +01:00
i2c-pxa.c i2c: use dev_get_drvdata() to get private data in suspend/resume hooks 2017-07-31 17:03:32 +02:00
i2c-qup.c i2c: busses: make i2c_adapter_quirks const 2017-08-29 22:32:47 +02:00
i2c-rcar.c i2c: rcar: avoid unused ret variable 2017-08-17 21:52:36 +02:00
i2c-riic.c i2c: riic: fix restart condition 2017-03-08 17:54:59 +01:00
i2c-rk3x.c i2c: rk3x: add support for rv1108 2017-08-12 16:39:47 +02:00
i2c-robotfuzz-osif.c i2c: busses: constify i2c_algorithm structures 2017-02-09 17:06:52 +01:00
i2c-s3c2410.c i2c: use dev_get_drvdata() to get private data in suspend/resume hooks 2017-07-31 17:03:32 +02:00
i2c-scmi.c i2c: i2c-scmi: add a MS HID 2017-04-16 21:48:06 +02:00
i2c-sh7760.c i2c: don't print error when adding adapter fails 2016-08-22 08:19:55 +02:00
i2c-sh_mobile.c i2c: sh_mobile: avoid unused ret variable 2017-08-17 21:52:57 +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: use dev_get_drvdata() to get private data in suspend/resume hooks 2017-07-31 17:03:32 +02: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: ensure termination of *_device_id tables 2017-10-05 14:44:57 +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.h i2c: i2c-stm32f4: use generic definition of speed enum 2017-09-14 17:34:29 +02:00
i2c-stm32f4.c i2c: i2c-stm32f4: use generic definition of speed enum 2017-09-14 17:34:29 +02:00
i2c-stm32f7.c i2c: i2c-stm32f7: make structure stm32f7_setup static const 2017-10-05 14:44:57 +02:00
i2c-stu300.c i2c: don't print error when adding adapter fails 2016-08-22 08:19:55 +02:00
i2c-sun6i-p2wi.c i2c: sun6i-pw2i: explicitly request exclusive reset control 2017-08-14 21:40:21 +02:00
i2c-taos-evm.c i2c: taos-evm: constify serio_device_id 2017-08-17 17:36:42 +02: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: i2c-smbus: Use threaded irq for smbalert 2017-10-28 23:42:26 +02: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: constify i2c_adapter_quirks structures 2016-11-18 02:05:03 +01:00
i2c-wmt.c i2c: don't print error when adding adapter fails 2016-08-22 08:19:55 +02:00
i2c-xgene-slimpro.c i2c: xgene-slimpro: include linux/io.h for memremap 2017-06-18 14:59:45 +02:00
i2c-xiic.c i2c: busses: make i2c_adapter const 2017-08-29 22:26:08 +02:00
i2c-xlp9xx.c i2c: xlp9xx: Enable HWMON class probing for xlp9xx 2017-06-19 16:22:54 +02:00
i2c-xlr.c i2c: busses: constify i2c_algorithm structures 2017-02-09 17:06:52 +01:00
i2c-zx2967.c i2c: zx2967: always use the same device when printing errors 2017-06-27 23:21:00 +02:00
Kconfig i2c: i801: Add support for Intel Cedar Fork 2017-10-05 14:44:56 +02:00
Makefile i2c: i2c-stm32f7: add driver 2017-09-14 17:34:43 +02:00
scx200_acb.c Annotate hardware config module parameters in drivers/i2c/ 2017-04-20 12:02:32 +01:00