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
2928static 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
5756static 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
8685static 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-
140132static 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
150142int 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
176162int 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}
0 commit comments