.. | .. |
---|
159 | 159 | |
---|
160 | 160 | static void get_systime(void __iomem *ioaddr, u64 *systime) |
---|
161 | 161 | { |
---|
162 | | - u64 ns, sec0, sec1; |
---|
| 162 | + u64 ns; |
---|
163 | 163 | |
---|
164 | | - /* Get the TSS value */ |
---|
165 | | - sec1 = readl_relaxed(ioaddr + PTP_STSR); |
---|
166 | | - do { |
---|
167 | | - sec0 = sec1; |
---|
168 | | - /* Get the TSSS value */ |
---|
169 | | - ns = readl_relaxed(ioaddr + PTP_STNSR); |
---|
170 | | - /* Get the TSS value */ |
---|
171 | | - sec1 = readl_relaxed(ioaddr + PTP_STSR); |
---|
172 | | - } while (sec0 != sec1); |
---|
| 164 | + /* Get the TSSS value */ |
---|
| 165 | + ns = readl(ioaddr + PTP_STNSR); |
---|
| 166 | + /* Get the TSS and convert sec time value to nanosecond */ |
---|
| 167 | + ns += readl(ioaddr + PTP_STSR) * 1000000000ULL; |
---|
173 | 168 | |
---|
174 | 169 | if (systime) |
---|
175 | | - *systime = ns + (sec1 * 1000000000ULL); |
---|
| 170 | + *systime = ns; |
---|
176 | 171 | } |
---|
177 | 172 | |
---|
178 | 173 | const struct stmmac_hwtimestamp stmmac_ptp = { |
---|