From: Roger Quadros <rogerq@ti.com> To: tony@atomide.com Cc: robh+dt@kernel.org, bcousson@baylibre.com, ssantosh@kernel.org, ohad@wizery.com, bjorn.andersson@linaro.org, s-anna@ti.com, nsekhar@ti.com, t-kristo@ti.com, nsaulnier@ti.com, jreeder@ti.com, m-karicheri2@ti.com, woods.technical@gmail.com, linux-omap@vger.kernel.org, linux-remoteproc@vger.kernel.org, linux-kernel@vger.kernel.org, devicetree@vger.kernel.org, rogerq@ti.com Subject: [PATCH 10/17] soc: ti: pruss_intc: Add API to trigger a PRU sysevent Date: Thu, 22 Nov 2018 13:39:06 +0200 [thread overview] Message-ID: <1542886753-17625-11-git-send-email-rogerq@ti.com> (raw) In-Reply-To: <1542886753-17625-1-git-send-email-rogerq@ti.com> From: Suman Anna <s-anna@ti.com> The PRUSS INTC can generate an interrupt to various processor subsystems on the SoC through a set of 64 possible PRU system events. These system events can be used by PRU client drivers or applications for event notifications/signalling between PRUs and MPU or other processors. A new API, pruss_intc_trigger() is provided to MPU-side PRU client drivers/applications to be able to trigger an event/interrupt using IRQ numbers provided by the PRUSS-INTC irqdomain chip. Signed-off-by: Andrew F. Davis <afd@ti.com> Signed-off-by: Suman Anna <s-anna@ti.com> --- drivers/soc/ti/pruss_intc.c | 31 +++++++++++++++++++++++++++++++ include/linux/pruss.h | 7 +++++++ 2 files changed, 38 insertions(+) diff --git a/drivers/soc/ti/pruss_intc.c b/drivers/soc/ti/pruss_intc.c index df6b83b..6158b63 100644 --- a/drivers/soc/ti/pruss_intc.c +++ b/drivers/soc/ti/pruss_intc.c @@ -395,6 +395,37 @@ static void pruss_intc_irq_relres(struct irq_data *data) module_put(THIS_MODULE); } +/** + * pruss_intc_trigger() - trigger a PRU system event + * @irq: linux IRQ number associated with a PRU system event + * + * Trigger an interrupt by signalling a specific PRU system event. + * This can be used by PRUSS client users to raise/send an event to + * a PRU or any other core that is listening on the host interrupt + * mapped to that specific PRU system event. The @irq variable is the + * Linux IRQ number associated with a specific PRU system event that + * a client user/application uses. The interrupt mappings for this is + * provided by the PRUSS INTC irqchip instance. + * + * Returns 0 on success, or an error value upon failure. + */ +int pruss_intc_trigger(unsigned int irq) +{ + struct irq_desc *desc; + + if (irq <= 0) + return -EINVAL; + + desc = irq_to_desc(irq); + if (!desc) + return -EINVAL; + + pruss_intc_irq_retrigger(&desc->irq_data); + + return 0; +} +EXPORT_SYMBOL_GPL(pruss_intc_trigger); + static int pruss_intc_irq_domain_map(struct irq_domain *d, unsigned int virq, irq_hw_number_t hw) { diff --git a/include/linux/pruss.h b/include/linux/pruss.h index 198ae25..768b698 100644 --- a/include/linux/pruss.h +++ b/include/linux/pruss.h @@ -41,6 +41,8 @@ int pruss_request_mem_region(struct pruss *pruss, enum pruss_mem mem_id, int pruss_release_mem_region(struct pruss *pruss, struct pruss_mem_region *region); +int pruss_intc_trigger(unsigned int irq); + #else static inline int pruss_request_mem_region(struct pruss *pruss, @@ -56,6 +58,11 @@ static inline int pruss_release_mem_region(struct pruss *pruss, return -ENOTSUPP; } +static inline int pruss_intc_trigger(unsigned int irq) +{ + return -ENOTSUPP; +} + #endif /* CONFIG_TI_PRUSS */ #endif /* __LINUX_PRUSS_H */ -- Texas Instruments Finland Oy, Porkkalankatu 22, 00180 Helsinki. Y-tunnus/Business ID: 0615521-4. Kotipaikka/Domicile: Helsinki
WARNING: multiple messages have this Message-ID (diff)
From: Roger Quadros <rogerq@ti.com> To: <tony@atomide.com> Cc: <robh+dt@kernel.org>, <bcousson@baylibre.com>, <ssantosh@kernel.org>, <ohad@wizery.com>, <bjorn.andersson@linaro.org>, <s-anna@ti.com>, <nsekhar@ti.com>, <t-kristo@ti.com>, <nsaulnier@ti.com>, <jreeder@ti.com>, <m-karicheri2@ti.com>, <woods.technical@gmail.com>, <linux-omap@vger.kernel.org>, <linux-remoteproc@vger.kernel.org>, <linux-kernel@vger.kernel.org>, <devicetree@vger.kernel.org>, <rogerq@ti.com> Subject: [PATCH 10/17] soc: ti: pruss_intc: Add API to trigger a PRU sysevent Date: Thu, 22 Nov 2018 13:39:06 +0200 [thread overview] Message-ID: <1542886753-17625-11-git-send-email-rogerq@ti.com> (raw) In-Reply-To: <1542886753-17625-1-git-send-email-rogerq@ti.com> From: Suman Anna <s-anna@ti.com> The PRUSS INTC can generate an interrupt to various processor subsystems on the SoC through a set of 64 possible PRU system events. These system events can be used by PRU client drivers or applications for event notifications/signalling between PRUs and MPU or other processors. A new API, pruss_intc_trigger() is provided to MPU-side PRU client drivers/applications to be able to trigger an event/interrupt using IRQ numbers provided by the PRUSS-INTC irqdomain chip. Signed-off-by: Andrew F. Davis <afd@ti.com> Signed-off-by: Suman Anna <s-anna@ti.com> --- drivers/soc/ti/pruss_intc.c | 31 +++++++++++++++++++++++++++++++ include/linux/pruss.h | 7 +++++++ 2 files changed, 38 insertions(+) diff --git a/drivers/soc/ti/pruss_intc.c b/drivers/soc/ti/pruss_intc.c index df6b83b..6158b63 100644 --- a/drivers/soc/ti/pruss_intc.c +++ b/drivers/soc/ti/pruss_intc.c @@ -395,6 +395,37 @@ static void pruss_intc_irq_relres(struct irq_data *data) module_put(THIS_MODULE); } +/** + * pruss_intc_trigger() - trigger a PRU system event + * @irq: linux IRQ number associated with a PRU system event + * + * Trigger an interrupt by signalling a specific PRU system event. + * This can be used by PRUSS client users to raise/send an event to + * a PRU or any other core that is listening on the host interrupt + * mapped to that specific PRU system event. The @irq variable is the + * Linux IRQ number associated with a specific PRU system event that + * a client user/application uses. The interrupt mappings for this is + * provided by the PRUSS INTC irqchip instance. + * + * Returns 0 on success, or an error value upon failure. + */ +int pruss_intc_trigger(unsigned int irq) +{ + struct irq_desc *desc; + + if (irq <= 0) + return -EINVAL; + + desc = irq_to_desc(irq); + if (!desc) + return -EINVAL; + + pruss_intc_irq_retrigger(&desc->irq_data); + + return 0; +} +EXPORT_SYMBOL_GPL(pruss_intc_trigger); + static int pruss_intc_irq_domain_map(struct irq_domain *d, unsigned int virq, irq_hw_number_t hw) { diff --git a/include/linux/pruss.h b/include/linux/pruss.h index 198ae25..768b698 100644 --- a/include/linux/pruss.h +++ b/include/linux/pruss.h @@ -41,6 +41,8 @@ int pruss_request_mem_region(struct pruss *pruss, enum pruss_mem mem_id, int pruss_release_mem_region(struct pruss *pruss, struct pruss_mem_region *region); +int pruss_intc_trigger(unsigned int irq); + #else static inline int pruss_request_mem_region(struct pruss *pruss, @@ -56,6 +58,11 @@ static inline int pruss_release_mem_region(struct pruss *pruss, return -ENOTSUPP; } +static inline int pruss_intc_trigger(unsigned int irq) +{ + return -ENOTSUPP; +} + #endif /* CONFIG_TI_PRUSS */ #endif /* __LINUX_PRUSS_H */ -- Texas Instruments Finland Oy, Porkkalankatu 22, 00180 Helsinki. Y-tunnus/Business ID: 0615521-4. Kotipaikka/Domicile: Helsinki
next prev parent reply other threads:[~2018-11-22 11:39 UTC|newest] Thread overview: 84+ messages / expand[flat|nested] mbox.gz Atom feed top 2018-11-22 11:38 [PATCH 00/17] Add support for TI PRU ICSS Roger Quadros 2018-11-22 11:38 ` Roger Quadros 2018-11-22 11:38 ` [PATCH 01/17] dt-bindings: remoteproc: Add TI PRUSS bindings Roger Quadros 2018-11-22 11:38 ` Roger Quadros 2018-11-23 16:24 ` Tony Lindgren 2018-11-26 7:47 ` Roger Quadros 2018-11-26 7:47 ` Roger Quadros 2018-11-26 19:35 ` Tony Lindgren 2018-11-26 21:14 ` David Lechner 2018-11-26 23:41 ` Tony Lindgren 2018-11-27 15:15 ` Roger Quadros 2018-11-27 15:15 ` Roger Quadros 2018-11-28 15:42 ` David Lechner 2018-11-29 8:49 ` Roger Quadros 2018-11-29 8:49 ` Roger Quadros 2018-11-29 16:18 ` David Lechner 2018-11-22 11:38 ` [PATCH 02/17] soc: ti: pruss: Define platform data for PRUSS bus driver Roger Quadros 2018-11-22 11:38 ` Roger Quadros 2018-11-22 11:38 ` [PATCH 03/17] soc: ti: pruss: Add pruss_soc_bus platform driver Roger Quadros 2018-11-22 11:38 ` Roger Quadros 2018-11-22 11:39 ` [PATCH 04/17] soc: ti: pruss: Fix system suspend/MStandby config issues Roger Quadros 2018-11-22 11:39 ` Roger Quadros 2018-11-22 11:39 ` [PATCH 05/17] soc: ti: pruss: Configure SYSCFG properly during probe/remove Roger Quadros 2018-11-22 11:39 ` Roger Quadros 2018-11-23 16:26 ` Tony Lindgren 2018-11-22 11:39 ` [PATCH 06/17] soc: ti: pruss: Add a platform driver for PRUSS in TI SoCs Roger Quadros 2018-11-22 11:39 ` Roger Quadros 2018-11-26 21:15 ` David Lechner 2018-11-27 15:17 ` Roger Quadros 2018-11-27 15:17 ` Roger Quadros 2018-11-22 11:39 ` [PATCH 07/17] soc: ti: pruss: enable OCP master ports in SYSCFG always Roger Quadros 2018-11-22 11:39 ` Roger Quadros 2018-11-23 16:35 ` Tony Lindgren 2018-11-22 11:39 ` [PATCH 08/17] soc: ti: pruss: Add a PRUSS irqchip driver for PRUSS interrupts Roger Quadros 2018-11-22 11:39 ` Roger Quadros 2018-11-23 16:37 ` Tony Lindgren 2018-11-26 8:09 ` Roger Quadros 2018-11-26 8:09 ` Roger Quadros 2018-11-26 19:33 ` Tony Lindgren 2018-12-12 15:48 ` Roger Quadros 2018-12-12 15:48 ` Roger Quadros 2018-12-12 17:25 ` Tony Lindgren 2018-11-26 8:09 ` Roger Quadros 2018-11-26 8:09 ` Roger Quadros 2018-11-26 21:17 ` David Lechner 2018-11-27 15:39 ` Roger Quadros 2018-11-27 15:39 ` Roger Quadros 2018-11-28 15:46 ` David Lechner 2018-11-22 11:39 ` [PATCH 09/17] soc: ti: pruss: add pruss_{request,release}_mem_region() API Roger Quadros 2018-11-22 11:39 ` Roger Quadros 2018-11-26 21:18 ` David Lechner 2018-11-22 11:39 ` Roger Quadros [this message] 2018-11-22 11:39 ` [PATCH 10/17] soc: ti: pruss_intc: Add API to trigger a PRU sysevent Roger Quadros 2018-11-26 21:18 ` David Lechner 2018-11-22 11:39 ` [PATCH 11/17] soc: ti: pruss: add pruss_get()/put() API Roger Quadros 2018-11-22 11:39 ` Roger Quadros 2018-11-23 2:47 ` kbuild test robot 2018-11-23 2:47 ` kbuild test robot 2018-11-23 2:47 ` kbuild test robot 2018-11-23 9:41 ` Roger Quadros 2018-11-23 9:41 ` Roger Quadros 2018-11-23 8:20 ` Arnd Bergmann 2018-11-23 8:58 ` Tero Kristo 2018-11-23 8:58 ` Tero Kristo 2018-11-23 9:40 ` Roger Quadros 2018-11-23 9:40 ` Roger Quadros 2018-11-26 21:18 ` David Lechner 2018-11-22 11:39 ` [PATCH 12/17] soc: ti: pruss: add pruss_cfg_read()/update() API Roger Quadros 2018-11-22 11:39 ` Roger Quadros 2018-11-22 11:39 ` [PATCH 13/17] soc: ti: pruss: export pruss_intc_configure/unconfigure APIs Roger Quadros 2018-11-22 11:39 ` Roger Quadros 2018-11-26 21:19 ` David Lechner 2018-11-22 11:39 ` [PATCH 14/17] ARM: OMAP2+: use pdata quirks for PRUSS reset lines on AM335x Roger Quadros 2018-11-22 11:39 ` Roger Quadros 2018-11-23 16:40 ` Tony Lindgren 2018-11-22 11:39 ` [PATCH 15/17] ARM: dts: AM33xx: Add the PRU-ICSS DT nodes Roger Quadros 2018-11-22 11:39 ` Roger Quadros 2018-11-26 16:37 ` David Lechner 2018-11-22 11:39 ` [PATCH 16/17] ARM: dts: AM33xx: Add PRU system events for virtio Roger Quadros 2018-11-22 11:39 ` Roger Quadros 2018-11-22 11:39 ` [PATCH 17/17] ARM: dts: am335x-*: Enable PRU-ICSS nodes Roger Quadros 2018-11-22 11:39 ` Roger Quadros 2018-11-26 16:45 ` David Lechner 2018-12-03 2:04 ` [PATCH 00/17] Add support for TI PRU ICSS Derald D. Woods
Reply instructions: You may reply publicly to this message via plain-text email using any one of the following methods: * Save the following mbox file, import it into your mail client, and reply-to-all from there: mbox Avoid top-posting and favor interleaved quoting: https://en.wikipedia.org/wiki/Posting_style#Interleaved_style * Reply using the --to, --cc, and --in-reply-to switches of git-send-email(1): git send-email \ --in-reply-to=1542886753-17625-11-git-send-email-rogerq@ti.com \ --to=rogerq@ti.com \ --cc=bcousson@baylibre.com \ --cc=bjorn.andersson@linaro.org \ --cc=devicetree@vger.kernel.org \ --cc=jreeder@ti.com \ --cc=linux-kernel@vger.kernel.org \ --cc=linux-omap@vger.kernel.org \ --cc=linux-remoteproc@vger.kernel.org \ --cc=m-karicheri2@ti.com \ --cc=nsaulnier@ti.com \ --cc=nsekhar@ti.com \ --cc=ohad@wizery.com \ --cc=robh+dt@kernel.org \ --cc=s-anna@ti.com \ --cc=ssantosh@kernel.org \ --cc=t-kristo@ti.com \ --cc=tony@atomide.com \ --cc=woods.technical@gmail.com \ /path/to/YOUR_REPLY https://kernel.org/pub/software/scm/git/docs/git-send-email.html * If your mail client supports setting the In-Reply-To header via mailto: links, try the mailto: linkBe sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.