mbox series

[U-Boot,00/14] net: ti: icssg: Add prueth support

Message ID 20190806103844.25277-1-j-keerthy@ti.com
Headers show
Series net: ti: icssg: Add prueth support | expand

Message

Keerthy Aug. 6, 2019, 10:38 a.m. UTC
The series adds support for icssg_prueth functionality
on u-boot. This series is based on top of master branch.
rproc init needs to be done from uboot command prompt.
The pru/rtu firmware loading is done by prueth driver soon after
config paramters are setup.

Currently only slice0/1 of icssg2 instance on am6-evm
is supported. i.e Both slices of icssg2 instance are supported.

On u-boot prompt following commands to test icssg2_port 0 on am654-evm:

setenv ethact pruss2_eth;  setenv serverip 172.24.191.45; fatload mmc 1 ${pru0loadaddr} am65x-pru0-prueth-fw.elf; fatload mmc 1 ${rtu0loadaddr} am65x-rtu0-prueth-fw.elf; rproc init; setenv autoload no; dhcp; tftp 0x82000000 Image; tftp 0x83000000 k3-am654-base-board.dtb; booti 0x82000000 - 0x83000000

This tests tftp on prueth.

Note: Uboot ethernet driver architecture supports once
instance per probe. So only one of the ports are supported
per instance. So DT of prueth node should have either ethernet-mii0
or ethernet-mii1. 

Keerthy (14):
  net: eth-uclass: eth_get_dev based on SEQ_ALIAS instead of probe order
  net: eth-uclass: call stop only for active devices
  misc: uclass: Introduce misc_init_by_ofnode
  soc: ti: pruss: add a misc driver for PRUSS in TI SoCs
  remoteproc: pruss: add PRU remoteproc driver
  net: ti: icssg-prueth: Add ICSSG ethernet driver
  net: ti: icssg-prueth: Workaround to shutdown the prueth firmware
  arm: dts: k3-am65-main: Add msmc_ram node
  arm: dts: k3-am654-base-board-u-boot: Add icssg specific msmc_ram
    carveout nodes
  arm: dts: k3-am65-main: Add scm_conf node
  arm: dts: k3-am65-main: Add pruss nodes for ICSSG2
  arm64: dts: ti: am654-base-board: add ICSSG2 Ethernet support
  configs: am65x_evm_a53_defconfig: Enable CONFIG_REMOTEPROC_TI_PRU
  configs: am65x_evm_a53_defconfig: Enable CONFIG_CMD_REMOTEPROC

 arch/arm/dts/k3-am65-main.dtsi               | 212 ++++++++
 arch/arm/dts/k3-am65.dtsi                    |   4 +-
 arch/arm/dts/k3-am654-base-board-u-boot.dtsi | 130 +++++
 configs/am65x_evm_a53_defconfig              |   5 +
 drivers/misc/misc-uclass.c                   |  25 +
 drivers/net/ti/Kconfig                       |   8 +
 drivers/net/ti/Makefile                      |   1 +
 drivers/net/ti/icssg-prueth.c                | 525 +++++++++++++++++++
 drivers/net/ti/icssg.h                       |  31 ++
 drivers/net/ti/icssg_classifier.c            | 397 ++++++++++++++
 drivers/remoteproc/Kconfig                   |  11 +
 drivers/remoteproc/Makefile                  |   1 +
 drivers/remoteproc/pru_rproc.c               | 384 ++++++++++++++
 drivers/soc/ti/Kconfig                       |  13 +
 drivers/soc/ti/Makefile                      |   1 +
 drivers/soc/ti/pruss.c                       | 143 +++++
 include/misc.h                               |   9 +
 include/ti-pruss.h                           |  13 +
 net/eth-uclass.c                             |   7 +-
 19 files changed, 1916 insertions(+), 4 deletions(-)
 create mode 100644 drivers/net/ti/icssg-prueth.c
 create mode 100644 drivers/net/ti/icssg.h
 create mode 100644 drivers/net/ti/icssg_classifier.c
 create mode 100644 drivers/remoteproc/pru_rproc.c
 create mode 100644 drivers/soc/ti/pruss.c
 create mode 100644 include/ti-pruss.h

Comments

Andreas Dannenberg Aug. 6, 2019, 3:35 p.m. UTC | #1
Keerthy,

On Tue, Aug 06, 2019 at 04:08:30PM +0530, Keerthy wrote:
> The series adds support for icssg_prueth functionality
> on u-boot. This series is based on top of master branch.
> rproc init needs to be done from uboot command prompt.
> The pru/rtu firmware loading is done by prueth driver soon after
> config paramters are setup.

for everybody's benefit, where does this firmware come from so one can
experiment with this patch series?

--
Andreas Dannenberg
Texas Instruments Inc

> 
> Currently only slice0/1 of icssg2 instance on am6-evm
> is supported. i.e Both slices of icssg2 instance are supported.
> 
> On u-boot prompt following commands to test icssg2_port 0 on am654-evm:
> 
> setenv ethact pruss2_eth;  setenv serverip 172.24.191.45; fatload mmc 1 ${pru0loadaddr} am65x-pru0-prueth-fw.elf; fatload mmc 1 ${rtu0loadaddr} am65x-rtu0-prueth-fw.elf; rproc init; setenv autoload no; dhcp; tftp 0x82000000 Image; tftp 0x83000000 k3-am654-base-board.dtb; booti 0x82000000 - 0x83000000
> 
> This tests tftp on prueth.
> 
> Note: Uboot ethernet driver architecture supports once
> instance per probe. So only one of the ports are supported
> per instance. So DT of prueth node should have either ethernet-mii0
> or ethernet-mii1. 
> 
> Keerthy (14):
>   net: eth-uclass: eth_get_dev based on SEQ_ALIAS instead of probe order
>   net: eth-uclass: call stop only for active devices
>   misc: uclass: Introduce misc_init_by_ofnode
>   soc: ti: pruss: add a misc driver for PRUSS in TI SoCs
>   remoteproc: pruss: add PRU remoteproc driver
>   net: ti: icssg-prueth: Add ICSSG ethernet driver
>   net: ti: icssg-prueth: Workaround to shutdown the prueth firmware
>   arm: dts: k3-am65-main: Add msmc_ram node
>   arm: dts: k3-am654-base-board-u-boot: Add icssg specific msmc_ram
>     carveout nodes
>   arm: dts: k3-am65-main: Add scm_conf node
>   arm: dts: k3-am65-main: Add pruss nodes for ICSSG2
>   arm64: dts: ti: am654-base-board: add ICSSG2 Ethernet support
>   configs: am65x_evm_a53_defconfig: Enable CONFIG_REMOTEPROC_TI_PRU
>   configs: am65x_evm_a53_defconfig: Enable CONFIG_CMD_REMOTEPROC
> 
>  arch/arm/dts/k3-am65-main.dtsi               | 212 ++++++++
>  arch/arm/dts/k3-am65.dtsi                    |   4 +-
>  arch/arm/dts/k3-am654-base-board-u-boot.dtsi | 130 +++++
>  configs/am65x_evm_a53_defconfig              |   5 +
>  drivers/misc/misc-uclass.c                   |  25 +
>  drivers/net/ti/Kconfig                       |   8 +
>  drivers/net/ti/Makefile                      |   1 +
>  drivers/net/ti/icssg-prueth.c                | 525 +++++++++++++++++++
>  drivers/net/ti/icssg.h                       |  31 ++
>  drivers/net/ti/icssg_classifier.c            | 397 ++++++++++++++
>  drivers/remoteproc/Kconfig                   |  11 +
>  drivers/remoteproc/Makefile                  |   1 +
>  drivers/remoteproc/pru_rproc.c               | 384 ++++++++++++++
>  drivers/soc/ti/Kconfig                       |  13 +
>  drivers/soc/ti/Makefile                      |   1 +
>  drivers/soc/ti/pruss.c                       | 143 +++++
>  include/misc.h                               |   9 +
>  include/ti-pruss.h                           |  13 +
>  net/eth-uclass.c                             |   7 +-
>  19 files changed, 1916 insertions(+), 4 deletions(-)
>  create mode 100644 drivers/net/ti/icssg-prueth.c
>  create mode 100644 drivers/net/ti/icssg.h
>  create mode 100644 drivers/net/ti/icssg_classifier.c
>  create mode 100644 drivers/remoteproc/pru_rproc.c
>  create mode 100644 drivers/soc/ti/pruss.c
>  create mode 100644 include/ti-pruss.h
> 
> -- 
> 2.17.1
> 
> _______________________________________________
> U-Boot mailing list
> U-Boot@lists.denx.de
> https://lists.denx.de/listinfo/u-boot
Roger Quadros Aug. 7, 2019, 5:51 a.m. UTC | #2
Andreas,

On 06/08/2019 18:35, Andreas Dannenberg wrote:
> Keerthy,
> 
> On Tue, Aug 06, 2019 at 04:08:30PM +0530, Keerthy wrote:
>> The series adds support for icssg_prueth functionality
>> on u-boot. This series is based on top of master branch.
>> rproc init needs to be done from uboot command prompt.
>> The pru/rtu firmware loading is done by prueth driver soon after
>> config paramters are setup.
> 
> for everybody's benefit, where does this firmware come from so one can
> experiment with this patch series?
> 
From here
http://git.yoctoproject.org/cgit/cgit.cgi/meta-ti/tree/recipes-bsp/prueth-fw/prueth-fw-am65x_git.bb
http://git.yoctoproject.org/cgit/cgit.cgi/meta-ti/tree/recipes-bsp/emac-lld/emac-lld.inc

http://git.ti.com/keystone-rtos/emac-lld/trees/master/firmware/icss_dualmac/src

cheers,
-roger

> --
> Andreas Dannenberg
> Texas Instruments Inc
> 
>>
>> Currently only slice0/1 of icssg2 instance on am6-evm
>> is supported. i.e Both slices of icssg2 instance are supported.
>>
>> On u-boot prompt following commands to test icssg2_port 0 on am654-evm:
>>
>> setenv ethact pruss2_eth;  setenv serverip 172.24.191.45; fatload mmc 1 ${pru0loadaddr} am65x-pru0-prueth-fw.elf; fatload mmc 1 ${rtu0loadaddr} am65x-rtu0-prueth-fw.elf; rproc init; setenv autoload no; dhcp; tftp 0x82000000 Image; tftp 0x83000000 k3-am654-base-board.dtb; booti 0x82000000 - 0x83000000
>>
>> This tests tftp on prueth.
>>
>> Note: Uboot ethernet driver architecture supports once
>> instance per probe. So only one of the ports are supported
>> per instance. So DT of prueth node should have either ethernet-mii0
>> or ethernet-mii1. 
>>
>> Keerthy (14):
>>   net: eth-uclass: eth_get_dev based on SEQ_ALIAS instead of probe order
>>   net: eth-uclass: call stop only for active devices
>>   misc: uclass: Introduce misc_init_by_ofnode
>>   soc: ti: pruss: add a misc driver for PRUSS in TI SoCs
>>   remoteproc: pruss: add PRU remoteproc driver
>>   net: ti: icssg-prueth: Add ICSSG ethernet driver
>>   net: ti: icssg-prueth: Workaround to shutdown the prueth firmware
>>   arm: dts: k3-am65-main: Add msmc_ram node
>>   arm: dts: k3-am654-base-board-u-boot: Add icssg specific msmc_ram
>>     carveout nodes
>>   arm: dts: k3-am65-main: Add scm_conf node
>>   arm: dts: k3-am65-main: Add pruss nodes for ICSSG2
>>   arm64: dts: ti: am654-base-board: add ICSSG2 Ethernet support
>>   configs: am65x_evm_a53_defconfig: Enable CONFIG_REMOTEPROC_TI_PRU
>>   configs: am65x_evm_a53_defconfig: Enable CONFIG_CMD_REMOTEPROC
>>
>>  arch/arm/dts/k3-am65-main.dtsi               | 212 ++++++++
>>  arch/arm/dts/k3-am65.dtsi                    |   4 +-
>>  arch/arm/dts/k3-am654-base-board-u-boot.dtsi | 130 +++++
>>  configs/am65x_evm_a53_defconfig              |   5 +
>>  drivers/misc/misc-uclass.c                   |  25 +
>>  drivers/net/ti/Kconfig                       |   8 +
>>  drivers/net/ti/Makefile                      |   1 +
>>  drivers/net/ti/icssg-prueth.c                | 525 +++++++++++++++++++
>>  drivers/net/ti/icssg.h                       |  31 ++
>>  drivers/net/ti/icssg_classifier.c            | 397 ++++++++++++++
>>  drivers/remoteproc/Kconfig                   |  11 +
>>  drivers/remoteproc/Makefile                  |   1 +
>>  drivers/remoteproc/pru_rproc.c               | 384 ++++++++++++++
>>  drivers/soc/ti/Kconfig                       |  13 +
>>  drivers/soc/ti/Makefile                      |   1 +
>>  drivers/soc/ti/pruss.c                       | 143 +++++
>>  include/misc.h                               |   9 +
>>  include/ti-pruss.h                           |  13 +
>>  net/eth-uclass.c                             |   7 +-
>>  19 files changed, 1916 insertions(+), 4 deletions(-)
>>  create mode 100644 drivers/net/ti/icssg-prueth.c
>>  create mode 100644 drivers/net/ti/icssg.h
>>  create mode 100644 drivers/net/ti/icssg_classifier.c
>>  create mode 100644 drivers/remoteproc/pru_rproc.c
>>  create mode 100644 drivers/soc/ti/pruss.c
>>  create mode 100644 include/ti-pruss.h
>>
>> -- 
>> 2.17.1
>>
>> _______________________________________________
>> U-Boot mailing list
>> U-Boot@lists.denx.de
>> https://lists.denx.de/listinfo/u-boot
Roger Quadros Aug. 7, 2019, 5:54 a.m. UTC | #3
On 07/08/2019 08:51, Roger Quadros wrote:
> Andreas,
> 
> On 06/08/2019 18:35, Andreas Dannenberg wrote:
>> Keerthy,
>>
>> On Tue, Aug 06, 2019 at 04:08:30PM +0530, Keerthy wrote:
>>> The series adds support for icssg_prueth functionality
>>> on u-boot. This series is based on top of master branch.
>>> rproc init needs to be done from uboot command prompt.
>>> The pru/rtu firmware loading is done by prueth driver soon after
>>> config paramters are setup.
>>
>> for everybody's benefit, where does this firmware come from so one can
>> experiment with this patch series?
>>
> From here
> http://git.yoctoproject.org/cgit/cgit.cgi/meta-ti/tree/recipes-bsp/prueth-fw/prueth-fw-am65x_git.bb
> http://git.yoctoproject.org/cgit/cgit.cgi/meta-ti/tree/recipes-bsp/emac-lld/emac-lld.inc
> 
> http://git.ti.com/keystone-rtos/emac-lld/trees/master/firmware/icss_dualmac/src

Prebuilt firmware can be obtained from AM65 procSDK [1] rootfs at /lib/firmware/ti-pruss/am65x*.elf

[1] http://software-dl.ti.com/processor-sdk-linux/esd/AM65X/latest/index_FDS.html

cheers,
-roger

> 
>> --
>> Andreas Dannenberg
>> Texas Instruments Inc
>>
>>>
>>> Currently only slice0/1 of icssg2 instance on am6-evm
>>> is supported. i.e Both slices of icssg2 instance are supported.
>>>
>>> On u-boot prompt following commands to test icssg2_port 0 on am654-evm:
>>>
>>> setenv ethact pruss2_eth;  setenv serverip 172.24.191.45; fatload mmc 1 ${pru0loadaddr} am65x-pru0-prueth-fw.elf; fatload mmc 1 ${rtu0loadaddr} am65x-rtu0-prueth-fw.elf; rproc init; setenv autoload no; dhcp; tftp 0x82000000 Image; tftp 0x83000000 k3-am654-base-board.dtb; booti 0x82000000 - 0x83000000
>>>
>>> This tests tftp on prueth.
>>>
>>> Note: Uboot ethernet driver architecture supports once
>>> instance per probe. So only one of the ports are supported
>>> per instance. So DT of prueth node should have either ethernet-mii0
>>> or ethernet-mii1. 
>>>
>>> Keerthy (14):
>>>   net: eth-uclass: eth_get_dev based on SEQ_ALIAS instead of probe order
>>>   net: eth-uclass: call stop only for active devices
>>>   misc: uclass: Introduce misc_init_by_ofnode
>>>   soc: ti: pruss: add a misc driver for PRUSS in TI SoCs
>>>   remoteproc: pruss: add PRU remoteproc driver
>>>   net: ti: icssg-prueth: Add ICSSG ethernet driver
>>>   net: ti: icssg-prueth: Workaround to shutdown the prueth firmware
>>>   arm: dts: k3-am65-main: Add msmc_ram node
>>>   arm: dts: k3-am654-base-board-u-boot: Add icssg specific msmc_ram
>>>     carveout nodes
>>>   arm: dts: k3-am65-main: Add scm_conf node
>>>   arm: dts: k3-am65-main: Add pruss nodes for ICSSG2
>>>   arm64: dts: ti: am654-base-board: add ICSSG2 Ethernet support
>>>   configs: am65x_evm_a53_defconfig: Enable CONFIG_REMOTEPROC_TI_PRU
>>>   configs: am65x_evm_a53_defconfig: Enable CONFIG_CMD_REMOTEPROC
>>>
>>>  arch/arm/dts/k3-am65-main.dtsi               | 212 ++++++++
>>>  arch/arm/dts/k3-am65.dtsi                    |   4 +-
>>>  arch/arm/dts/k3-am654-base-board-u-boot.dtsi | 130 +++++
>>>  configs/am65x_evm_a53_defconfig              |   5 +
>>>  drivers/misc/misc-uclass.c                   |  25 +
>>>  drivers/net/ti/Kconfig                       |   8 +
>>>  drivers/net/ti/Makefile                      |   1 +
>>>  drivers/net/ti/icssg-prueth.c                | 525 +++++++++++++++++++
>>>  drivers/net/ti/icssg.h                       |  31 ++
>>>  drivers/net/ti/icssg_classifier.c            | 397 ++++++++++++++
>>>  drivers/remoteproc/Kconfig                   |  11 +
>>>  drivers/remoteproc/Makefile                  |   1 +
>>>  drivers/remoteproc/pru_rproc.c               | 384 ++++++++++++++
>>>  drivers/soc/ti/Kconfig                       |  13 +
>>>  drivers/soc/ti/Makefile                      |   1 +
>>>  drivers/soc/ti/pruss.c                       | 143 +++++
>>>  include/misc.h                               |   9 +
>>>  include/ti-pruss.h                           |  13 +
>>>  net/eth-uclass.c                             |   7 +-
>>>  19 files changed, 1916 insertions(+), 4 deletions(-)
>>>  create mode 100644 drivers/net/ti/icssg-prueth.c
>>>  create mode 100644 drivers/net/ti/icssg.h
>>>  create mode 100644 drivers/net/ti/icssg_classifier.c
>>>  create mode 100644 drivers/remoteproc/pru_rproc.c
>>>  create mode 100644 drivers/soc/ti/pruss.c
>>>  create mode 100644 include/ti-pruss.h
>>>
>>> -- 
>>> 2.17.1
>>>
>>> _______________________________________________
>>> U-Boot mailing list
>>> U-Boot@lists.denx.de
>>> https://lists.denx.de/listinfo/u-boot
>