@@ -80,21 +80,6 @@ void peak_usb_init_time_ref(struct peak_time_ref *time_ref,
80
80
}
81
81
}
82
82
83
- static void peak_usb_add_us (struct timeval * tv , u32 delta_us )
84
- {
85
- /* number of s. to add to final time */
86
- u32 delta_s = delta_us / 1000000 ;
87
-
88
- delta_us -= delta_s * 1000000 ;
89
-
90
- tv -> tv_usec += delta_us ;
91
- if (tv -> tv_usec >= 1000000 ) {
92
- tv -> tv_usec -= 1000000 ;
93
- delta_s ++ ;
94
- }
95
- tv -> tv_sec += delta_s ;
96
- }
97
-
98
83
/*
99
84
* sometimes, another now may be more recent than current one...
100
85
*/
@@ -103,7 +88,7 @@ void peak_usb_update_ts_now(struct peak_time_ref *time_ref, u32 ts_now)
103
88
time_ref -> ts_dev_2 = ts_now ;
104
89
105
90
/* should wait at least two passes before computing */
106
- if (time_ref -> tv_host . tv_sec > 0 ) {
91
+ if (ktime_to_ns ( time_ref -> tv_host ) > 0 ) {
107
92
u32 delta_ts = time_ref -> ts_dev_2 - time_ref -> ts_dev_1 ;
108
93
109
94
if (time_ref -> ts_dev_2 < time_ref -> ts_dev_1 )
@@ -118,26 +103,26 @@ void peak_usb_update_ts_now(struct peak_time_ref *time_ref, u32 ts_now)
118
103
*/
119
104
void peak_usb_set_ts_now (struct peak_time_ref * time_ref , u32 ts_now )
120
105
{
121
- if (time_ref -> tv_host_0 . tv_sec == 0 ) {
106
+ if (ktime_to_ns ( time_ref -> tv_host_0 ) == 0 ) {
122
107
/* use monotonic clock to correctly compute further deltas */
123
- time_ref -> tv_host_0 = ktime_to_timeval ( ktime_get () );
124
- time_ref -> tv_host . tv_sec = 0 ;
108
+ time_ref -> tv_host_0 = ktime_get ();
109
+ time_ref -> tv_host = ktime_set ( 0 , 0 ) ;
125
110
} else {
126
111
/*
127
- * delta_us should not be >= 2^32 => delta_s should be < 4294
112
+ * delta_us should not be >= 2^32 => delta should be < 4294s
128
113
* handle 32-bits wrapping here: if count of s. reaches 4200,
129
114
* reset counters and change time base
130
115
*/
131
- if (time_ref -> tv_host . tv_sec != 0 ) {
132
- u32 delta_s = time_ref -> tv_host . tv_sec
133
- - time_ref -> tv_host_0 . tv_sec ;
134
- if (delta_s > 4200 ) {
116
+ if (ktime_to_ns ( time_ref -> tv_host ) ) {
117
+ ktime_t delta = ktime_sub ( time_ref -> tv_host ,
118
+ time_ref -> tv_host_0 ) ;
119
+ if (ktime_to_ns ( delta ) > ( 4200ull * NSEC_PER_SEC ) ) {
135
120
time_ref -> tv_host_0 = time_ref -> tv_host ;
136
121
time_ref -> ts_total = 0 ;
137
122
}
138
123
}
139
124
140
- time_ref -> tv_host = ktime_to_timeval ( ktime_get () );
125
+ time_ref -> tv_host = ktime_get ();
141
126
time_ref -> tick_count ++ ;
142
127
}
143
128
@@ -146,13 +131,12 @@ void peak_usb_set_ts_now(struct peak_time_ref *time_ref, u32 ts_now)
146
131
}
147
132
148
133
/*
149
- * compute timeval according to current ts and time_ref data
134
+ * compute time according to current ts and time_ref data
150
135
*/
151
136
void peak_usb_get_ts_time (struct peak_time_ref * time_ref , u32 ts , ktime_t * time )
152
137
{
153
- /* protect from getting timeval before setting now */
154
- if (time_ref -> tv_host .tv_sec > 0 ) {
155
- struct timeval tv ;
138
+ /* protect from getting time before setting now */
139
+ if (ktime_to_ns (time_ref -> tv_host )) {
156
140
u64 delta_us ;
157
141
158
142
delta_us = ts - time_ref -> ts_dev_2 ;
@@ -164,9 +148,7 @@ void peak_usb_get_ts_time(struct peak_time_ref *time_ref, u32 ts, ktime_t *time)
164
148
delta_us *= time_ref -> adapter -> us_per_ts_scale ;
165
149
delta_us >>= time_ref -> adapter -> us_per_ts_shift ;
166
150
167
- tv = time_ref -> tv_host_0 ;
168
- peak_usb_add_us (& tv , (u32 )delta_us );
169
- * time = timeval_to_ktime (tv );
151
+ * time = ktime_add_us (time_ref -> tv_host_0 , delta_us );
170
152
} else {
171
153
* time = ktime_get ();
172
154
}
0 commit comments