From d7780d73607f10d3e5d43537c46beb679ae6f6dc Mon Sep 17 00:00:00 2001 From: lean Date: Thu, 7 Apr 2022 18:38:21 +0800 Subject: [PATCH] mhi: use irq_flags if controller driver configures it --- .../hack-5.10/994-mhi-use-irq-flags.patch | 47 +++++++++++++++++++ 1 file changed, 47 insertions(+) create mode 100644 target/linux/generic/hack-5.10/994-mhi-use-irq-flags.patch diff --git a/target/linux/generic/hack-5.10/994-mhi-use-irq-flags.patch b/target/linux/generic/hack-5.10/994-mhi-use-irq-flags.patch new file mode 100644 index 000000000..07cbf4434 --- /dev/null +++ b/target/linux/generic/hack-5.10/994-mhi-use-irq-flags.patch @@ -0,0 +1,47 @@ +--- a/drivers/bus/mhi/core/init.c ++++ b/drivers/bus/mhi/core/init.c +@@ -151,12 +151,17 @@ int mhi_init_irq_setup(struct mhi_controller *mhi_cntrl) + { + struct mhi_event *mhi_event = mhi_cntrl->mhi_event; + struct device *dev = &mhi_cntrl->mhi_dev->dev; ++ unsigned long irq_flags = IRQF_SHARED | IRQF_NO_SUSPEND; + int i, ret; + ++ /* if controller driver has set irq_flags, use it */ ++ if (mhi_cntrl->irq_flags) ++ irq_flags = mhi_cntrl->irq_flags; ++ + /* Setup BHI_INTVEC IRQ */ + ret = request_threaded_irq(mhi_cntrl->irq[0], mhi_intvec_handler, + mhi_intvec_threaded_handler, +- IRQF_SHARED | IRQF_NO_SUSPEND, ++ irq_flags, + "bhi", mhi_cntrl); + if (ret) + return ret; +@@ -174,7 +179,7 @@ int mhi_init_irq_setup(struct mhi_controller *mhi_cntrl) + + ret = request_irq(mhi_cntrl->irq[mhi_event->irq], + mhi_irq_handler, +- IRQF_SHARED | IRQF_NO_SUSPEND, ++ irq_flags, + "mhi", mhi_event); + if (ret) { + dev_err(dev, "Error requesting irq:%d for ev:%d\n", +--- a/include/linux/mhi.h ++++ b/include/linux/mhi.h +@@ -353,6 +353,7 @@ struct mhi_controller_config { + * @fbc_download: MHI host needs to do complete image transfer (optional) + * @pre_init: MHI host needs to do pre-initialization before power up + * @wake_set: Device wakeup set flag ++ * @irq_flags: irq flags passed to request_irq (optional) + * + * Fields marked as (required) need to be populated by the controller driver + * before calling mhi_register_controller(). For the fields marked as (optional) +@@ -444,6 +445,7 @@ struct mhi_controller { + bool fbc_download; + bool pre_init; + bool wake_set; ++ unsigned long irq_flags; + }; + \ No newline at end of file