|
|
Log in / Subscribe / Register

ACPI support for dpaa2 driver

From:  Calvin Johnson <calvin.johnson-AT-oss.nxp.com>
To:  Grant Likely <grant.likely-AT-arm.com>, "Rafael J . Wysocki" <rafael-AT-kernel.org>, Jeremy Linton <jeremy.linton-AT-arm.com>, Andrew Lunn <andrew-AT-lunn.ch>, Andy Shevchenko <andy.shevchenko-AT-gmail.com>, Florian Fainelli <f.fainelli-AT-gmail.com>, Russell King - ARM Linux admin <linux-AT-armlinux.org.uk>, Cristi Sovaiala <cristian.sovaiala-AT-nxp.com>, Florin Laurentiu Chiculita <florinlaurentiu.chiculita-AT-nxp.com>, Ioana Ciornei <ioana.ciornei-AT-nxp.com>, Madalin Bucur <madalin.bucur-AT-oss.nxp.com>, Heikki Krogerus <heikki.krogerus-AT-linux.intel.com>, Marcin Wojtas <mw-AT-semihalf.com>, Pieter Jansen Van Vuuren <pieter.jansenvv-AT-bamboosystems.io>, Jon <jon-AT-solid-run.com>, Saravana Kannan <saravanak-AT-google.com>, Randy Dunlap <rdunlap-AT-infradead.org>
Subject:  [net-next PATCH v7 00/16] ACPI support for dpaa2 driver
Date:  Thu, 11 Mar 2021 11:49:55 +0530
Message-ID:  <20210311062011.8054-1-calvin.johnson@oss.nxp.com>
Cc:  linux-arm-kernel-AT-lists.infradead.org, Diana Madalina Craciun <diana.craciun-AT-nxp.com>, linux-acpi-AT-vger.kernel.org, linux-kernel-AT-vger.kernel.org, linux.cj-AT-gmail.com, netdev-AT-vger.kernel.org, Laurentiu Tudor <laurentiu.tudor-AT-nxp.com>, Calvin Johnson <calvin.johnson-AT-oss.nxp.com>, "David S. Miller" <davem-AT-davemloft.net>, Frank Rowand <frowand.list-AT-gmail.com>, Heiner Kallweit <hkallweit1-AT-gmail.com>, Ioana Radulescu <ruxandra.radulescu-AT-nxp.com>, Jakub Kicinski <kuba-AT-kernel.org>, Jamie Iles <jamie-AT-nuviainc.com>, Len Brown <lenb-AT-kernel.org>, "Rafael J. Wysocki" <rjw-AT-rjwysocki.net>, Rob Herring <robh+dt-AT-kernel.org>, devicetree-AT-vger.kernel.org
Archive-link:  Article


This patch set provides ACPI support to DPAA2 network drivers.

It also introduces new fwnode based APIs to support phylink and phy
layers
    Following functions are defined:
      phylink_fwnode_phy_connect()
      fwnode_mdiobus_register_phy()
      fwnode_mdiobus_register()
      fwnode_get_phy_id()
      fwnode_phy_find_device()
      device_phy_find_device()
      fwnode_get_phy_node()
      fwnode_mdio_find_device()
      acpi_get_local_address()

    First one helps in connecting phy to phylink instance.
    Next three helps in getting phy_id and registering phy to mdiobus
    Next two help in finding a phy on a mdiobus.
    Next one helps in getting phy_node from a fwnode.
    Last one is used to get local address from _ADR object.

    Corresponding OF functions are refactored.

Tested-on: LX2160ARDB


Changes in v7:
- correct fwnode_mdio_find_device() description
- check NULL in unregister_mii_timestamper()
- Call unregister_mii_timestamper() without NULL check
- Create fwnode_mdio.c and move fwnode_mdiobus_register_phy()
- include fwnode_mdio.h
- Include headers directly used in acpi_mdio.c
- Move fwnode_mdiobus_register() to fwnode_mdio.c
- Include fwnode_mdio.h
- Alphabetically sort header inclusions
- remove unnecassary checks

Changes in v6:
- Minor cleanup
- fix warning for function parameter of fwnode_mdio_find_device()
- Initialize mii_ts to NULL
- use GENMASK() and ACPI_COMPANION_SET()
- some cleanup
- remove unwanted header inclusion
- remove OF check for fixed-link
- use dev_fwnode()
- remove useless else
- replace of_device_is_available() to fwnode_device_is_available()

Changes in v5:
- More cleanup
- Replace fwnode_get_id() with acpi_get_local_address()
- add missing MODULE_LICENSE()
- replace fwnode_get_id() with OF and ACPI function calls
- replace fwnode_get_id() with OF and ACPI function calls

Changes in v4:
- More cleanup
- Improve code structure to handle all cases
- Remove redundant else from fwnode_mdiobus_register()
- Cleanup xgmac_mdio_probe()
- call phy_device_free() before returning

Changes in v3:
- Add more info on legacy DT properties "phy" and "phy-device"
- Redefine fwnode_phy_find_device() to follow of_phy_find_device()
- Use traditional comparison pattern
- Use GENMASK
- Modified to retrieve reg property value for ACPI as well
- Resolved compilation issue with CONFIG_ACPI = n
- Added more info into documentation
- Use acpi_mdiobus_register()
- Avoid unnecessary line removal
- Remove unused inclusion of acpi.h

Changes in v2:
- Updated with more description in document
- use reverse christmas tree ordering for local variables
- Refactor OF functions to use fwnode functions

Calvin Johnson (16):
  Documentation: ACPI: DSD: Document MDIO PHY
  net: phy: Introduce fwnode_mdio_find_device()
  net: phy: Introduce phy related fwnode functions
  of: mdio: Refactor of_phy_find_device()
  net: phy: Introduce fwnode_get_phy_id()
  of: mdio: Refactor of_get_phy_id()
  net: mii_timestamper: check NULL in unregister_mii_timestamper()
  net: mdiobus: Introduce fwnode_mdiobus_register_phy()
  of: mdio: Refactor of_mdiobus_register_phy()
  ACPI: utils: Introduce acpi_get_local_address()
  net: mdio: Add ACPI support code for mdio
  net: mdiobus: Introduce fwnode_mdiobus_register()
  net/fsl: Use fwnode_mdiobus_register()
  net: phylink: introduce phylink_fwnode_phy_connect()
  net: phylink: Refactor phylink_of_phy_connect()
  net: dpaa2-mac: Add ACPI support for DPAA2 MAC driver

 Documentation/firmware-guide/acpi/dsd/phy.rst | 133 ++++++++++++++++++
 MAINTAINERS                                   |   2 +
 drivers/acpi/utils.c                          |  14 ++
 .../net/ethernet/freescale/dpaa2/dpaa2-mac.c  |  84 ++++++-----
 drivers/net/ethernet/freescale/xgmac_mdio.c   |  22 +--
 drivers/net/mdio/Kconfig                      |  16 +++
 drivers/net/mdio/Makefile                     |   4 +-
 drivers/net/mdio/acpi_mdio.c                  |  56 ++++++++
 drivers/net/mdio/fwnode_mdio.c                |  98 +++++++++++++
 drivers/net/mdio/of_mdio.c                    |  80 +----------
 drivers/net/phy/mii_timestamper.c             |   3 +
 drivers/net/phy/phy_device.c                  | 109 +++++++++++++-
 drivers/net/phy/phylink.c                     |  41 ++++--
 include/linux/acpi.h                          |   7 +
 include/linux/acpi_mdio.h                     |  25 ++++
 include/linux/fwnode_mdio.h                   |  29 ++++
 include/linux/of_mdio.h                       |   6 +-
 include/linux/phy.h                           |  31 ++++
 include/linux/phylink.h                       |   3 +
 19 files changed, 631 insertions(+), 132 deletions(-)
 create mode 100644 Documentation/firmware-guide/acpi/dsd/phy.rst
 create mode 100644 drivers/net/mdio/acpi_mdio.c
 create mode 100644 drivers/net/mdio/fwnode_mdio.c
 create mode 100644 include/linux/acpi_mdio.h
 create mode 100644 include/linux/fwnode_mdio.h

-- 
2.17.1



Copyright © 2021, Eklektix, Inc.
Comments and public postings are copyrighted by their creators.
Linux is a registered trademark of Linus Torvalds