All of lore.kernel.org
 help / color / mirror / Atom feed
From: "Derald D. Woods" <woods.technical@gmail.com>
To: Roger Quadros <rogerq@ti.com>
Cc: tony@atomide.com, 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, linux-omap@vger.kernel.org,
	linux-remoteproc@vger.kernel.org, linux-kernel@vger.kernel.org,
	devicetree@vger.kernel.org
Subject: Re: [PATCH 00/17] Add support for TI PRU ICSS
Date: Sun, 2 Dec 2018 20:04:32 -0600	[thread overview]
Message-ID: <20181203020431.GC18592@ethiopia> (raw)
In-Reply-To: <1542886753-17625-1-git-send-email-rogerq@ti.com>

On Thu, Nov 22, 2018 at 01:38:56PM +0200, Roger Quadros wrote:
> Hi,
> 
> The Programmable Real-Time Unit and Industrial Communication Subsystem
> (PRU-ICSS) is present on various TI SoCs such as AM335x, AM437x, AM57x,
> Keystone 66AK2G, etc. A PRUSS consists of dual 32-bit RISC cores (Programmable
> Real-Time Units, or PRUs), data and instruction RAMs, shard RAM, and
> interrupt controller and some internal peripheral modules to facilitate
> industrial communication. The programmable nature of the PRUs provide
> flexibility to implement custom peripheral interfaces, fast real-time
> responses, or specialized data handling. The common peripheral modules
> include the following,
>   - an MII_RT module with two MII ports for Ethernet
>   - an MDIO port for external Ethernet PHYs
>   - an Industrial Ethernet Peripheral (IEP) to manage/generate Industrial
>     Ethernet functions
>   - an Enhanced Capture Module (eCAP)
>   - an Industrial Ethernet Timer with 7/9 capture and 16 compare events
>   - a 16550-compatible UART to support PROFIBUS
> 
> A typical usage scenario would be to load the application firmware into
> one or more of the PRU cores, initialize one or more of the peripherals
> and perform I/O through shared RAM (or MSMC RAM) from either a Kernel driver
> or directly from userspace.
> 
> With this two-part series we should be able to use the kernel RPMSG driver
> along with firmware and user-space examples in the
> pru-software-support-package [1].
> 
> We will also be able to get Dual Ethernet functionality using a kernel driver
> which will be posted later.
> 
> The kernel code will be split into the following sections
> 
> 1) soc: pruss_soc_bus: The sole purpose of this driver is to handle platform
> specific Power management quirks and allow the child node (i.e entire PRUSS)
> to be unbound from the default kernel driver and bound to something else. e.g. uio_pruss,
> while allowing to manage PM in the kernel.
> 
> 2) soc: pruss: This is the driver for the entire ICSS. Its main purpose is
> to populate the different modules and handle platform specific quirks.
> It will also manage the interrupt controller and provide kernel APIs to
> change ICSS specific knobs in the CFG space e.g. GP_MUX.
> 
> 3) remoteproc: pru: This provides a remoteproc interface for the PRU cores.
> With this we can load firmware, start/stop PRU from kernel or userspace.
> It adds support for virtio RPMSG. It also provides some kernel APIs
> (e.g. pru_rproc_set_ctable()) that are PRU specific and required for
> in-kernel applications (e.g. ethernet)
> 
> 4) ARM: OMAP: DTS:
> Platform data and device tree files.
> 
> Due to the large number of patches patches are  split this into 2 email threads.
> This thread covers (1), (3) and (4).
> 
> A second thread will cover the remoteproc driver (3).
> 
> The series only adds platform support for AM335x to keep patch count small.
> Support for other platforms (AM43x, AM57x, K2G) will be added later.
> 
> Testing:
> To test the code with example firmware you can try the LAB5 tutorial
> http://processors.wiki.ti.com/index.php/PRU_Training:_Hands-on_Labs#LAB_5:_RPMsg_Communication_between_ARM_and_PRU
> with the pru-software-support package at [2] and the sample rpmsg-client driver.
> NOTE: you no longer need to build and run PRU_Halt example as shown in the tutorial.
> 
> cheers,
> -roger
> 
> [1] https://git.ti.com/pru-software-support-package
> 	NOTE: The repo needs update to the INTC resource data structures
> 	The updates that are required are listed in the below repo with one example fixed.
> [2] https://github.com/rogerq/pru-software-support-package/commits/upstream/pruss
> 


Per Roger's instructions, I was able test both patch series on the
am335x-pocketbeagle, based on linux v4.20-rc4, with the following
additional 'rpmsg_pru' patches:

https://github.com/beagleboard/linux/commit/2b013313cae8659f2cbd659c314e471a71f1623c
https://github.com/beagleboard/linux/commit/b894d492a35aa43a7b54512b971a04b9aec17814

Tested-by: Derald D. Woods <woods.technical@gmail.com>


> Andrew F. Davis (1):
>   soc: ti: pruss: add pruss_{request,release}_mem_region() API
> 
> Roger Quadros (2):
>   soc: ti: pruss: add pruss_cfg_read()/update() API
>   soc: ti: pruss: export pruss_intc_configure/unconfigure APIs
> 
> Suman Anna (13):
>   dt-bindings: remoteproc: Add TI PRUSS bindings
>   soc: ti: pruss: Define platform data for PRUSS bus driver
>   soc: ti: pruss: Add pruss_soc_bus platform driver
>   soc: ti: pruss: Fix system suspend/MStandby config issues
>   soc: ti: pruss: Configure SYSCFG properly during probe/remove
>   soc: ti: pruss: Add a platform driver for PRUSS in TI SoCs
>   soc: ti: pruss: enable OCP master ports in SYSCFG always
>   soc: ti: pruss: Add a PRUSS irqchip driver for PRUSS interrupts
>   soc: ti: pruss_intc: Add API to trigger a PRU sysevent
>   ARM: OMAP2+: use pdata quirks for PRUSS reset lines on AM335x
>   ARM: dts: AM33xx: Add the PRU-ICSS DT nodes
>   ARM: dts: AM33xx: Add PRU system events for virtio
>   ARM: dts: am335x-*: Enable PRU-ICSS nodes
> 
> Tero Kristo (1):
>   soc: ti: pruss: add pruss_get()/put() API
> 
>  .../devicetree/bindings/soc/ti/ti,pruss.txt        | 360 ++++++++++++
>  arch/arm/boot/dts/am335x-bone-common.dtsi          |   8 +
>  arch/arm/boot/dts/am335x-evm.dts                   |   8 +
>  arch/arm/boot/dts/am335x-evmsk.dts                 |   8 +
>  arch/arm/boot/dts/am335x-icev2.dts                 |   8 +
>  arch/arm/boot/dts/am33xx.dtsi                      |  78 +++
>  arch/arm/mach-omap2/pdata-quirks.c                 |  11 +
>  drivers/soc/ti/Kconfig                             |  12 +
>  drivers/soc/ti/Makefile                            |   1 +
>  drivers/soc/ti/pruss.c                             | 306 +++++++++++
>  drivers/soc/ti/pruss.h                             |  36 ++
>  drivers/soc/ti/pruss_intc.c                        | 604 +++++++++++++++++++++
>  drivers/soc/ti/pruss_soc_bus.c                     | 279 ++++++++++
>  include/linux/platform_data/ti-pruss.h             |  25 +
>  include/linux/pruss.h                              | 235 ++++++++
>  15 files changed, 1979 insertions(+)
>  create mode 100644 Documentation/devicetree/bindings/soc/ti/ti,pruss.txt
>  create mode 100644 drivers/soc/ti/pruss.c
>  create mode 100644 drivers/soc/ti/pruss.h
>  create mode 100644 drivers/soc/ti/pruss_intc.c
>  create mode 100644 drivers/soc/ti/pruss_soc_bus.c
>  create mode 100644 include/linux/platform_data/ti-pruss.h
>  create mode 100644 include/linux/pruss.h
> 
> -- 
> Texas Instruments Finland Oy, Porkkalankatu 22, 00180 Helsinki.
> Y-tunnus/Business ID: 0615521-4. Kotipaikka/Domicile: Helsinki
> 

      parent reply	other threads:[~2018-12-03  2:04 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 ` [PATCH 10/17] soc: ti: pruss_intc: Add API to trigger a PRU sysevent Roger Quadros
2018-11-22 11:39   ` 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 ` Derald D. Woods [this message]

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=20181203020431.GC18592@ethiopia \
    --to=woods.technical@gmail.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=rogerq@ti.com \
    --cc=s-anna@ti.com \
    --cc=ssantosh@kernel.org \
    --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.