]> git.hungrycats.org Git - linux/commit
net: ethernet: oa_tc6: Interrupt is active low, level triggered.
authorSelvamani Rajagopal <Selvamani.Rajagopal@onsemi.com>
Thu, 11 Jun 2026 21:55:38 +0000 (14:55 -0700)
committerJakub Kicinski <kuba@kernel.org>
Mon, 15 Jun 2026 23:32:09 +0000 (16:32 -0700)
commitb542d13fab0f556660ce5f10179fb3ae66bdb9a4
treece47c541df401183408ce079fcefc29fdf439041
parentc02fca0bef5d1081173219f276df643abdb825ab
net: ethernet: oa_tc6: Interrupt is active low, level triggered.

According OPEN Alliance 10BASET1x MAC-PHY Serial Interface
specification, interrupt is active low, level triggered.

Code used edge triggered interrupt which has the risk of losing an
interrupt on instances like when interrupt is disabled. Level
triggered interrupt won't be deasserted unless handler runs and
clear the interrupting conditions.

Interrupt handler mechanism is changed to threaded irq from
interrupt handler and kernel thread waiting on work queue.
Threaded irq mechanism is best suited for level triggered interrupt
as it disables the interrupt until handler is run in thread level,
while giving us an ability to have interrupt context handler to
signal the threaded irq handler.

Introduced a logic to disable the device interrupt on error. Error
could be due in data chunk's header and footer or SPI interface itself.
This will avoid having repeated interrupts, in case the driver couldn't
recover from the error condition with the available recovery mechanism.

Fixes: 2c6ce5354453 ("net: ethernet: oa_tc6: implement mac-phy interrupt")
Signed-off-by: Selvamani Rajagopal <Selvamani.Rajagopal@onsemi.com>
Link: https://patch.msgid.link/20260611-level-trigger-v5-1-4533a9e85ce2@onsemi.com
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
drivers/net/ethernet/oa_tc6.c