ixp4xx_eth: make ptp support a platform driver
authorArnd Bergmann <arnd@arndb.de>
Sat, 28 Aug 2021 17:15:44 +0000 (19:15 +0200)
committerDavid S. Miller <davem@davemloft.net>
Mon, 30 Aug 2021 08:59:11 +0000 (09:59 +0100)
commit9055a2f591629b952910503e72ddae1371c44bf1
treed2e4146375b640a75f6b3a9500118359026eb57b
parent27c779437cbc903d318c12a5f54ea151aa3f307f
ixp4xx_eth: make ptp support a platform driver

After the recent ixp4xx cleanups, the ptp driver has gained a
build failure in some configurations:

drivers/net/ethernet/xscale/ptp_ixp46x.c: In function 'ptp_ixp_init':
drivers/net/ethernet/xscale/ptp_ixp46x.c:290:51: error: 'IXP4XX_TIMESYNC_BASE_VIRT' undeclared (first use in this function)

Avoid the last bit of hardcoded constants from platform headers
by turning the ptp driver bit into a platform driver and passing
the IRQ and MMIO address as resources.

This is a bit tricky:

- The interface between the two drivers is now the new
  ixp46x_ptp_find() function, replacing the global
  ixp46x_phc_index variable. The call is done as late
  as possible, in hwtstamp_set(), to ensure that the
  ptp device is fully probed.

- As the ptp driver is now called by the network driver, the
  link dependency is reversed, which in turn requires a small
  Makefile hack

- The GPIO number is still left hardcoded. This is clearly not
  great, but it can be addressed later. Note that commit 98ac0cc270b7
  ("ARM: ixp4xx: Convert to MULTI_IRQ_HANDLER") changed the
  IRQ number to something meaningless. Passing the correct IRQ
  in a resource fixes this.

- When the PTP driver is disabled, ethtool .get_ts_info()
  now correctly lists only software timestamping regardless
  of the hardware.

Signed-off-by: Arnd Bergmann <arnd@arndb.de>
[Fix a missing include]
Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
Signed-off-by: David S. Miller <davem@davemloft.net>
arch/arm/mach-ixp4xx/common.c
drivers/net/ethernet/xscale/Kconfig
drivers/net/ethernet/xscale/Makefile
drivers/net/ethernet/xscale/ixp46x_ts.h
drivers/net/ethernet/xscale/ixp4xx_eth.c
drivers/net/ethernet/xscale/ptp_ixp46x.c