FAILED: patch "[PATCH] i3c: master: svc: Modify enabled_events bit 7:0 to act as IBI" failed to apply to 5.15-stable tree
Subsystems (3)
[email protected]
maintainerThe patch below does not apply to the 5.15-stable tree.
If someone wants it applied there, or to any other stable or longterm tree, then please email the backport, including the original git commit id to <[email protected]>.
To reproduce the conflict and resubmit, you may use the following commands:
git fetch https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/ linux-5.15.y
git checkout FETCH_HEAD
git cherry-pick -x 25bc99be5fe53853053ceeaa328068c49dc1e799
# <resolve conflicts, build, test, etc.>
git commit -s
git send-email --to '<[email protected]>' --in-reply-to '2024120644-desolate-caterer-afb9@gregkh' --subject-prefix 'PATCH 5.15.y' HEAD^..
Possible dependencies:
thanks,
greg k-h
------------------ original commit in Linus's tree ------------------
From 25bc99be5fe53853053ceeaa328068c49dc1e799 Mon Sep 17 00:00:00 2001
From: Frank Li <[email protected]>
Date: Fri, 1 Nov 2024 12:50:02 -0400
Subject: [PATCH] i3c: master: svc: Modify enabled_events bit 7:0 to act as IBI
enable counter
Fix issue where disabling IBI on one device disables the entire IBI interrupt. Modify bit 7:0 of enabled_events to serve as an IBI enable counter, ensuring that the system IBI interrupt is disabled only when all I3C devices have IBI disabled.
drivers/i3c/master/svc-i3c-master.c +5 -5
@@ -130,8 +130,8 @@#define SVC_I3C_PPBAUD_MAX 15#define SVC_I3C_QUICK_I2C_CLK 4170000 -#define SVC_I3C_EVENT_IBI BIT(0) -#define SVC_I3C_EVENT_HOTJOIN BIT(1) +#define SVC_I3C_EVENT_IBI GENMASK(7, 0) +#define SVC_I3C_EVENT_HOTJOIN BIT(31)struct svc_i3c_cmd {u8 addr;
@@ -214,7 +214,7 @@ struct svc_i3c_master {spinlock_t lock; } ibi;struct mutex lock; -int enabled_events; +u32 enabled_events;u32 mctrl_config; };
@@ -1688,7 +1688,7 @@ static int svc_i3c_master_enable_ibi(struct i3c_dev_desc *dev)return ret; } - master->enabled_events |=SVC_I3C_EVENT_IBI ; + master->enabled_events++;svc_i3c_master_enable_interrupts (master,SVC_I3C_MINT_SLVSTART );return i3c_master_enec_locked (m, dev->info.dyn_addr,I3C_CCC_EVENT_SIR );
@@ -1700,7 +1700,7 @@ static int svc_i3c_master_disable_ibi(struct i3c_dev_desc *dev)struct svc_i3c_master *master =to_svc_i3c_master (m);int ret; - master->enabled_events &= ~SVC_I3C_EVENT_IBI ; + master->enabled_events--;if (!master->enabled_events)svc_i3c_master_disable_interrupts (master);