[PATCH v4 4/5] net: ti: icssg: Add ICSSG ethernet driver

Ravi Gunasekaran r-gunasekaran at ti.com
Wed Apr 3 08:04:20 CEST 2024



On 3/27/24 10:58 AM, MD Danish Anwar wrote:
> This is the PRUSS Ethernet driver for TI AM654 Sr2.0 and laterSoCs with

s/Sr2.0/SR2.0
s/laterSoCs/later SoCs

> the ICSSG PRU Sub-system running EMAC firmware. ICSSG Subsystem supports
> two slices per instance. This driver caters to both slices / ports of
> the icssg subsystem.
> 
> Since it is not possible for Ethernet driver to register more than one
> port for a given instance, this patch introduces top level PRUETH as
> UCLASS_MISC and binds UCLASS_ETH to individual ports in order to support
> bringing up more than one Ethernet interface in U-Boot.
> 
> Since top level driver is UCLASS_MISC, board files would need to
> instantiate the driver explicitly.
> 
> Signed-off-by: MD Danish Anwar <danishanwar at ti.com>
> ---
>  arch/arm/mach-k3/common.c     |  11 +
>  drivers/net/ti/Kconfig        |  13 +
>  drivers/net/ti/Makefile       |   1 +
>  drivers/net/ti/icssg_prueth.c | 685 ++++++++++++++++++++++++++++++++++
>  drivers/net/ti/icssg_prueth.h |   3 +
>  5 files changed, 713 insertions(+)
>  create mode 100644 drivers/net/ti/icssg_prueth.c
> 

[...]

> @@ -7,3 +7,4 @@ obj-$(CONFIG_DRIVER_TI_EMAC) += davinci_emac.o
>  obj-$(CONFIG_DRIVER_TI_KEYSTONE_NET) += keystone_net.o cpsw_mdio.o
>  obj-$(CONFIG_TI_AM65_CPSW_NUSS) += am65-cpsw-nuss.o
>  obj-$(CONFIG_MDIO_TI_CPSW) += cpsw_mdio.o
> +obj-$(CONFIG_TI_ICSSG_PRUETH) += icssg_prueth.o icssg_classifier.o icssg_config.o icssg_queues.o
> diff --git a/drivers/net/ti/icssg_prueth.c b/drivers/net/ti/icssg_prueth.c
> new file mode 100644
> index 0000000000..d22a56c217
> --- /dev/null
> +++ b/drivers/net/ti/icssg_prueth.c
> @@ -0,0 +1,685 @@
> +// SPDX-License-Identifier: GPL-2.0+
> +/*
> + * Texas Instruments K3 AM65 PRU Ethernet Driver
> + *
> + * Copyright (C) 2018-2024, Texas Instruments, Incorporated

URL is missing.

> + *
> + */
> +
> +#include <asm/io.h>
> +#include <asm/processor.h>
> +#include <clk.h>
> +#include <dm/lists.h>
> +#include <dm/device.h>
> +#include <dma-uclass.h>
> +#include <dm/of_access.h>
> +#include <dm/pinctrl.h>
> +#include <fs_loader.h>
> +#include <miiphy.h>
> +#include <net.h>
> +#include <phy.h>
> +#include <power-domain.h>
> +#include <linux/soc/ti/ti-udma.h>
> +#include <regmap.h>
> +#include <remoteproc.h>
> +#include <syscon.h>
> +#include <soc.h>
> +#include <linux/pruss_driver.h>
> +#include <dm/device_compat.h>
> +
> +#include "icssg_prueth.h"
> +#include "icss_mii_rt.h"
> +
> +#define ICSS_SLICE0     0
> +#define ICSS_SLICE1     1
> +
> +#ifdef PKTSIZE_ALIGN
> +#define UDMA_RX_BUF_SIZE PKTSIZE_ALIGN
> +#else
> +#define UDMA_RX_BUF_SIZE ALIGN(1522, ARCH_DMA_MINALIGN)

PKTSIZE is defined in include/net.h as below
#define PKTSIZE                 1522                                                                    
Please use the macro.

> +#endif
> +

[...]

-- 
Regards,
Ravi


More information about the U-Boot mailing list