1
0
Fork 0
Commit Graph

21 Commits (redonkable)

Author SHA1 Message Date
Xiaoliang Yang 68430e200e LF-457: ocelot: tsn: clean preempt interrupt status
The INTB interrupt is used both for 1588 interrupt and preemption status
change interrupt on each port. So clean preempt status interrupt in IRQ
handle function. Without handling it, driver may get interrupt storm.

Signed-off-by: Xiaoliang Yang <xiaoliang.yang_1@nxp.com>
Reviewed-by: Po Liu <Po.Liu@nxp.com>
(cherry picked from commit 0df3452eb1dec497ed75a7f804142e30972601b3)
2020-02-26 04:17:46 +08:00
Vladimir Oltean 30c5d071ab net: dsa: felix: Don't error out on disabled ports with no phy-mode
The felix_parse_ports_node function was tested only on device trees
where all ports were enabled. Fix this check so that the driver
continues to probe only with the ports where status is not "disabled",
as expected.

Fixes: bdeced75b1 ("net: dsa: felix: Add PCS operations for PHYLINK")
Signed-off-by: Vladimir Oltean <vladimir.oltean@nxp.com>
Reviewed-by: Florian Fainelli <f.fainelli@gmail.com>
Reviewed-by: Andrew Lunn <andrew@lunn.ch>
Signed-off-by: David S. Miller <davem@davemloft.net>
(cherry picked from commit 9b9a8e9d4e65332e5b9679401d54a33cffc59b50)
2020-02-26 04:17:44 +08:00
Alex Marginean da7b2dcc47 drivers: net: dsa: felix: don't restart PCS SGMII AN if not needed
Some PHYs like VSC8234 don't like it when AN restarts on their system side
and they restart line side AN too, going into an endless link up/down loop.
Don't restart PCS AN if link is up already.

Suggested-by: Vladimir Oltean <vladimir.oltean@nxp.com>
Signed-off-by: Alex Marginean <alexandru.marginean@nxp.com>
(cherry picked from commit b44d30035850423fda60c932e866c70a01bd1250)
2020-02-26 04:17:44 +08:00
Alex Marginean 1839242ad3 drivers: net: dsa: felix: Handle PAUSE Rx regardless of AN result
Flow control is used with 2500Base-X and AQR PHYs to do rate adapation
between line side 100/1000 links and MAC running at 2.5G.  This is
independent of the flow control configuration settled on line side though
AN.  In general allowing MAC to handle flow control even though AN did
not enable it explicitly should not be a problem, so the patch enables
it in all cases.

Signed-off-by: Alex Marginean <alexandru.marginean@nxp.com>
(cherry picked from commit 3d5fc94dc664e426c380092c13ee23493af22fdd)
2020-02-26 04:17:39 +08:00
Alex Marginean 0f89f7f838 drivers: net: dsa: felix: Allow PHY to AN 10/100/1000 with 2500 serdes link
If the serdes link is set to 2500 using interfce type 2500base-X, lower
link speeds over on the line side should still be supported.
Rate adaptation is done out of band, in our case using AQR PHYs this is
done using flow control.

Signed-off-by: Alex Marginean <alexandru.marginean@nxp.com>
(cherry picked from commit 4685de1192e3453d3233f9417f3c05810c936020)
2020-02-26 04:17:39 +08:00
Alex Marginean 9c284f5b8c drivers: net: felix: set link based on BMSR, not LPA
At least some PHYs don't advertise link up during system side AN, rely on
local indication from internal PHYs for link state.

Signed-off-by: Alex Marginean <alexandru.marginean@nxp.com>
(cherry picked from commit bfd807a70e76731d7e448abbee13bad5305c2ccd)
2020-02-26 04:17:38 +08:00
Vladimir Oltean e13ac32f14 net: dsa: felix: Add PCS operations for PHYLINK
Layerscape SoCs traditionally expose the SerDes configuration/status for
Ethernet protocols (PCS for SGMII/USXGMII/10GBase-R etc etc) in a register
format that is compatible with clause 22 or clause 45 (depending on
SerDes protocol). Each MAC has its own internal MDIO bus on which there
is one or more of these PCS's, responding to commands at a configurable
PHY address. The per-port internal MDIO bus (which is just for PCSs) is
totally separate and has nothing to do with the dedicated external MDIO
controller (which is just for PHYs), but the register map for the MDIO
controller is the same.

The VSC9959 (Felix) switch instantiated in the LS1028A is integrated
in hardware with the ENETC PCS of its DSA master, and reuses its MDIO
controller driver, so Felix has been made to depend on it in Kconfig.

 +------------------------------------------------------------------------+
 |                   +--------+ GMII (typically disabled via RCW)         |
 | ENETC PCI         |  ENETC |--------------------------+                |
 | Root Complex      | port 3 |-----------------------+  |                |
 | Integrated        +--------+                       |  |                |
 | Endpoint                                           |  |                |
 |                   +--------+ 2.5G GMII             |  |                |
 |                   |  ENETC |--------------+        |  |                |
 |                   | port 2 |-----------+  |        |  |                |
 |                   +--------+           |  |        |  |                |
 |                                     +--------+  +--------+             |
 |                                     |  Felix |  |  Felix |             |
 |                                     | port 4 |  | port 5 |             |
 |                                     +--------+  +--------+             |
 |                                                                        |
 | +--------+  +--------+  +--------+  +--------+  +--------+  +--------+ |
 | |  ENETC |  |  ENETC |  |  Felix |  |  Felix |  |  Felix |  |  Felix | |
 | | port 0 |  | port 1 |  | port 0 |  | port 1 |  | port 2 |  | port 3 | |
 +------------------------------------------------------------------------+
 |    ||||  SerDes |          ||||        ||||        ||||        ||||    |
 | +--------+block |       +--------------------------------------------+ |
 | |  ENETC |      |       |       ENETC port 2 internal MDIO bus       | |
 | | port 0 |      |       |  PCS         PCS          PCS        PCS   | |
 | |   PCS  |      |       |   0           1            2          3    | |
 +-----------------|------------------------------------------------------+
        v          v           v           v            v          v
     SGMII/      RGMII    QSGMII/QSXGMII/4xSGMII/4x1000Base-X/4x2500Base-X
    USXGMII/   (bypasses
  1000Base-X/   SerDes)
  2500Base-X

In the LS1028A SoC described above, the VSC9959 Felix switch is PF5 of
the ENETC root complex, and has 2 BARs:
- BAR 4: the switch's effective registers
- BAR 0: the MDIO controller register map lended from ENETC port 2
         (PF2), for accessing its associated PCS's.

This explanation is necessary because the patch does some renaming
"pci_bar" -> "switch_pci_bar" for clarity, which would otherwise appear
a bit obtuse.

The fact that the internal MDIO bus is "borrowed" is relevant because
the register map is found in PF5 (the switch) but it triggers an access
fault if PF2 (the ENETC DSA master) is not enabled. This is not treated
in any way (and I don't think it can be treated).

All of this is so SoC-specific, that it was contained as much as
possible in the platform-integration file felix_vsc9959.c.

We need to parse and pre-validate the device tree because of 2 reasons:
- The PHY mode (SerDes protocol) cannot change at runtime due to SoC
  design.
- There is a circular dependency in that we need to know what clause the
  PCS speaks in order to find it on the internal MDIO bus. But the
  clause of the PCS depends on what phy-mode it is configured for.

The goal of this patch is to make steps towards removing the bootloader
dependency for SGMII PCS pre-configuration, as well as to add support
for monitoring the in-band SGMII AN between the PCS and the system-side
link partner (PHY or other MAC).

In practice the bootloader dependency is not completely removed. U-Boot
pre-programs the PHY address at which each PCS can be found on the
internal MDIO bus (MDEV_PORT). This is needed because the PCS of each
port has the same out-of-reset PHY address of zero. The SerDes register
for changing MDEV_PORT is pretty deep in the SoC (outside the addresses
of the ENETC PCI BARs) and therefore inaccessible to us from here.

Felix VSC9959 and Ocelot VSC7514 are integrated very differently in
their respective SoCs, and for that reason Felix does not use the Ocelot
core library for PHYLINK. On one hand we don't want to impose the
fixed phy-mode limitation to Ocelot, and on the other hand Felix doesn't
need to force the MAC link speed the way Ocelot does, since the MAC is
connected to the PCS through a fixed GMII, and the PCS is the one who
does the rate adaptation at lower link speeds, which the MAC does not
even need to know about. In fact changing the GMII speed for Felix
irrecoverably breaks transmission through that port until a reset.

The pair with ENETC port 3 and Felix port 5 is optional and doesn't
support tagging. When we enable it, swp5 is a regular slave port, albeit
an internal one. The trouble is that it doesn't work, and that is
because the DSA PHYLIB adaptation layer doesn't treat fixed-link slave
ports. So that is yet another reason for wanting to convert Felix to the
native PHYLINK API.

Signed-off-by: Vladimir Oltean <vladimir.oltean@nxp.com>

Conflicts:
	drivers/net/dsa/ocelot/felix.c

with the upstream API change for of_get_phy_mode() introduced in
0c65b2b90d ("net: of_get_phy_mode: Change API to solve int/unit
warnings") and merged in v5.4-rc5.

(cherry picked from commit f5e1673da5a5a1d899b383534067bf67cc3d74d5)
2020-02-26 04:17:37 +08:00
Arnd Bergmann 5c2b81e6b5 net: dsa: ocelot: add NET_VENDOR_MICROSEMI dependency
Selecting MSCC_OCELOT_SWITCH is not possible when NET_VENDOR_MICROSEMI
is disabled:

WARNING: unmet direct dependencies detected for MSCC_OCELOT_SWITCH
  Depends on [n]: NETDEVICES [=y] && ETHERNET [=n] && NET_VENDOR_MICROSEMI [=n] && NET_SWITCHDEV [=y] && HAS_IOMEM [=y]
  Selected by [m]:
  - NET_DSA_MSCC_FELIX [=m] && NETDEVICES [=y] && HAVE_NET_DSA [=y] && NET_DSA [=y] && PCI [=y]

Add a Kconfig dependency on NET_VENDOR_MICROSEMI, which also implies
CONFIG_NETDEVICES.

Depending on a vendor config violates menuconfig locality for the DSA
driver, but is the smallest compromise since all other solutions are
much more complicated (see [0]).

https://www.spinics.net/lists/netdev/msg618808.html

Fixes: 5605194877 ("net: dsa: ocelot: add driver for Felix switch family")
Signed-off-by: Arnd Bergmann <arnd@arndb.de>
Signed-off-by: Mao Wenan <maowenan@huawei.com>
Signed-off-by: Vladimir Oltean <vladimir.oltean@nxp.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
(cherry picked from commit dc76773cc3103811cc4ea0933dac32ab9028e3ca)
2020-02-26 04:17:35 +08:00
Vladimir Oltean b3a6ebfef6 Revert "net: mscc: ocelot: do not force Felix MACs at lower speeds than gigabit"
This reverts commit f3ebad1269.

Signed-off-by: Vladimir Oltean <vladimir.oltean@nxp.com>
(cherry picked from commit 7a7928a5246b0bd1c44c6a015d8925fb576020ac)
2020-02-26 04:17:34 +08:00
Vladimir Oltean 5ee2429187 Revert "net: mscc: ocelot: convert to PHYLINK"
This reverts commit e51cc023c3.

Signed-off-by: Vladimir Oltean <vladimir.oltean@nxp.com>
(cherry picked from commit 2f4ee70a6f7b4fb56aae5d782955217a5c0dc5a9)
2020-02-26 04:17:33 +08:00
Vladimir Oltean a14c11801d Revert "net: dsa: felix: Add PCS operations for PHYLINK"
This reverts commit 1082a3ef9e.

Signed-off-by: Vladimir Oltean <vladimir.oltean@nxp.com>
(cherry picked from commit 0a16d9e73b4e1093b9460d42e74148f1d82612d9)
2020-02-26 04:17:33 +08:00
Claudiu Manoil f31f59f101 net: dsa: felix: Fix probing allocation and cleanup path
dsa_switch_alloc() uses managed (devm_alloc) allocation
to alloc 'ds'.  kfree()-ing 'ds' results in memory corruption.
kfree(ds) seems harmless on the error path, however for this
particular device, dsa_register_swtich() deffers probing to
allow the enetc driver to probe the master port first.
This results in kfree(ds) being called during the first
probing attempt of felix, followed by a NULL poiter access
crash during enetc driver probing (when accessing its net_device).

This patch fixes following crash (triggerred in the enetc driver by
the probing routine of the felix driver):

[    3.502254] Unable to handle kernel NULL pointer dereference at virtual address 0000000000000000
[    3.511073] Mem abort info:
[    3.513874]   ESR = 0x96000044
[    3.516936]   EC = 0x25: DABT (current EL), IL = 32 bits
[    3.522266]   SET = 0, FnV = 0
[    3.525327]   EA = 0, S1PTW = 0
[    3.528476] Data abort info:
[    3.531359]   ISV = 0, ISS = 0x00000044
[    3.535205]   CM = 0, WnR = 1
[    3.538182] user pgtable: 4k pages, 48-bit VAs, pgdp=00000020f612d000
[    3.544645] [0000000000000000] pgd=0000000000000000
[    3.549542] Internal error: Oops: 96000044 [#1] PREEMPT SMP
[    3.555128] Modules linked in:
[    3.558189] CPU: 0 PID: 1 Comm: swapper/0 Not tainted 5.4.0-03552-gfa6e1cd69f80 #1
[    3.565781] Hardware name: LS1028A RDB Board (DT)
[    3.570496] pstate: a0000005 (NzCv daif -PAN -UAO)
[    3.575303] pc : enetc_pf_probe+0x784/0xba8
[    3.579495] lr : enetc_pf_probe+0x6e8/0xba8
[    3.583686] sp : ffff80001002ba90
[    3.587005] x29: ffff80001002ba90 x28: ffff002076130c08
[    3.592331] x27: 0000000000000002 x26: ffff002076130c80
[    3.597657] x25: ffff002076130c00 x24: ffff002076130c80
[    3.602982] x23: ffffb3f2ab0ec000 x22: ffff0020760d7840
[    3.608307] x21: ffff0020760d7000 x20: ffff002076130c00
[    3.613632] x19: ffff800010850000 x18: ffffffffffffffff
[    3.618957] x17: 000000007dee1586 x16: 00000000cb746ba4
[    3.624282] x15: ffffb3f2abce9908 x14: 0000000000000000
[    3.629608] x13: 0000000000000101 x12: 0000000000010000
[    3.634933] x11: 00000000ffffffff x10: ffff4c2dd0136000
[    3.640257] x9 : 0000000000000000 x8 : ffff002076122000
[    3.645582] x7 : 0000000000000000 x6 : 000000000000003f
[    3.650908] x5 : 0000000000000040 x4 : 0000000000000001
[    3.656234] x3 : ffff800010850000 x2 : ffffb3f2ab0ed868
[    3.661560] x1 : 0000000000000000 x0 : 00000000051ca556
[    3.666886] Call trace:
[    3.669333]  enetc_pf_probe+0x784/0xba8
[    3.673178]  local_pci_probe+0x3c/0xa0
[    3.676935]  pci_device_probe+0x128/0x1c0
[    3.680954]  really_probe+0x108/0x348
[    3.684623]  driver_probe_device+0x58/0x100
[    3.688815]  device_driver_attach+0x6c/0x90
[    3.693006]  __driver_attach+0x84/0xc8
[    3.696762]  bus_for_each_dev+0x74/0xc8
[    3.700605]  driver_attach+0x20/0x28
[    3.704186]  bus_add_driver+0x148/0x1f0
[    3.708029]  driver_register+0x60/0x110
[    3.711872]  __pci_register_driver+0x40/0x48
[    3.716153]  enetc_pf_driver_init+0x20/0x28
[    3.720346]  do_one_initcall+0x5c/0x1b0
[    3.724189]  kernel_init_freeable+0x1a4/0x24c
[    3.728557]  kernel_init+0x10/0x108
[    3.732052]  ret_from_fork+0x10/0x18
[    3.735635] Code: f9400680 f9417ea1 91020000 b9400000 (b9000020)
[    3.741749] ---[ end trace c8ab43e3d33fed3f ]---
[    3.746396] Kernel panic - not syncing: Attempted to kill init! exitcode=0x0000000b
[    3.748522] ata1: SATA link down (SStatus 0 SControl 300)
[    3.754077] SMP: stopping secondary CPUs
[    3.754082] Kernel Offset: 0x33f299c00000 from 0xffff800010000000
[    3.754083] PHYS_OFFSET: 0xfffff019c0000000
[    3.754086] CPU features: 0x0002,21806008
[    3.754088] Memory Limit: none
[    3.780794] ---[ end Kernel panic - not syncing: Attempted to kill init! exitcode=0x0000000b ]---

As a result of the fix, struct felix allocation also needs to
be converted to managed allocation (devm_alloc).

Fixes: bb849431a9 ("net: dsa: ocelot: alloc memory for dsa switch instance")

Signed-off-by: Claudiu Manoil <claudiu.manoil@nxp.com>
2019-12-04 20:05:36 +02:00
Vladimir Oltean 1082a3ef9e net: dsa: felix: Add PCS operations for PHYLINK
This removes the bootloader dependency for SGMII PCS pre-configuration,
as well as adds support for monitoring the in-band SGMII AN between the
PCS and the system-side link partner (PHY or other MAC).

Signed-off-by: Vladimir Oltean <vladimir.oltean@nxp.com>
2019-12-02 18:04:52 +08:00
Vladimir Oltean e51cc023c3 net: mscc: ocelot: convert to PHYLINK
This patch reworks ocelot_board.c (aka the MIPS on the VSC7514) to
register a PHYLINK instance for each port. The registration code is
local to the VSC7514, but the PHYLINK callback implementation is common
so that the Felix DSA front-end can use it as well (but DSA does its own
registration).

Now Felix can use native PHYLINK callbacks instead of the PHYLIB
adaptation layer in DSA, which had issues supporting fixed-link slave
ports (no struct phy_device to pass to the adjust_link callback), as
well as fixed-link CPU port at 2.5Gbps.

The old code from ocelot_port_enable and ocelot_port_disable has been
moved into ocelot_phylink_mac_link_up and ocelot_phylink_mac_link_down.

The PHY connect operation has been moved from ocelot_port_open to
mscc_ocelot_probe in ocelot_board.c.

The phy_set_mode_ext() call for the SerDes PHY has also been moved into
mscc_ocelot_probe from ocelot_port_open, and since that was the only
reason why a reference to it was kept in ocelot_port_private, that
reference was removed.

Again, the usage of phy_interface_t phy_mode is now local to
mscc_ocelot_probe only, after moving the PHY connect operation.
So it was also removed from ocelot_port_private.
*Maybe* in the future, it can be added back to the common struct
ocelot_port, with the purpose of validating mismatches between
state->phy_interface and ocelot_port->phy_mode in PHYLINK callbacks.
But at the moment that is not critical, since other DSA drivers are not
doing that either. No SFP+ modules are in use with Felix/Ocelot yet, to
my knowledge.

In-band AN is not yet supported, due to the fact that this is a mostly
mechanical patch for the moment. The mac_an_restart PHYLINK operation
needs to be implemented, as well as mac_link_state. Both are SerDes
specific, and Felix does not have its PCS configured yet (it works just
by virtue of U-Boot initialization at the moment).

Signed-off-by: Vladimir Oltean <vladimir.oltean@nxp.com>
2019-12-02 18:04:52 +08:00
Vladimir Oltean f3ebad1269 net: mscc: ocelot: do not force Felix MACs at lower speeds than gigabit
In the LS1028A, the VSC9959 switch was integrated with an NXP PCS which
performs SGMII AN and rate adaptation autonomously. The MAC does not
need to know about this, and forcing the MAC speed to something else,
when connected to a 10/100 link partner, actually breaks the GMII
internal link between the MAC and the PCS.

Add a quirk system in the ocelot driver, and a first quirk called "PCS
performs rate adaptation", to distinguish the VSC7514 from the VSC9959
regarding this behavior.

Signed-off-by: Catalin Horghidan <catalin.horghidan@nxp.com>
Signed-off-by: Vladimir Oltean <vladimir.oltean@nxp.com>
2019-12-02 18:04:51 +08:00
Xiaoliang Yang bb849431a9 net: dsa: ocelot: alloc memory for dsa switch instance
The dsa switch instance hasn't alloc memory for switch ports in felix
initialization driver, which will cause NULL pointer issue. Using
dsa_switch_alloc to alloc memory for dsa switch instance.

Signed-off-by: Xiaoliang Yang <xiaoliang.yang_1@nxp.com>
2019-12-02 18:04:48 +08:00
Xiaoliang Yang eca0b86bb0 net: dsa: ocelot: add tsn support for felix switch
Support tsn capabilities in DSA felix switch driver. This felix tsn
driver is using tsn configuration of ocelot, and registered on each
switch port through DSA port setup.

Signed-off-by: Xiaoliang Yang <xiaoliang.yang_1@nxp.com>
2019-12-02 18:04:48 +08:00
Yangbo Lu e0c76105a0 net: dsa: ocelot: add hardware timestamping support for Felix
This patch is to reuse ocelot functions as possible to enable PTP
clock and to support hardware timestamping on Felix.
On TX path, timestamping works on packet which requires timestamp.
The injection header will be configured accordingly, and skb clone
requires timestamp will be added into a list. The TX timestamp
is final handled in threaded interrupt handler when PTP timestamp
FIFO is ready.
On RX path, timestamping is always working. The RX timestamp could
be got from extraction header.

Signed-off-by: Yangbo Lu <yangbo.lu@nxp.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
2019-12-02 18:04:46 +08:00
Yangbo Lu 1dfdeafe3d net: dsa: ocelot: define PTP registers for felix_vsc9959
This patch is to define PTP registers for felix_vsc9959.

Signed-off-by: Yangbo Lu <yangbo.lu@nxp.com>
Reviewed-by: Florian Fainelli <f.fainelli@gmail.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
2019-12-02 18:04:46 +08:00
Vladimir Oltean b1b7b24700 net: dsa: felix: Fix CPU port assignment when not last port
On the NXP LS1028A, there are 2 Ethernet links between the Felix switch
and the ENETC:
- eno2 <-> swp4, at 2.5G
- eno3 <-> swp5, at 1G

Only one of the above Ethernet port pairs can act as a DSA link for
tagging.

When adding initial support for the driver, it was tested only on the 1G
eno3 <-> swp5 interface, due to the necessity of using PHYLIB initially
(which treats fixed-link interfaces as emulated C22 PHYs, so it doesn't
support fixed-link speeds higher than 1G).

After making PHYLINK work, it appears that swp4 still can't act as CPU
port. So it looks like ocelot_set_cpu_port was being called for swp4,
but then it was called again for swp5, overwriting the CPU port assigned
in the DT.

It appears that when you call dsa_upstream_port for a port that is not
defined in the device tree (such as swp5 when using swp4 as CPU port),
its dp->cpu_dp pointer is not initialized by dsa_tree_setup_default_cpu,
and this trips up the following condition in dsa_upstream_port:

	if (!cpu_dp)
		return port;

So the moral of the story is: don't call dsa_upstream_port for a port
that is not defined in the device tree, and therefore its dsa_port
structure is not completely initialized (ds->num_ports is still 6).

Fixes: 5605194877 ("net: dsa: ocelot: add driver for Felix switch family")
Signed-off-by: Vladimir Oltean <vladimir.oltean@nxp.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
2019-12-02 18:04:44 +08:00
Vladimir Oltean 7fc603c551 net: dsa: ocelot: add driver for Felix switch family
This supports an Ethernet switching core from Vitesse / Microsemi /
Microchip (VSC9959) which is part of the Ocelot family (a brand name),
and whose code name is Felix. The switch can be (and is) integrated on
different SoCs as a PCIe endpoint device.

The functionality is provided by the core of the Ocelot switch driver
(drivers/net/ethernet/mscc). In this regard, the current driver is an
instance of Microsemi's Ocelot core driver, with a DSA front-end. It
inherits its name from VSC9959's code name, to distinguish itself from
the switchdev ocelot driver.

The patch adds the logic for probing a PCI device and defines the
register map for the VSC9959 switch core, since it has some differences
in register addresses and bitfield mappings compared to the other Ocelot
switches (VSC7511, VSC7512, VSC7513, VSC7514).

The Felix driver declares the register map as part of the "instance
table". Currently the VSC9959 inside NXP LS1028A is the only instance,
but presumably it can support other switches in the Ocelot family, when
used in DSA mode (Linux running on the external CPU, and not on the
embedded MIPS).

In a few cases, some h/w operations have to be done differently on
VSC9959 due to missing bitfields.  This is the case for the switch core
reset and init.  Because for this operation Ocelot uses some bits that
are not present on Felix, the latter has to use a register from the
global registers block (GCB) instead.

Although it is a PCI driver, it relies on DT bindings for compatibility
with DSA (CPU port link, PHY library). It does not have any custom
device tree bindings, since we would like to minimize its dependency on
device tree though.

Signed-off-by: Claudiu Manoil <claudiu.manoil@nxp.com>
Signed-off-by: Vladimir Oltean <vladimir.oltean@nxp.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
2019-12-02 18:04:44 +08:00