• Arnd Bergmann's avatar
    ixp4xx_eth: make ptp support a platform driver · 9055a2f5
    Arnd Bergmann authored
    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 98ac0cc2
      ("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: default avatarArnd Bergmann <arnd@arndb.de>
    [Fix a missing include]
    Signed-off-by: default avatarLinus Walleij <linus.walleij@linaro.org>
    Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
    9055a2f5
common.c 10.6 KB