| .. | .. |
|---|
| 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 = { |
|---|