mirror of
https://github.com/torvalds/linux.git
synced 2026-06-07 05:55:44 +02:00
Merge branch 'net-dsa-ks8995-fix-up-bindings'
Linus Walleij says: ==================== net: dsa: ks8995: Fix up bindings After looking at the datasheets for KS8995 I realized this is a DSA switch and need to have DT bindings as such and be implemented as such. This series just fixes up the bindings and the offending device tree. The existing kernel driver which is in drivers/net/phy/spi_ks8995.c does not implement DSA. It can be forgiven for this because it was merged in 2011 and the DSA framework was not widely established back then. It continues to probe fine but needs to be rewritten to use the special DSA tag and moved to drivers/net/dsa as time permits. (I hope I can do this.) It's fine for the networking tree to merge both patches, I maintain ixp4xx as well. But I can also carry the second patch through the SoC tree if so desired. v1: https://lore.kernel.org/20250624-ks8995-dsa-bindings-v1-0-71a8b4f63315@linaro.org ==================== Link: https://patch.msgid.link/20250625-ks8995-dsa-bindings-v2-0-ce71dce9be0b@linaro.org Signed-off-by: Jakub Kicinski <kuba@kernel.org>
This commit is contained in:
commit
bf3b1d3985
135
Documentation/devicetree/bindings/net/dsa/micrel,ks8995.yaml
Normal file
135
Documentation/devicetree/bindings/net/dsa/micrel,ks8995.yaml
Normal file
|
|
@ -0,0 +1,135 @@
|
|||
# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
|
||||
%YAML 1.2
|
||||
---
|
||||
$id: http://devicetree.org/schemas/net/dsa/micrel,ks8995.yaml#
|
||||
$schema: http://devicetree.org/meta-schemas/core.yaml#
|
||||
|
||||
title: Micrel KS8995 Family DSA Switches
|
||||
|
||||
maintainers:
|
||||
- Linus Walleij <linus.walleij@linaro.org>
|
||||
|
||||
description:
|
||||
The Micrel KS8995 DSA Switches are 100 Mbit switches that were produced in
|
||||
the early-to-mid 2000s. The chip features a CPU port and four outgoing ports,
|
||||
each with an internal PHY. The chip itself is managed over SPI, but all the
|
||||
PHYs need to be accessed from an external MDIO channel.
|
||||
|
||||
Further, a fifth PHY is available and can be used separately from the switch
|
||||
fabric, connected to an external MII interface name MII-P5. This is
|
||||
unrelated from the CPU-facing port 5 which is used for DSA MII traffic.
|
||||
|
||||
properties:
|
||||
compatible:
|
||||
enum:
|
||||
- micrel,ks8995
|
||||
- micrel,ksz8795
|
||||
- micrel,ksz8864
|
||||
|
||||
reg:
|
||||
maxItems: 1
|
||||
|
||||
reset-gpios:
|
||||
description: GPIO to be used to reset the whole device
|
||||
maxItems: 1
|
||||
|
||||
allOf:
|
||||
- $ref: dsa.yaml#/$defs/ethernet-ports
|
||||
- $ref: /schemas/spi/spi-peripheral-props.yaml#
|
||||
|
||||
required:
|
||||
- compatible
|
||||
- reg
|
||||
|
||||
unevaluatedProperties: false
|
||||
|
||||
examples:
|
||||
- |
|
||||
#include <dt-bindings/gpio/gpio.h>
|
||||
|
||||
spi {
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
|
||||
ethernet-switch@0 {
|
||||
compatible = "micrel,ks8995";
|
||||
reg = <0>;
|
||||
spi-max-frequency = <25000000>;
|
||||
|
||||
ethernet-ports {
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
|
||||
ethernet-port@0 {
|
||||
reg = <0>;
|
||||
label = "lan1";
|
||||
};
|
||||
ethernet-port@1 {
|
||||
reg = <1>;
|
||||
label = "lan2";
|
||||
};
|
||||
ethernet-port@2 {
|
||||
reg = <2>;
|
||||
label = "lan3";
|
||||
};
|
||||
ethernet-port@3 {
|
||||
reg = <3>;
|
||||
label = "lan4";
|
||||
};
|
||||
ethernet-port@4 {
|
||||
reg = <4>;
|
||||
ethernet = <&mac2>;
|
||||
phy-mode = "mii";
|
||||
fixed-link {
|
||||
speed = <100>;
|
||||
full-duplex;
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
soc {
|
||||
#address-cells = <1>;
|
||||
#size-cells = <1>;
|
||||
|
||||
/* The WAN port connected on MII-P5 */
|
||||
ethernet-port@1000 {
|
||||
reg = <0x00001000 0x1000>;
|
||||
label = "wan";
|
||||
phy-mode = "mii";
|
||||
phy-handle = <&phy5>;
|
||||
};
|
||||
|
||||
mac2: ethernet-port@2000 {
|
||||
reg = <0x00002000 0x1000>;
|
||||
phy-mode = "mii";
|
||||
fixed-link {
|
||||
speed = <100>;
|
||||
full-duplex;
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
mdio {
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
|
||||
/* LAN PHYs 1-4 accessible over external MDIO */
|
||||
phy1: ethernet-phy@1 {
|
||||
reg = <1>;
|
||||
};
|
||||
phy2: ethernet-phy@2 {
|
||||
reg = <2>;
|
||||
};
|
||||
phy3: ethernet-phy@3 {
|
||||
reg = <3>;
|
||||
};
|
||||
phy4: ethernet-phy@4 {
|
||||
reg = <4>;
|
||||
};
|
||||
/* WAN PHY accessible over external MDIO */
|
||||
phy5: ethernet-phy@5 {
|
||||
reg = <5>;
|
||||
};
|
||||
};
|
||||
|
|
@ -1,20 +0,0 @@
|
|||
Micrel KS8995 SPI controlled Ethernet Switch families
|
||||
|
||||
Required properties (according to spi-bus.txt):
|
||||
- compatible: either "micrel,ks8995", "micrel,ksz8864" or "micrel,ksz8795"
|
||||
|
||||
Optional properties:
|
||||
- reset-gpios : phandle of gpio that will be used to reset chip during probe
|
||||
|
||||
Example:
|
||||
|
||||
spi-master {
|
||||
...
|
||||
switch@0 {
|
||||
compatible = "micrel,ksz8795";
|
||||
|
||||
reg = <0>;
|
||||
spi-max-frequency = <50000000>;
|
||||
reset-gpios = <&gpio0 46 GPIO_ACTIVE_LOW>;
|
||||
};
|
||||
};
|
||||
|
|
@ -72,10 +72,55 @@ spi {
|
|||
cs-gpios = <&gpio0 5 GPIO_ACTIVE_LOW>;
|
||||
num-chipselects = <1>;
|
||||
|
||||
switch@0 {
|
||||
ethernet-switch@0 {
|
||||
compatible = "micrel,ks8995";
|
||||
reg = <0>;
|
||||
spi-max-frequency = <50000000>;
|
||||
|
||||
/*
|
||||
* The PHYs are accessed over the external MDIO
|
||||
* bus and not internally through the switch control
|
||||
* registers.
|
||||
*/
|
||||
ethernet-ports {
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
|
||||
ethernet-port@0 {
|
||||
reg = <0>;
|
||||
label = "1";
|
||||
phy-mode = "mii";
|
||||
phy-handle = <&phy1>;
|
||||
};
|
||||
ethernet-port@1 {
|
||||
reg = <1>;
|
||||
label = "2";
|
||||
phy-mode = "mii";
|
||||
phy-handle = <&phy2>;
|
||||
};
|
||||
ethernet-port@2 {
|
||||
reg = <2>;
|
||||
label = "3";
|
||||
phy-mode = "mii";
|
||||
phy-handle = <&phy3>;
|
||||
};
|
||||
ethernet-port@3 {
|
||||
reg = <3>;
|
||||
label = "4";
|
||||
phy-mode = "mii";
|
||||
phy-handle = <&phy4>;
|
||||
};
|
||||
ethernet-port@4 {
|
||||
reg = <4>;
|
||||
ethernet = <ðb>;
|
||||
phy-mode = "mii";
|
||||
fixed-link {
|
||||
speed = <100>;
|
||||
full-duplex;
|
||||
};
|
||||
};
|
||||
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
|
|
@ -135,40 +180,59 @@ pci@c0000000 {
|
|||
};
|
||||
|
||||
/*
|
||||
* EthB - connected to the KS8995 switch ports 1-4
|
||||
* FIXME: the boardfile defines .phy_mask = 0x1e for this port to enable output to
|
||||
* all four switch ports, also using an out of tree multiphy patch.
|
||||
* Do we need a new binding and property for this?
|
||||
* EthB connects to the KS8995 CPU port and faces ports 1-4
|
||||
* through the switch fabric.
|
||||
*
|
||||
* To complicate things, the MDIO channel is also only
|
||||
* accessible through EthB, but used independently for PHY
|
||||
* control.
|
||||
*/
|
||||
ethernet@c8009000 {
|
||||
ethb: ethernet@c8009000 {
|
||||
status = "okay";
|
||||
queue-rx = <&qmgr 3>;
|
||||
queue-txready = <&qmgr 20>;
|
||||
phy-mode = "rgmii";
|
||||
phy-handle = <&phy4>;
|
||||
phy-mode = "mii";
|
||||
fixed-link {
|
||||
speed = <100>;
|
||||
full-duplex;
|
||||
};
|
||||
|
||||
mdio {
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
|
||||
/* Should be ports 1-4 on the KS8995 switch */
|
||||
/*
|
||||
* LAN ports 1-4 on the KS8995 switch
|
||||
* and PHY5 for WAN need to be accessed
|
||||
* through this external MDIO channel.
|
||||
*/
|
||||
phy1: ethernet-phy@1 {
|
||||
reg = <1>;
|
||||
};
|
||||
phy2: ethernet-phy@2 {
|
||||
reg = <2>;
|
||||
};
|
||||
phy3: ethernet-phy@3 {
|
||||
reg = <3>;
|
||||
};
|
||||
phy4: ethernet-phy@4 {
|
||||
reg = <4>;
|
||||
};
|
||||
|
||||
/* Should be port 5 on the KS8995 switch */
|
||||
phy5: ethernet-phy@5 {
|
||||
reg = <5>;
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
/* EthC - connected to KS8995 switch port 5 */
|
||||
ethernet@c800a000 {
|
||||
/*
|
||||
* EthC connects to MII-P5 on the KS8995 bypassing
|
||||
* all of the switch logic and facing PHY5
|
||||
*/
|
||||
ethc: ethernet@c800a000 {
|
||||
status = "okay";
|
||||
queue-rx = <&qmgr 4>;
|
||||
queue-txready = <&qmgr 21>;
|
||||
phy-mode = "rgmii";
|
||||
phy-mode = "mii";
|
||||
phy-handle = <&phy5>;
|
||||
};
|
||||
};
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user