linux_dsm_epyc7002/drivers/net/ethernet/marvell
Marcin Wojtas a75edc7c2e net: mvpp2: enable ACPI support in the driver
This patch introduces an alternative way of obtaining resources - via
ACPI tables provided by firmware. Enabling coexistence with the DT
support, in addition to the OF_*->device_*/fwnode_* API replacement,
required following steps to be taken:

* Add mvpp2_acpi_match table
* Omit clock configuration and obtain tclk from the property - in ACPI
  world, the firmware is responsible for clock maintenance.
* Disable comphy and syscon handling as they are not available for ACPI.
* Modify way of obtaining interrupts - use newly introduced
  fwnode_irq_get() routine
* Until proper MDIO bus and PHY handling with ACPI is established in the
  kernel, use only link interrupts feature in the driver. For the RGMII
  port it results in depending on GMAC settings done during firmware
  stage.
* When booting with ACPI MVPP2_QDIST_MULTI_MODE is picked by
  default, as there is no need to keep any kind of the backward
  compatibility.

Moreover, a memory region used by mvmdio driver is usually placed in
the middle of the address space of the PP2 network controller.
The MDIO base address is obtained without requesting memory region
(by devm_ioremap() call) in mvmdio.c, later overlapping resources are
requested by the network driver, which is responsible for avoiding
a concurrent access.

In case the MDIO memory region is declared in the ACPI, it can
already appear as 'in-use' in the OS. Because it is overlapped by second
region of the network controller, make sure it is released, before
requesting it again. The care is taken by mvpp2 driver to avoid
concurrent access to this memory region.

Signed-off-by: Marcin Wojtas <mw@semihalf.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
2018-01-22 10:57:04 -05:00
..
Kconfig net: mvneta: convert to phylink 2018-01-03 10:38:53 -05:00
Makefile License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
mv643xx_eth.c treewide: setup_timer() -> timer_setup() 2017-11-21 15:57:07 -08:00
mvmdio.c net: mvmdio: disable/unprepare clocks in EPROBE_DEFER case 2017-12-07 13:40:23 -05:00
mvneta_bm.c net: mvneta: Fix lacking spinlock initialization 2016-05-25 12:35:08 -07:00
mvneta_bm.h net: mvneta: use IS_ENABLED() instead of checking for built-in or module 2016-09-12 20:27:59 -07:00
mvneta.c net: mvneta: add module EEPROM reading support 2018-01-03 10:38:54 -05:00
mvpp2.c net: mvpp2: enable ACPI support in the driver 2018-01-22 10:57:04 -05:00
pxa168_eth.c treewide: setup_timer() -> timer_setup() 2017-11-21 15:57:07 -08:00
skge.c skge: remove redundunt free_irq under spinlock 2017-12-13 15:47:00 -05:00
skge.h License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
sky2.c sky2: Replace mdelay with msleep in sky2_vpd_wait 2018-01-02 12:27:33 -05:00
sky2.h License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00