mirror of
https://github.com/AuxXxilium/linux_dsm_epyc7002.git
synced 2024-11-26 13:20:50 +07:00
ptp: sfc: convert to the 64 bit get/set time methods.
This patch changes the driver to use the newer API. Depending on how the hardware represents a time value, this driver may or may not yet be ready for the year 2038. Compile tested only. Signed-off-by: Richard Cochran <richardcochran@gmail.com> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
parent
e394b80545
commit
0fcb5c76ca
@ -323,9 +323,9 @@ struct efx_ptp_data {
|
||||
|
||||
static int efx_phc_adjfreq(struct ptp_clock_info *ptp, s32 delta);
|
||||
static int efx_phc_adjtime(struct ptp_clock_info *ptp, s64 delta);
|
||||
static int efx_phc_gettime(struct ptp_clock_info *ptp, struct timespec *ts);
|
||||
static int efx_phc_gettime(struct ptp_clock_info *ptp, struct timespec64 *ts);
|
||||
static int efx_phc_settime(struct ptp_clock_info *ptp,
|
||||
const struct timespec *e_ts);
|
||||
const struct timespec64 *e_ts);
|
||||
static int efx_phc_enable(struct ptp_clock_info *ptp,
|
||||
struct ptp_clock_request *request, int on);
|
||||
|
||||
@ -1198,8 +1198,8 @@ static const struct ptp_clock_info efx_phc_clock_info = {
|
||||
.pps = 1,
|
||||
.adjfreq = efx_phc_adjfreq,
|
||||
.adjtime = efx_phc_adjtime,
|
||||
.gettime = efx_phc_gettime,
|
||||
.settime = efx_phc_settime,
|
||||
.gettime64 = efx_phc_gettime,
|
||||
.settime64 = efx_phc_settime,
|
||||
.enable = efx_phc_enable,
|
||||
};
|
||||
|
||||
@ -1837,7 +1837,7 @@ static int efx_phc_adjtime(struct ptp_clock_info *ptp, s64 delta)
|
||||
NULL, 0, NULL);
|
||||
}
|
||||
|
||||
static int efx_phc_gettime(struct ptp_clock_info *ptp, struct timespec *ts)
|
||||
static int efx_phc_gettime(struct ptp_clock_info *ptp, struct timespec64 *ts)
|
||||
{
|
||||
struct efx_ptp_data *ptp_data = container_of(ptp,
|
||||
struct efx_ptp_data,
|
||||
@ -1859,28 +1859,28 @@ static int efx_phc_gettime(struct ptp_clock_info *ptp, struct timespec *ts)
|
||||
kt = ptp_data->nic_to_kernel_time(
|
||||
MCDI_DWORD(outbuf, PTP_OUT_READ_NIC_TIME_MAJOR),
|
||||
MCDI_DWORD(outbuf, PTP_OUT_READ_NIC_TIME_MINOR), 0);
|
||||
*ts = ktime_to_timespec(kt);
|
||||
*ts = ktime_to_timespec64(kt);
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int efx_phc_settime(struct ptp_clock_info *ptp,
|
||||
const struct timespec *e_ts)
|
||||
const struct timespec64 *e_ts)
|
||||
{
|
||||
/* Get the current NIC time, efx_phc_gettime.
|
||||
* Subtract from the desired time to get the offset
|
||||
* call efx_phc_adjtime with the offset
|
||||
*/
|
||||
int rc;
|
||||
struct timespec time_now;
|
||||
struct timespec delta;
|
||||
struct timespec64 time_now;
|
||||
struct timespec64 delta;
|
||||
|
||||
rc = efx_phc_gettime(ptp, &time_now);
|
||||
if (rc != 0)
|
||||
return rc;
|
||||
|
||||
delta = timespec_sub(*e_ts, time_now);
|
||||
delta = timespec64_sub(*e_ts, time_now);
|
||||
|
||||
rc = efx_phc_adjtime(ptp, timespec_to_ns(&delta));
|
||||
rc = efx_phc_adjtime(ptp, timespec64_to_ns(&delta));
|
||||
if (rc != 0)
|
||||
return rc;
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user