linux/drivers/i2c
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
..
algos i2c: algo-bit: add support for I2C_M_STOP 2017-06-23 20:45:43 +02:00
busses i2c: i2c-smbus: Use threaded irq for smbalert 2017-10-28 23:42:26 +02:00
muxes 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-boardinfo.c i2c: allow attaching IRQ resources to i2c_board_info 2017-04-01 09:36:19 -07:00
i2c-core-acpi.c i2c: core: Allow empty id_table in ACPI case as well 2017-07-31 15:50:33 +02:00
i2c-core-base.c i2c: core: Make comment about I2C table requirement to reflect the code 2017-08-14 21:33:46 +02:00
i2c-core-of.c i2c: Convert to using %pOF instead of full_name 2017-07-31 17:19:35 +02:00
i2c-core-slave.c i2c: break out slave support into separate file 2017-05-31 21:01:03 +02:00
i2c-core-smbus.c i2c: break out smbus support into separate file 2017-05-31 21:01:03 +02:00
i2c-core.h i2c: core: Allow empty id_table in ACPI case as well 2017-07-31 15:50:33 +02:00
i2c-dev.c i2c: fix kernel memory disclosure in dev interface 2017-01-12 20:06:10 +01:00
i2c-mux.c i2c: mux: only print failure message on error 2017-05-15 18:49:11 +02:00
i2c-slave-eeprom.c i2c: Drop owner assignment from i2c_driver 2015-08-10 08:37:35 +02:00
i2c-smbus.c i2c: i2c-smbus: Use threaded irq for smbalert 2017-10-28 23:42:26 +02:00
i2c-stub.c i2c: stub: fix build warning regression 2017-06-15 23:22:11 +02:00
Kconfig Merge branch 'i2c/for-4.10' of git://git.kernel.org/pub/scm/linux/kernel/git/wsa/linux 2016-12-15 12:56:35 -08:00
Makefile i2c: break out ACPI support into separate file 2017-05-31 21:01:04 +02:00