Commit aa05346d authored by David S. Miller's avatar David S. Miller
Browse files

Merge branch 'iep-drver-timestamping-support'

MD Danish Anwar says:

====================
Introduce IEP driver and packet timestamping support

This series introduces Industrial Ethernet Peripheral (IEP) driver to
support timestamping of ethernet packets and thus support PTP and PPS
for PRU ICSSG ethernet ports.

This series also adds 10M full duplex support for ICSSG ethernet driver.

There are two IEP instances. IEP0 is used for packet timestamping while IEP1
is used for 10M full duplex support.

This is v7 of the series [v1]. It addresses comments made on [v6].
This series is based on linux-next(#next-20230823).

Changes from v6 to v7:
*) Dropped blank line in example section of patch 1.
*) Patch 1 previously had three examples, removed two examples and kept only
   one example as asked by Krzysztof.
*) Added Jacob Keller's RB tag in patch 5.
*) Dropped Roger's RB tags from the patches that he has authored (Patch 3 and 4)

Changes from v5 to v6:
*) Added description of IEP in commit messages of patch 2 as asked by Rob.
*) Described the items constraints properly for iep property in patch 2 as
   asked by Rob.
*) Added Roger and Simon's RB tags.

Changes from v4 to v5:
*) Added comments on why we are using readl / writel instead of regmap_read()
   / write() in icss_iep_gettime() / settime() APIs as asked by Roger.
*) Added Conor's RB tag in patch 1 and 2.

Change from v3 to v4:
*) Changed compatible in iep dt bindings. Now each SoC has their own compatible
   in the binding with "ti,am654-icss-iep" as a fallback as asked by Conor.
*) Addressed Andew's comments and removed helper APIs icss_iep_readl() /
   writel(). Now the settime/gettime APIs directly use readl() / writel().
*) Moved selecting TI_ICSS_IEP in Kconfig from patch 3 to patch 4.
*) Removed forward declaration of icss_iep_of_match in patch 3.
*) Replaced use of of_device_get_match_data() to device_get_match_data() in
   patch 3.
*) Removed of_match_ptr() from patch 3 as it is not needed.

Changes from v2 to v3:
*) Addressed Roger's comment and moved IEP1 related changes in patch 5.
*) Addressed Roger's comment and moved icss_iep.c / .h changes from patch 4
   to patch 3.
*) Added support for multiple timestamping in patch 4 as asked by Roger.
*) Addressed Andrew's comment and added comment in case SPEED_10 in
   icssg_config_ipg() API.
*) Kept compatible as "ti,am654-icss-iep" for all TI K3 SoCs

Changes from v1 to v2:
*) Addressed Simon's comment to fix reverse xmas tree declaration. Some APIs
   in patch 3 and 4 were not following reverse xmas tree variable declaration.
   Fixed it in this version.
*) Addressed Conor's comments and removed unsupported SoCs from compatible
   comment in patch 1.
*) Addded patch 2 which was not part of v1. Patch 2, adds IEP node to dt
   bindings for ICSSG.

[v1] https://lore.kernel.org/all/20230803110153.3309577-1-danishanwar@ti.com/
[v2] https://lore.kernel.org/all/20230807110048.2611456-1-danishanwar@ti.com/
[v3] https://lore.kernel.org/all/20230809114906.21866-1-danishanwar@ti.com/
[v4] https://lore.kernel.org/all/20230814100847.3531480-1-danishanwar@ti.com/
[v5] https://lore.kernel.org/all/20230817114527.1585631-1-danishanwar@ti.com/
[v6] https://lore.kernel.org/all/20230823113254.292603-1-danishanwar@ti.com/


====================

Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parents 2cc88bbc 443a2367
Loading
Loading
Loading
Loading
+45 −0
Original line number Diff line number Diff line
# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
%YAML 1.2
---
$id: http://devicetree.org/schemas/net/ti,icss-iep.yaml#
$schema: http://devicetree.org/meta-schemas/core.yaml#

title: Texas Instruments ICSS Industrial Ethernet Peripheral (IEP) module

maintainers:
  - Md Danish Anwar <danishanwar@ti.com>

properties:
  compatible:
    oneOf:
      - items:
          - enum:
              - ti,am642-icss-iep
              - ti,j721e-icss-iep
          - const: ti,am654-icss-iep

      - const: ti,am654-icss-iep


  reg:
    maxItems: 1

  clocks:
    maxItems: 1
    description: phandle to the IEP source clock

required:
  - compatible
  - reg
  - clocks

additionalProperties: false

examples:
  - |
    /* AM65x */
    icssg0_iep0: iep@2e000 {
        compatible = "ti,am654-icss-iep";
        reg = <0x2e000 0x1000>;
        clocks = <&icssg0_iepclk_mux>;
    };
+9 −0
Original line number Diff line number Diff line
@@ -52,6 +52,14 @@ properties:
    description:
      phandle to MII_RT module's syscon regmap

  ti,iep:
    $ref: /schemas/types.yaml#/definitions/phandle-array
    maxItems: 2
    items:
      maxItems: 1
    description:
      phandle to IEP (Industrial Ethernet Peripheral) for ICSSG

  interrupts:
    maxItems: 2
    description:
@@ -155,6 +163,7 @@ examples:
                    "tx1-0", "tx1-1", "tx1-2", "tx1-3",
                    "rx0", "rx1";
        ti,mii-g-rt = <&icssg2_mii_g_rt>;
        ti,iep = <&icssg2_iep0>, <&icssg2_iep1>;
        interrupt-parent = <&icssg2_intc>;
        interrupts = <24 0 2>, <25 1 3>;
        interrupt-names = "tx_ts0", "tx_ts1";
+12 −0
Original line number Diff line number Diff line
@@ -186,6 +186,7 @@ config CPMAC
config TI_ICSSG_PRUETH
	tristate "TI Gigabit PRU Ethernet driver"
	select PHYLIB
	select TI_ICSS_IEP
	depends on PRU_REMOTEPROC
	depends on ARCH_K3 && OF && TI_K3_UDMA_GLUE_LAYER
	help
@@ -196,4 +197,15 @@ config TI_ICSSG_PRUETH
	  to support the Ethernet operation. Currently, it supports Ethernet
	  with 1G and 100M link speed.

config TI_ICSS_IEP
	tristate "TI PRU ICSS IEP driver"
	depends on TI_PRUSS
	default TI_PRUSS
	help
	  This driver enables support for the PRU-ICSS Industrial Ethernet
	  Peripheral within a PRU-ICSS subsystem present on various TI SoCs.

	  To compile this driver as a module, choose M here. The module
	  will be called icss_iep.

endif # NET_VENDOR_TI
+1 −0
Original line number Diff line number Diff line
@@ -38,3 +38,4 @@ icssg-prueth-y := k3-cppi-desc-pool.o \
		  icssg/icssg_mii_cfg.o \
		  icssg/icssg_stats.o \
		  icssg/icssg_ethtool.o
obj-$(CONFIG_TI_ICSS_IEP) += icssg/icss_iep.o
+965 −0

File added.

Preview size limit exceeded, changes collapsed.

Loading