From: Suman Anna <s-anna@ti.com>
To: David Lechner <david@lechnology.com>,
Roger Quadros <rogerq@ti.com>,
linux-remoteproc@vger.kernel.org, devicetree@vger.kernel.org,
linux-omap@vger.kernel.org, linux-arm-kernel@lists.infradead.org
Cc: "Ohad Ben-Cohen" <ohad@wizery.com>,
"Mark Rutland" <mark.rutland@arm.com>,
"Kevin Hilman" <khilman@kernel.org>,
"Tony Lindgren" <tony@atomide.com>,
"Sekhar Nori" <nsekhar@ti.com>,
linux-kernel@vger.kernel.org,
"Bjorn Andersson" <bjorn.andersson@linaro.org>,
"Tero Kristo" <t-kristo@ti.com>,
"Rob Herring" <robh+dt@kernel.org>,
"Benoît Cousson" <bcousson@baylibre.com>
Subject: Re: New remoteproc driver for TI PRU
Date: Fri, 29 Jun 2018 19:17:36 -0500 [thread overview]
Message-ID: <536d28bd-bcdd-1665-e1c8-828572051cfb@ti.com> (raw)
In-Reply-To: <8fc18d40-72f5-9215-26f0-1492e3a6c0e7@lechnology.com>
Hi David,
On 06/29/2018 12:44 PM, David Lechner wrote:
> On 06/29/2018 04:58 AM, Roger Quadros wrote:
>> +Suman & Tero
>>
>> Hi David,
>>
>> On 24/06/18 00:08, David Lechner wrote:
>>>
>>> Date: Sat, 23 Jun 2018 15:43:59 -0500
>>> Subject: [PATCH 0/8] New remoteproc driver for TI PRU
>>>
>>> This series adds a new remoteproc driver for the TI Programmable
>>> Runtime Unit
>>> (PRU) that is present in some TI Sitara processors. This code has
>>> been tested
>>> working on AM1808 (LEGO MINDSTORMS EV3) and AM3358 (BeagleBone Green).
>>
>> This is great. We have been working on something similar and I think
>> it would
>> be great if we can collaborate to get all our needs addressed.
>
> Yes, I have used the PRU with the TI kernel on BeagleBone so I've seen
> the TI
> implementation. My primary interest is in the AM1808, which has a far
> simpler
> PRU than other SoCs. So, I was hoping I could get away with just
> implementing
> the basic stuff that I need and let TI add the more complex stuff later.
Thanks for the series. PRUSS is present on many SoCs now, and each with
their own integration quirks, both in terms of SoC connections as well
as internal sub-modules within the subsystem. We currently support
AM335x, AM437x, AM57xx, Keystone 2 based 66AK2G and a newer generation
AM65x as well. It should be relatively straight-forward to scale this
for AM1808/OMAP-L138 as well. The move to the standard Common Clock and
Reset frameworks for clocks with the Davinci chips should make it
relatively straight-forward for the architecture pieces.
I will take a look at your series in detail sometime next week, and
mostly post our series to the upstream lists as well within the next
couple of weeks so that it is easier for discussion on the upstream lists.
>
>>
>> Our primary requirement is that it should be possible for a user (e.g.
>> kernel driver) to
>> - request a specific PRU core load a specific firmware blob and
>> boot/stop the PRU.
>
> For this, I was thinking of suggesting a generic remoteproc
> provider/consumer
> binding that is similar to other subsystems. For example:
>
> Provider node has:
>
> #remoteproc-cells = <1>;
>
> And consumer has:
>
> remoteprocs = <&pruss 0>, <&pruss 1>;
> remoteproc-names = "pru0", "pru1";
We do have an existing API in remoteproc core today,
rproc_get_by_phandle() for this, though it is not as sophisticated or
designed in a standard way that we see on some other sub-systems. One
thing that's currently missing from this is a sense of exclusive access,
as we do want to restrict access to a PRU to a single client at a time.
>
> The consumer device would be responsible for determining the firmware file
> and for calling the rproc boot function.
>
>
>> - configure INTC interrupt mapping based on either resource table or DT
>> - use request_irq to request and use an interrupt.
>
> I didn't consider creating a new interrupt controller in device tree, but
> that makes sense. I will have to look into it some more.
>
Couple of iterations on our vendor tree all but resulted in representing
various sub-modules as child nodes - this allows to reuse different
drivers to deal with specific functionality like MDIO, UART etc. The
number of registers across all PRUSS sub-modules and SoCs are too huge
to support through a single driver.
>
>> - request access to DRAM/SRAM
>
> Can the existing device tree bindings for reserved-memory be used for this?
Typically, reserved-memory is used for reserving regions in DDR, not
mmio spaces. There is the SRAM driver in general to deal with on-chip
memories.
> I would expect the consumer nodes to use this and not the PRUSS provider
> node.
We will need access from both, as the remoteproc core does the loading
in general leveraging specific rproc ops from a remoteproc
implementation driver.
>
>
>> - configure gpimode/miirt/xfr (CFG space)
>
> I have no idea what this stuff is. :-)
There are all the different sub-modules/register spaces dealing
specifically with internal pinmuxes, some serial/parallel GPIO pin
operations etc.
regards
Suman
>
> (This is what I was referring to when I said I was hoping that someone
> else could add more later).
>
_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
WARNING: multiple messages have this Message-ID (diff)
From: Suman Anna <s-anna@ti.com>
To: David Lechner <david@lechnology.com>,
Roger Quadros <rogerq@ti.com>,
linux-remoteproc@vger.kernel.org, devicetree@vger.kernel.org,
linux-omap@vger.kernel.org, linux-arm-kernel@lists.infradead.org
Cc: "Ohad Ben-Cohen" <ohad@wizery.com>,
"Bjorn Andersson" <bjorn.andersson@linaro.org>,
"Rob Herring" <robh+dt@kernel.org>,
"Mark Rutland" <mark.rutland@arm.com>,
"Benoît Cousson" <bcousson@baylibre.com>,
"Tony Lindgren" <tony@atomide.com>,
"Sekhar Nori" <nsekhar@ti.com>,
"Kevin Hilman" <khilman@kernel.org>,
linux-kernel@vger.kernel.org, "Tero Kristo" <t-kristo@ti.com>
Subject: Re: New remoteproc driver for TI PRU
Date: Fri, 29 Jun 2018 19:17:36 -0500 [thread overview]
Message-ID: <536d28bd-bcdd-1665-e1c8-828572051cfb@ti.com> (raw)
In-Reply-To: <8fc18d40-72f5-9215-26f0-1492e3a6c0e7@lechnology.com>
Hi David,
On 06/29/2018 12:44 PM, David Lechner wrote:
> On 06/29/2018 04:58 AM, Roger Quadros wrote:
>> +Suman & Tero
>>
>> Hi David,
>>
>> On 24/06/18 00:08, David Lechner wrote:
>>>
>>> Date: Sat, 23 Jun 2018 15:43:59 -0500
>>> Subject: [PATCH 0/8] New remoteproc driver for TI PRU
>>>
>>> This series adds a new remoteproc driver for the TI Programmable
>>> Runtime Unit
>>> (PRU) that is present in some TI Sitara processors. This code has
>>> been tested
>>> working on AM1808 (LEGO MINDSTORMS EV3) and AM3358 (BeagleBone Green).
>>
>> This is great. We have been working on something similar and I think
>> it would
>> be great if we can collaborate to get all our needs addressed.
>
> Yes, I have used the PRU with the TI kernel on BeagleBone so I've seen
> the TI
> implementation. My primary interest is in the AM1808, which has a far
> simpler
> PRU than other SoCs. So, I was hoping I could get away with just
> implementing
> the basic stuff that I need and let TI add the more complex stuff later.
Thanks for the series. PRUSS is present on many SoCs now, and each with
their own integration quirks, both in terms of SoC connections as well
as internal sub-modules within the subsystem. We currently support
AM335x, AM437x, AM57xx, Keystone 2 based 66AK2G and a newer generation
AM65x as well. It should be relatively straight-forward to scale this
for AM1808/OMAP-L138 as well. The move to the standard Common Clock and
Reset frameworks for clocks with the Davinci chips should make it
relatively straight-forward for the architecture pieces.
I will take a look at your series in detail sometime next week, and
mostly post our series to the upstream lists as well within the next
couple of weeks so that it is easier for discussion on the upstream lists.
>
>>
>> Our primary requirement is that it should be possible for a user (e.g.
>> kernel driver) to
>> - request a specific PRU core load a specific firmware blob and
>> boot/stop the PRU.
>
> For this, I was thinking of suggesting a generic remoteproc
> provider/consumer
> binding that is similar to other subsystems. For example:
>
> Provider node has:
>
> #remoteproc-cells = <1>;
>
> And consumer has:
>
> remoteprocs = <&pruss 0>, <&pruss 1>;
> remoteproc-names = "pru0", "pru1";
We do have an existing API in remoteproc core today,
rproc_get_by_phandle() for this, though it is not as sophisticated or
designed in a standard way that we see on some other sub-systems. One
thing that's currently missing from this is a sense of exclusive access,
as we do want to restrict access to a PRU to a single client at a time.
>
> The consumer device would be responsible for determining the firmware file
> and for calling the rproc boot function.
>
>
>> - configure INTC interrupt mapping based on either resource table or DT
>> - use request_irq to request and use an interrupt.
>
> I didn't consider creating a new interrupt controller in device tree, but
> that makes sense. I will have to look into it some more.
>
Couple of iterations on our vendor tree all but resulted in representing
various sub-modules as child nodes - this allows to reuse different
drivers to deal with specific functionality like MDIO, UART etc. The
number of registers across all PRUSS sub-modules and SoCs are too huge
to support through a single driver.
>
>> - request access to DRAM/SRAM
>
> Can the existing device tree bindings for reserved-memory be used for this?
Typically, reserved-memory is used for reserving regions in DDR, not
mmio spaces. There is the SRAM driver in general to deal with on-chip
memories.
> I would expect the consumer nodes to use this and not the PRUSS provider
> node.
We will need access from both, as the remoteproc core does the loading
in general leveraging specific rproc ops from a remoteproc
implementation driver.
>
>
>> - configure gpimode/miirt/xfr (CFG space)
>
> I have no idea what this stuff is. :-)
There are all the different sub-modules/register spaces dealing
specifically with internal pinmuxes, some serial/parallel GPIO pin
operations etc.
regards
Suman
>
> (This is what I was referring to when I said I was hoping that someone
> else could add more later).
>
WARNING: multiple messages have this Message-ID (diff)
From: s-anna@ti.com (Suman Anna)
To: linux-arm-kernel@lists.infradead.org
Subject: New remoteproc driver for TI PRU
Date: Fri, 29 Jun 2018 19:17:36 -0500 [thread overview]
Message-ID: <536d28bd-bcdd-1665-e1c8-828572051cfb@ti.com> (raw)
In-Reply-To: <8fc18d40-72f5-9215-26f0-1492e3a6c0e7@lechnology.com>
Hi David,
On 06/29/2018 12:44 PM, David Lechner wrote:
> On 06/29/2018 04:58 AM, Roger Quadros wrote:
>> +Suman & Tero
>>
>> Hi David,
>>
>> On 24/06/18 00:08, David Lechner wrote:
>>>
>>> Date: Sat, 23 Jun 2018 15:43:59 -0500
>>> Subject: [PATCH 0/8] New remoteproc driver for TI PRU
>>>
>>> This series adds a new remoteproc driver for the TI Programmable
>>> Runtime Unit
>>> (PRU) that is present in some TI Sitara processors. This code has
>>> been tested
>>> working on AM1808 (LEGO MINDSTORMS EV3) and AM3358 (BeagleBone Green).
>>
>> This is great. We have been working on something similar and I think
>> it would
>> be great if we can collaborate to get all our needs addressed.
>
> Yes, I have used the PRU with the TI kernel on BeagleBone so I've seen
> the TI
> implementation. My primary interest is in the AM1808, which has a far
> simpler
> PRU than other SoCs. So, I was hoping I could get away with just
> implementing
> the basic stuff that I need and let TI add the more complex stuff later.
Thanks for the series. PRUSS is present on many SoCs now, and each with
their own integration quirks, both in terms of SoC connections as well
as internal sub-modules within the subsystem. We currently support
AM335x, AM437x, AM57xx, Keystone 2 based 66AK2G and a newer generation
AM65x as well. It should be relatively straight-forward to scale this
for AM1808/OMAP-L138 as well. The move to the standard Common Clock and
Reset frameworks for clocks with the Davinci chips should make it
relatively straight-forward for the architecture pieces.
I will take a look at your series in detail sometime next week, and
mostly post our series to the upstream lists as well within the next
couple of weeks so that it is easier for discussion on the upstream lists.
>
>>
>> Our primary requirement is that it should be possible for a user (e.g.
>> kernel driver) to
>> - request a specific PRU core load a specific firmware blob and
>> boot/stop the PRU.
>
> For this, I was thinking of suggesting a generic remoteproc
> provider/consumer
> binding that is similar to other subsystems. For example:
>
> Provider node has:
>
> ????#remoteproc-cells = <1>;
>
> And consumer has:
>
> ????remoteprocs = <&pruss 0>, <&pruss 1>;
> ????remoteproc-names = "pru0", "pru1";
We do have an existing API in remoteproc core today,
rproc_get_by_phandle() for this, though it is not as sophisticated or
designed in a standard way that we see on some other sub-systems. One
thing that's currently missing from this is a sense of exclusive access,
as we do want to restrict access to a PRU to a single client at a time.
>
> The consumer device would be responsible for determining the firmware file
> and for calling the rproc boot function.
>
>
>> - configure INTC interrupt mapping based on either resource table or DT
>> - use request_irq to request and use an interrupt.
>
> I didn't consider creating a new interrupt controller in device tree, but
> that makes sense. I will have to look into it some more.
>
Couple of iterations on our vendor tree all but resulted in representing
various sub-modules as child nodes - this allows to reuse different
drivers to deal with specific functionality like MDIO, UART etc. The
number of registers across all PRUSS sub-modules and SoCs are too huge
to support through a single driver.
>
>> - request access to DRAM/SRAM
>
> Can the existing device tree bindings for reserved-memory be used for this?
Typically, reserved-memory is used for reserving regions in DDR, not
mmio spaces. There is the SRAM driver in general to deal with on-chip
memories.
> I would expect the consumer nodes to use this and not the PRUSS provider
> node.
We will need access from both, as the remoteproc core does the loading
in general leveraging specific rproc ops from a remoteproc
implementation driver.
>
>
>> - configure gpimode/miirt/xfr (CFG space)
>
> I have no idea what this stuff is. :-)
There are all the different sub-modules/register spaces dealing
specifically with internal pinmuxes, some serial/parallel GPIO pin
operations etc.
regards
Suman
>
> (This is what I was referring to when I said I was hoping that someone
> else could add more later).
>
next prev parent reply other threads:[~2018-06-30 0:17 UTC|newest]
Thread overview: 40+ messages / expand[flat|nested] mbox.gz Atom feed top
2018-06-23 21:08 (unknown), David Lechner
2018-06-23 21:08 ` No subject David Lechner
2018-06-23 21:08 ` David Lechner
2018-06-23 21:08 ` [PATCH 1/8] remoteproc: add map parameter to da_to_va David Lechner
2018-06-23 21:08 ` David Lechner
2018-06-23 21:08 ` [PATCH 2/8] remoteproc: add page lookup for TI PRU to ELF loader David Lechner
2018-06-23 21:08 ` David Lechner
2018-06-23 21:08 ` David Lechner
2018-06-23 21:08 ` [PATCH 3/8] ARM: OMAP2+: add pdata quirks for PRUSS reset David Lechner
2018-06-23 21:08 ` David Lechner
2018-06-23 21:08 ` [PATCH 4/8] dt-bindings: add bindings for TI PRU as remoteproc David Lechner
2018-06-23 21:08 ` David Lechner
2018-07-03 20:59 ` Rob Herring
2018-07-03 20:59 ` Rob Herring
2018-06-23 21:08 ` [PATCH 5/8] remoteproc: new driver for TI PRU David Lechner
2018-06-23 21:08 ` David Lechner
2018-06-29 10:14 ` Roger Quadros
2018-06-29 10:14 ` Roger Quadros
2018-06-30 19:02 ` Derald Woods
2018-07-02 8:05 ` Roger Quadros
2018-07-02 8:05 ` Roger Quadros
2018-06-23 21:08 ` [PATCH 6/8] ARM: davinci_all_defconfig: enable PRU remoteproc module David Lechner
2018-06-23 21:08 ` David Lechner
2018-06-23 21:08 ` [PATCH 7/8] ARM: dts: da850: add node for PRUSS David Lechner
2018-06-23 21:08 ` David Lechner
2018-06-23 21:08 ` [PATCH 8/8] ARM: dts: am33xx: add node for PRU remoteproc David Lechner
2018-06-23 21:08 ` David Lechner
2018-06-29 9:58 ` New remoteproc driver for TI PRU Roger Quadros
2018-06-29 17:44 ` David Lechner
2018-06-29 17:44 ` David Lechner
2018-06-30 0:17 ` Suman Anna [this message]
2018-06-30 0:17 ` Suman Anna
2018-06-30 0:17 ` Suman Anna
2018-08-06 16:32 ` David Lechner
2018-08-06 16:32 ` David Lechner
2018-08-07 1:39 ` Suman Anna
2018-08-07 1:39 ` Suman Anna
2018-08-07 1:39 ` Suman Anna
2018-07-02 8:17 ` Roger Quadros
2018-07-02 8:17 ` Roger Quadros
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=536d28bd-bcdd-1665-e1c8-828572051cfb@ti.com \
--to=s-anna@ti.com \
--cc=bcousson@baylibre.com \
--cc=bjorn.andersson@linaro.org \
--cc=david@lechnology.com \
--cc=devicetree@vger.kernel.org \
--cc=khilman@kernel.org \
--cc=linux-arm-kernel@lists.infradead.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-omap@vger.kernel.org \
--cc=linux-remoteproc@vger.kernel.org \
--cc=mark.rutland@arm.com \
--cc=nsekhar@ti.com \
--cc=ohad@wizery.com \
--cc=robh+dt@kernel.org \
--cc=rogerq@ti.com \
--cc=t-kristo@ti.com \
--cc=tony@atomide.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: link
Be 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.