[RFC PATCH 00/16] Introduce ICSSG Ethernet driver

MD Danish Anwar danishanwar at ti.com
Tue Dec 19 11:30:18 CET 2023


Hi All,

Please ignore this thread. Some mails seems to have been duplicated.
I will post another thread soon. Pls ignore this.
Sorry for the inconvenience.

On 19/12/23 3:41 pm, MD Danish Anwar wrote:
> Introduce ICSSG PRUETH support in uboot. The ICSSG driver is used in TI
> AM654 SR2.0.
> 
> The ICSSG PRU Sub-system runs on EMAC firmware. This series Introduces
> support for ICSSG driver in uboot. This series also adds the driver's
> dependencies.
> 
> The ICSSG2 node is added in device tree overlay so that it remains in
> sync with linux kernel.
> 
> The series introduces device tree and config changes and AM65x
> to enable ICSSG driver. The series also enables SPL_LOAD_FIT_APPLY_OVERLAY
> for AM65x in order to load overlay over spl.
> 
> This series has been tested on AM65x SR2.0, and the ICSSG interface is
> able to ping / dhcp and boot kernel using tftp in uboot.
> 
> To use ICSSG2 ethernet, the ICSSG firmware needs to be loaded to PRU RPROC
> cores and RPROC cores need to be booted with the firmware. This step is
> done inside driver in kernel as kernel supports APIs like
> rproc_set_firmware() and rproc_fw_boot(). But as u-boot doesn't have these
> APIs, the same needs to be done via u-boot cmds.
> 
> To make sure icssg-eth works we need to do below steps.
> 
> 1. Initialize rproc cores i.e. rproc_init()
> 2. Load $firmware_file from partition '1:2' (root) on device (mmc in this
>    example)
> 3. Load the firmware file to rproc cores passing. i.e. rproc_load()
>    taking rproc_id, loadaddr and file size as arguments.
> 4. Start rproc cores. i.e. rproc_start() taking rproc_id as arguments
> 
> The above steps are done by running the below commands at u-boot prompt.
> 
> => setenv start_icssg2 'rproc start 14; rproc start 15; rproc start 16; rproc start 17; rproc start 18; rproc start 19'
> => setenv stop_icssg2 'rproc stop 14; rproc stop 15; rproc stop 16; rproc stop 17; rproc stop 18; rproc stop 19'
> => setenv firmware_dir '/lib/firmware/ti-pruss'
> => setenv get_firmware_mmc 'load mmc ${bootpart} ${loadaddr} ${firmware_dir}/${firmware_file}'
> 
> => setenv init_icssg2 'setenv ethact icssg2-eth; setenv autoload no; rproc init; setenv loadaddr 0x80000000; \
>     setenv firmware_file am65x-sr2-pru0-prueth-fw.elf; run get_firmware_mmc;  rproc load 14 0x80000000 ${filesize}; \
>     setenv loadaddr 0x89000000; setenv firmware_file am65x-sr2-rtu0-prueth-fw.elf; run get_firmware_mmc; rproc load 15 0x89000000 ${filesize}; \
>     setenv loadaddr 0x90000000; setenv firmware_file am65x-sr2-txpru0-prueth-fw.elf; run get_firmware_mmc; rproc load 16 0x90000000 ${filesize}; \
>     setenv loadaddr 0x80000000; setenv firmware_file am65x-sr2-pru1-prueth-fw.elf; run get_firmware_mmc; rproc load 17 0x80000000 ${filesize}; \
>     setenv loadaddr 0x89000000; setenv firmware_file am65x-sr2-rtu1-prueth-fw.elf; run get_firmware_mmc; rproc load 18 0x89000000 ${filesize}; \
>     setenv loadaddr 0x90000000; setenv firmware_file am65x-sr2-txpru1-prueth-fw.elf; run get_firmware_mmc; rproc load 19 0x90000000 ${filesize}; \
>     run start_icssg2;'
> 
> => run init_icssg2
> => dhcp
> k3-navss-ringacc ringacc at 3c000000: Ring Accelerator probed rings:818, gp-rings[304,100] sci-dev-id:187
> k3-navss-ringacc ringacc at 3c000000: dma-ring-reset-quirk: disabled
> prueth icssg2-eth: K3 ICSSG: rflow_id_base: 8, chn_name = rx0
> link up on port 0, speed 1000, full duplex
> BOOTP broadcast 1
> BOOTP broadcast 2
> BOOTP broadcast 3
> DHCP client bound to address 192.168.4.58 (1020 ms)
> 
> Thanks and Regards,
> MD Danish Anwar
> 
> MD Danish Anwar (16):
>   net: ti: icssg: Add Firmware Interface for ICSSG Ethernet driver.
>   net: ti: icssg: Add Firmware config and classification APIs.
>   net: ti: icssg: Add icssg queues APIs and macros
>   net: ti: icssg: Add ICSSG ethernet driver
>   net: ti: icssg: Add support sending FDB command to update rx_flow_id
>   net: ti: icssg: Enforce pinctrl state on the MDIO child node
>   arm: dts: k3-am65: Add additional regs for DMA components
>   arm: dts: k3-am65: Add cfg reg region to ringacc node
>   arm: dts: k3-am65-main: Add ICSSG IEP nodes
>   arm: dts: k3-am654-base-board: Add ICSSG2 Ethernet support
>   arm: dts: k3-am65x-binman: Add ICSSG2 overlay and configuration
>   configs: am65x_evm_a53: Enable ICSSG Driver
>   configs: am65x_evm_a53_defconfig: add SPL_LOAD_FIT_APPLY_OVERLAY
>   tools/fdtgrep: Include __symbols__ table
>   board: ti: am65x: Add check for k3-am654-icssg2 in
>     board_fit_config_match()
>   Revert "dm: core: Report bootph-pre-ram/sram node as pre-reloc after
>     relocation"
> 
>  arch/arm/dts/Makefile             |   3 +-
>  arch/arm/dts/k3-am65-main.dtsi    |  49 ++-
>  arch/arm/dts/k3-am65-mcu.dtsi     |  13 +-
>  arch/arm/dts/k3-am654-icssg2.dtso | 145 +++++++
>  arch/arm/dts/k3-am65x-binman.dtsi |  85 ++++
>  board/ti/am65x/evm.c              |  11 +-
>  configs/am65x_evm_a53_defconfig   |   4 +
>  drivers/core/ofnode.c             |   2 +-
>  drivers/net/ti/Kconfig            |   9 +
>  drivers/net/ti/Makefile           |   1 +
>  drivers/net/ti/icss_mii_rt.h      | 192 +++++++++
>  drivers/net/ti/icssg_classifier.c | 376 +++++++++++++++++
>  drivers/net/ti/icssg_config.c     | 469 +++++++++++++++++++++
>  drivers/net/ti/icssg_config.h     | 195 +++++++++
>  drivers/net/ti/icssg_prueth.c     | 654 ++++++++++++++++++++++++++++++
>  drivers/net/ti/icssg_prueth.h     |  89 ++++
>  drivers/net/ti/icssg_queues.c     |  51 +++
>  drivers/net/ti/icssg_switch_map.h | 209 ++++++++++
>  include/dm/ofnode.h               |   8 +-
>  tools/fdtgrep.c                   |   8 +
>  20 files changed, 2555 insertions(+), 18 deletions(-)
>  create mode 100644 arch/arm/dts/k3-am654-icssg2.dtso
>  create mode 100644 drivers/net/ti/icss_mii_rt.h
>  create mode 100644 drivers/net/ti/icssg_classifier.c
>  create mode 100644 drivers/net/ti/icssg_config.c
>  create mode 100644 drivers/net/ti/icssg_config.h
>  create mode 100644 drivers/net/ti/icssg_prueth.c
>  create mode 100644 drivers/net/ti/icssg_prueth.h
>  create mode 100644 drivers/net/ti/icssg_queues.c
>  create mode 100644 drivers/net/ti/icssg_switch_map.h
> 
> base:commit: a6f86132e30a407c7f96461df53c62fbe52e2b54

-- 
Thanks and Regards,
Danish


More information about the U-Boot mailing list