Skip to content

Commit 492d816

Browse files
Niklas Söderlundkuba-moo
authored andcommitted
net: ethernet: renesas: rcar_gen4_ptp: Hide register layout
With the support for multiple register layout removed all support structures can be removed from the header file. Covert to a simpler structure using defines for the register offsets. There is no functional change, only switching from looking up offsets at runtime to compile time. Signed-off-by: Niklas Söderlund <[email protected]> Reviewed-by: Simon Horman <[email protected]> Link: https://patch.msgid.link/[email protected] Signed-off-by: Jakub Kicinski <[email protected]>
1 parent 4da4793 commit 492d816

File tree

2 files changed

+26
-66
lines changed

2 files changed

+26
-66
lines changed

drivers/net/ethernet/renesas/rcar_gen4_ptp.c

Lines changed: 26 additions & 40 deletions
Original file line numberDiff line numberDiff line change
@@ -12,19 +12,18 @@
1212
#include <linux/slab.h>
1313

1414
#include "rcar_gen4_ptp.h"
15-
#define ptp_to_priv(ptp) container_of(ptp, struct rcar_gen4_ptp_private, info)
1615

17-
static const struct rcar_gen4_ptp_reg_offset gen4_offs = {
18-
.enable = PTPTMEC,
19-
.disable = PTPTMDC,
20-
.increment = PTPTIVC0,
21-
.config_t0 = PTPTOVC00,
22-
.config_t1 = PTPTOVC10,
23-
.config_t2 = PTPTOVC20,
24-
.monitor_t0 = PTPGPTPTM00,
25-
.monitor_t1 = PTPGPTPTM10,
26-
.monitor_t2 = PTPGPTPTM20,
27-
};
16+
#define PTPTMEC_REG 0x0010
17+
#define PTPTMDC_REG 0x0014
18+
#define PTPTIVC0_REG 0x0020
19+
#define PTPTOVC00_REG 0x0030
20+
#define PTPTOVC10_REG 0x0034
21+
#define PTPTOVC20_REG 0x0038
22+
#define PTPGPTPTM00_REG 0x0050
23+
#define PTPGPTPTM10_REG 0x0054
24+
#define PTPGPTPTM20_REG 0x0058
25+
26+
#define ptp_to_priv(ptp) container_of(ptp, struct rcar_gen4_ptp_private, info)
2827

2928
static int rcar_gen4_ptp_adjfine(struct ptp_clock_info *ptp, long scaled_ppm)
3029
{
@@ -38,7 +37,7 @@ static int rcar_gen4_ptp_adjfine(struct ptp_clock_info *ptp, long scaled_ppm)
3837
diff = div_s64(addend * scaled_ppm_to_ppb(scaled_ppm), NSEC_PER_SEC);
3938
addend = neg_adj ? addend - diff : addend + diff;
4039

41-
iowrite32(addend, ptp_priv->addr + ptp_priv->offs->increment);
40+
iowrite32(addend, ptp_priv->addr + PTPTIVC0_REG);
4241

4342
return 0;
4443
}
@@ -49,9 +48,9 @@ static void _rcar_gen4_ptp_gettime(struct ptp_clock_info *ptp,
4948
{
5049
struct rcar_gen4_ptp_private *ptp_priv = ptp_to_priv(ptp);
5150

52-
ts->tv_nsec = ioread32(ptp_priv->addr + ptp_priv->offs->monitor_t0);
53-
ts->tv_sec = ioread32(ptp_priv->addr + ptp_priv->offs->monitor_t1) |
54-
((s64)ioread32(ptp_priv->addr + ptp_priv->offs->monitor_t2) << 32);
51+
ts->tv_nsec = ioread32(ptp_priv->addr + PTPGPTPTM00_REG);
52+
ts->tv_sec = ioread32(ptp_priv->addr + PTPGPTPTM10_REG) |
53+
((s64)ioread32(ptp_priv->addr + PTPGPTPTM20_REG) << 32);
5554
}
5655

5756
static int rcar_gen4_ptp_gettime(struct ptp_clock_info *ptp,
@@ -73,14 +72,14 @@ static void _rcar_gen4_ptp_settime(struct ptp_clock_info *ptp,
7372
{
7473
struct rcar_gen4_ptp_private *ptp_priv = ptp_to_priv(ptp);
7574

76-
iowrite32(1, ptp_priv->addr + ptp_priv->offs->disable);
77-
iowrite32(0, ptp_priv->addr + ptp_priv->offs->config_t2);
78-
iowrite32(0, ptp_priv->addr + ptp_priv->offs->config_t1);
79-
iowrite32(0, ptp_priv->addr + ptp_priv->offs->config_t0);
80-
iowrite32(1, ptp_priv->addr + ptp_priv->offs->enable);
81-
iowrite32(ts->tv_sec >> 32, ptp_priv->addr + ptp_priv->offs->config_t2);
82-
iowrite32(ts->tv_sec, ptp_priv->addr + ptp_priv->offs->config_t1);
83-
iowrite32(ts->tv_nsec, ptp_priv->addr + ptp_priv->offs->config_t0);
75+
iowrite32(1, ptp_priv->addr + PTPTMDC_REG);
76+
iowrite32(0, ptp_priv->addr + PTPTOVC20_REG);
77+
iowrite32(0, ptp_priv->addr + PTPTOVC10_REG);
78+
iowrite32(0, ptp_priv->addr + PTPTOVC00_REG);
79+
iowrite32(1, ptp_priv->addr + PTPTMEC_REG);
80+
iowrite32(ts->tv_sec >> 32, ptp_priv->addr + PTPTOVC20_REG);
81+
iowrite32(ts->tv_sec, ptp_priv->addr + PTPTOVC10_REG);
82+
iowrite32(ts->tv_nsec, ptp_priv->addr + PTPTOVC00_REG);
8483
}
8584

8685
static int rcar_gen4_ptp_settime(struct ptp_clock_info *ptp,
@@ -130,13 +129,6 @@ static struct ptp_clock_info rcar_gen4_ptp_info = {
130129
.enable = rcar_gen4_ptp_enable,
131130
};
132131

133-
static int rcar_gen4_ptp_set_offs(struct rcar_gen4_ptp_private *ptp_priv)
134-
{
135-
ptp_priv->offs = &gen4_offs;
136-
137-
return 0;
138-
}
139-
140132
static s64 rcar_gen4_ptp_rate_to_increment(u32 rate)
141133
{
142134
/* Timer increment in ns.
@@ -149,24 +141,18 @@ static s64 rcar_gen4_ptp_rate_to_increment(u32 rate)
149141

150142
int rcar_gen4_ptp_register(struct rcar_gen4_ptp_private *ptp_priv, u32 rate)
151143
{
152-
int ret;
153-
154144
if (ptp_priv->initialized)
155145
return 0;
156146

157147
spin_lock_init(&ptp_priv->lock);
158148

159-
ret = rcar_gen4_ptp_set_offs(ptp_priv);
160-
if (ret)
161-
return ret;
162-
163149
ptp_priv->default_addend = rcar_gen4_ptp_rate_to_increment(rate);
164-
iowrite32(ptp_priv->default_addend, ptp_priv->addr + ptp_priv->offs->increment);
150+
iowrite32(ptp_priv->default_addend, ptp_priv->addr + PTPTIVC0_REG);
165151
ptp_priv->clock = ptp_clock_register(&ptp_priv->info, NULL);
166152
if (IS_ERR(ptp_priv->clock))
167153
return PTR_ERR(ptp_priv->clock);
168154

169-
iowrite32(0x01, ptp_priv->addr + ptp_priv->offs->enable);
155+
iowrite32(0x01, ptp_priv->addr + PTPTMEC_REG);
170156
ptp_priv->initialized = true;
171157

172158
return 0;
@@ -175,7 +161,7 @@ EXPORT_SYMBOL_GPL(rcar_gen4_ptp_register);
175161

176162
int rcar_gen4_ptp_unregister(struct rcar_gen4_ptp_private *ptp_priv)
177163
{
178-
iowrite32(1, ptp_priv->addr + ptp_priv->offs->disable);
164+
iowrite32(1, ptp_priv->addr + PTPTMDC_REG);
179165

180166
return ptp_clock_unregister(ptp_priv->clock);
181167
}

drivers/net/ethernet/renesas/rcar_gen4_ptp.h

Lines changed: 0 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -19,37 +19,11 @@
1919

2020
#define RCAR_GEN4_TXTSTAMP_ENABLED BIT(0)
2121

22-
#define PTPRO 0
23-
24-
enum rcar_gen4_ptp_reg {
25-
PTPTMEC = PTPRO + 0x0010,
26-
PTPTMDC = PTPRO + 0x0014,
27-
PTPTIVC0 = PTPRO + 0x0020,
28-
PTPTOVC00 = PTPRO + 0x0030,
29-
PTPTOVC10 = PTPRO + 0x0034,
30-
PTPTOVC20 = PTPRO + 0x0038,
31-
PTPGPTPTM00 = PTPRO + 0x0050,
32-
PTPGPTPTM10 = PTPRO + 0x0054,
33-
PTPGPTPTM20 = PTPRO + 0x0058,
34-
};
35-
36-
struct rcar_gen4_ptp_reg_offset {
37-
u16 enable;
38-
u16 disable;
39-
u16 increment;
40-
u16 config_t0;
41-
u16 config_t1;
42-
u16 config_t2;
43-
u16 monitor_t0;
44-
u16 monitor_t1;
45-
u16 monitor_t2;
46-
};
4722

4823
struct rcar_gen4_ptp_private {
4924
void __iomem *addr;
5025
struct ptp_clock *clock;
5126
struct ptp_clock_info info;
52-
const struct rcar_gen4_ptp_reg_offset *offs;
5327
spinlock_t lock; /* For multiple registers access */
5428
u32 tstamp_tx_ctrl;
5529
u32 tstamp_rx_ctrl;

0 commit comments

Comments
 (0)