diff options
author | Laurence Evans <levans@solarflare.com> | 2013-03-07 06:46:58 -0500 |
---|---|---|
committer | Ben Hutchings <bhutchings@solarflare.com> | 2013-08-27 17:27:02 -0400 |
commit | 977a5d5d32f4797ace5ef65ee3f2232a1c88a274 (patch) | |
tree | ae1d9a9e6348a3017521ab604a82cd260ab1a498 /drivers/net/ethernet/sfc | |
parent | c1d828bdca00f29e00c1650750ce0445d8b4458d (diff) |
sfc: Add a function pointer to abstract write of host time into NIC shared memory
Signed-off-by: Ben Hutchings <bhutchings@solarflare.com>
Diffstat (limited to 'drivers/net/ethernet/sfc')
-rw-r--r-- | drivers/net/ethernet/sfc/net_driver.h | 1 | ||||
-rw-r--r-- | drivers/net/ethernet/sfc/ptp.c | 3 | ||||
-rw-r--r-- | drivers/net/ethernet/sfc/siena.c | 14 |
3 files changed, 16 insertions, 2 deletions
diff --git a/drivers/net/ethernet/sfc/net_driver.h b/drivers/net/ethernet/sfc/net_driver.h index d33656bc4060..21b1c2a2a191 100644 --- a/drivers/net/ethernet/sfc/net_driver.h +++ b/drivers/net/ethernet/sfc/net_driver.h | |||
@@ -1117,6 +1117,7 @@ struct efx_nic_type { | |||
1117 | size_t *retlen, const u8 *buffer); | 1117 | size_t *retlen, const u8 *buffer); |
1118 | int (*mtd_sync)(struct mtd_info *mtd); | 1118 | int (*mtd_sync)(struct mtd_info *mtd); |
1119 | #endif | 1119 | #endif |
1120 | void (*ptp_write_host_time)(struct efx_nic *efx, u32 host_time); | ||
1120 | 1121 | ||
1121 | int revision; | 1122 | int revision; |
1122 | unsigned int txd_ptr_tbl_base; | 1123 | unsigned int txd_ptr_tbl_base; |
diff --git a/drivers/net/ethernet/sfc/ptp.c b/drivers/net/ethernet/sfc/ptp.c index 4de2f8febd59..c60cabb6ff05 100644 --- a/drivers/net/ethernet/sfc/ptp.c +++ b/drivers/net/ethernet/sfc/ptp.c | |||
@@ -390,8 +390,7 @@ static void efx_ptp_send_times(struct efx_nic *efx, | |||
390 | host_time = (now.ts_real.tv_sec << MC_NANOSECOND_BITS | | 390 | host_time = (now.ts_real.tv_sec << MC_NANOSECOND_BITS | |
391 | now.ts_real.tv_nsec); | 391 | now.ts_real.tv_nsec); |
392 | /* Update host time in NIC memory */ | 392 | /* Update host time in NIC memory */ |
393 | _efx_writed(efx, cpu_to_le32(host_time), | 393 | efx->type->ptp_write_host_time(efx, host_time); |
394 | FR_CZ_MC_TREG_SMEM + MC_SMEM_P0_PTP_TIME_OFST); | ||
395 | } | 394 | } |
396 | *last_time = now; | 395 | *last_time = now; |
397 | } | 396 | } |
diff --git a/drivers/net/ethernet/sfc/siena.c b/drivers/net/ethernet/sfc/siena.c index a51d90c4c6cf..3c0a54400260 100644 --- a/drivers/net/ethernet/sfc/siena.c +++ b/drivers/net/ethernet/sfc/siena.c | |||
@@ -855,6 +855,19 @@ fail: | |||
855 | 855 | ||
856 | /************************************************************************** | 856 | /************************************************************************** |
857 | * | 857 | * |
858 | * PTP | ||
859 | * | ||
860 | ************************************************************************** | ||
861 | */ | ||
862 | |||
863 | static void siena_ptp_write_host_time(struct efx_nic *efx, u32 host_time) | ||
864 | { | ||
865 | _efx_writed(efx, cpu_to_le32(host_time), | ||
866 | FR_CZ_MC_TREG_SMEM + MC_SMEM_P0_PTP_TIME_OFST); | ||
867 | } | ||
868 | |||
869 | /************************************************************************** | ||
870 | * | ||
858 | * Revision-dependent attributes used by efx.c and nic.c | 871 | * Revision-dependent attributes used by efx.c and nic.c |
859 | * | 872 | * |
860 | ************************************************************************** | 873 | ************************************************************************** |
@@ -943,6 +956,7 @@ const struct efx_nic_type siena_a0_nic_type = { | |||
943 | .mtd_write = efx_mcdi_mtd_write, | 956 | .mtd_write = efx_mcdi_mtd_write, |
944 | .mtd_sync = efx_mcdi_mtd_sync, | 957 | .mtd_sync = efx_mcdi_mtd_sync, |
945 | #endif | 958 | #endif |
959 | .ptp_write_host_time = siena_ptp_write_host_time, | ||
946 | 960 | ||
947 | .revision = EFX_REV_SIENA_A0, | 961 | .revision = EFX_REV_SIENA_A0, |
948 | .txd_ptr_tbl_base = FR_BZ_TX_DESC_PTR_TBL, | 962 | .txd_ptr_tbl_base = FR_BZ_TX_DESC_PTR_TBL, |