aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net/ethernet/sfc
diff options
context:
space:
mode:
authorLaurence Evans <levans@solarflare.com>2013-03-07 06:46:58 -0500
committerBen Hutchings <bhutchings@solarflare.com>2013-08-27 17:27:02 -0400
commit977a5d5d32f4797ace5ef65ee3f2232a1c88a274 (patch)
treeae1d9a9e6348a3017521ab604a82cd260ab1a498 /drivers/net/ethernet/sfc
parentc1d828bdca00f29e00c1650750ce0445d8b4458d (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.h1
-rw-r--r--drivers/net/ethernet/sfc/ptp.c3
-rw-r--r--drivers/net/ethernet/sfc/siena.c14
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
863static 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,