RE: [EXT] Re: [PATCH net-next 2/9] dt-bindings: net: add backplane dt bindings

From: Florinel Iordache
Date: Fri Mar 27 2020 - 11:00:35 EST


> On Thu, Mar 26, 2020 at 03:51:15PM +0200, Florinel Iordache wrote:
> > Add ethernet backplane device tree bindings
>
> > + - |
> > + /* Backplane configurations for specific setup */
> > + &mdio9 {
> > + bpphy6: ethernet-phy@0 {
> > + compatible = "ethernet-phy-ieee802.3-c45";
> > + reg = <0x0>;
> > + lane-handle = <&lane_d>; /* use lane D */
> > + eq-algorithm = "bee";
> > + /* 10G Short cables setup: up to 30 cm cable */
> > + eq-init = <0x2 0x5 0x29>;
> > + eq-params = <0>;
> > + };
> > + };
>
> So you are modelling this as just another PHY? Does the driver get loaded based
> on the PHY ID in registers 2 and 3? Does the standard define these IDs or are
> they vendor specific?
>
> Thanks
> Andrew

Hi Andrew,
Thank you all for the feedback.
I am currently working to address the entire feedback received
so far for this new Backplane driver.

Yes, we are modelling backplane driver as a phy driver.
The driver is loaded based on PHY ID in registers 2 and 3 which
are specified by the standard but it is a vendor specific value:
32-Bit identifier composed of the 3rd through 24th bits of the
Organizationally Unique Identifier (OUI) assigned to the device
manufacturer by the IEEE, plus a six-bit model number, plus a
four-bit revision number.
This is done in the device specific code and not in backplane
generic driver.
You can check support for QorIQ devices where qoriq_backplane_driver
is registered as a phy_driver:

@file: qoriq_backplane.c
+static struct phy_driver qoriq_backplane_driver[] = {
+ {
+ .phy_id = PCS_PHY_DEVICE_ID,
+ .name = QORIQ_BACKPLANE_DRIVER_NAME,
+ .phy_id_mask = PCS_PHY_DEVICE_ID_MASK,
+ .features = BACKPLANE_FEATURES,
+ .probe = qoriq_backplane_probe,
+ .remove = backplane_remove,
+ .config_init = qoriq_backplane_config_init,
+ .aneg_done = backplane_aneg_done,

Here we register the particular phy device ID/mask and driver name
specific for qoriq devices.
Also we can use generic routines provided by generic backplane driver
if they are suitable for particular qoriq device or otherwise we can use
more specialized specific routines like: qoriq_backplane_config_init