@@ -41,17 +41,17 @@ module_param(firmware, charp, 0);
41
41
static int _idtcm_adjfine (struct idtcm_channel * channel , long scaled_ppm );
42
42
43
43
static inline int idtcm_read (struct idtcm * idtcm ,
44
- u16 module ,
45
- u16 regaddr ,
44
+ u32 module ,
45
+ u32 regaddr ,
46
46
u8 * buf ,
47
47
u16 count )
48
48
{
49
49
return regmap_bulk_read (idtcm -> regmap , module + regaddr , buf , count );
50
50
}
51
51
52
52
static inline int idtcm_write (struct idtcm * idtcm ,
53
- u16 module ,
54
- u16 regaddr ,
53
+ u32 module ,
54
+ u32 regaddr ,
55
55
u8 * buf ,
56
56
u16 count )
57
57
{
@@ -62,16 +62,17 @@ static int contains_full_configuration(struct idtcm *idtcm,
62
62
const struct firmware * fw )
63
63
{
64
64
struct idtcm_fwrc * rec = (struct idtcm_fwrc * )fw -> data ;
65
- u16 scratch = IDTCM_FW_REG (idtcm -> fw_ver , V520 , SCRATCH );
65
+ u16 scratch = SCSR_ADDR (IDTCM_FW_REG (idtcm -> fw_ver , V520 , SCRATCH ));
66
+ u16 gpio_control = SCSR_ADDR (GPIO_USER_CONTROL );
66
67
s32 full_count ;
67
68
s32 count = 0 ;
68
69
u16 regaddr ;
69
70
u8 loaddr ;
70
71
s32 len ;
71
72
72
73
/* 4 bytes skipped every 0x80 */
73
- full_count = (scratch - GPIO_USER_CONTROL ) -
74
- ((scratch >> 7 ) - (GPIO_USER_CONTROL >> 7 )) * 4 ;
74
+ full_count = (scratch - gpio_control ) -
75
+ ((scratch >> 7 ) - (gpio_control >> 7 )) * 4 ;
75
76
76
77
/* If the firmware contains 'full configuration' SM_RESET can be used
77
78
* to ensure proper configuration.
@@ -88,7 +89,7 @@ static int contains_full_configuration(struct idtcm *idtcm,
88
89
rec ++ ;
89
90
90
91
/* Top (status registers) and bottom are read-only */
91
- if (regaddr < GPIO_USER_CONTROL || regaddr >= scratch )
92
+ if (regaddr < gpio_control || regaddr >= scratch )
92
93
continue ;
93
94
94
95
/* Page size 128, last 4 bytes of page skipped */
@@ -506,8 +507,8 @@ static int _sync_pll_output(struct idtcm *idtcm,
506
507
{
507
508
int err ;
508
509
u8 val ;
509
- u16 sync_ctrl0 ;
510
- u16 sync_ctrl1 ;
510
+ u32 sync_ctrl0 ;
511
+ u32 sync_ctrl1 ;
511
512
u8 temp ;
512
513
513
514
if (qn == 0 && qn_plus_1 == 0 )
@@ -553,11 +554,11 @@ static int _sync_pll_output(struct idtcm *idtcm,
553
554
val = SYNCTRL1_MASTER_SYNC_RST ;
554
555
555
556
/* Place master sync in reset */
556
- err = idtcm_write (idtcm , 0 , sync_ctrl1 , & val , sizeof (val ));
557
+ err = idtcm_write (idtcm , sync_ctrl1 , 0 , & val , sizeof (val ));
557
558
if (err )
558
559
return err ;
559
560
560
- err = idtcm_write (idtcm , 0 , sync_ctrl0 , & sync_src , sizeof (sync_src ));
561
+ err = idtcm_write (idtcm , sync_ctrl0 , 0 , & sync_src , sizeof (sync_src ));
561
562
if (err )
562
563
return err ;
563
564
@@ -570,57 +571,57 @@ static int _sync_pll_output(struct idtcm *idtcm,
570
571
if (qn_plus_1 )
571
572
val |= SYNCTRL1_Q1_DIV_SYNC_TRIG ;
572
573
573
- err = idtcm_write (idtcm , 0 , sync_ctrl1 , & val , sizeof (val ));
574
+ err = idtcm_write (idtcm , sync_ctrl1 , 0 , & val , sizeof (val ));
574
575
if (err )
575
576
return err ;
576
577
577
578
/* PLL5 can have OUT8 as second additional output. */
578
579
if (pll == 5 && qn_plus_1 != 0 ) {
579
- err = idtcm_read (idtcm , 0 , HW_Q8_CTRL_SPARE ,
580
+ err = idtcm_read (idtcm , HW_Q8_CTRL_SPARE , 0 ,
580
581
& temp , sizeof (temp ));
581
582
if (err )
582
583
return err ;
583
584
584
585
temp &= ~(Q9_TO_Q8_SYNC_TRIG );
585
586
586
- err = idtcm_write (idtcm , 0 , HW_Q8_CTRL_SPARE ,
587
+ err = idtcm_write (idtcm , HW_Q8_CTRL_SPARE , 0 ,
587
588
& temp , sizeof (temp ));
588
589
if (err )
589
590
return err ;
590
591
591
592
temp |= Q9_TO_Q8_SYNC_TRIG ;
592
593
593
- err = idtcm_write (idtcm , 0 , HW_Q8_CTRL_SPARE ,
594
+ err = idtcm_write (idtcm , HW_Q8_CTRL_SPARE , 0 ,
594
595
& temp , sizeof (temp ));
595
596
if (err )
596
597
return err ;
597
598
}
598
599
599
600
/* PLL6 can have OUT11 as second additional output. */
600
601
if (pll == 6 && qn_plus_1 != 0 ) {
601
- err = idtcm_read (idtcm , 0 , HW_Q11_CTRL_SPARE ,
602
+ err = idtcm_read (idtcm , HW_Q11_CTRL_SPARE , 0 ,
602
603
& temp , sizeof (temp ));
603
604
if (err )
604
605
return err ;
605
606
606
607
temp &= ~(Q10_TO_Q11_SYNC_TRIG );
607
608
608
- err = idtcm_write (idtcm , 0 , HW_Q11_CTRL_SPARE ,
609
+ err = idtcm_write (idtcm , HW_Q11_CTRL_SPARE , 0 ,
609
610
& temp , sizeof (temp ));
610
611
if (err )
611
612
return err ;
612
613
613
614
temp |= Q10_TO_Q11_SYNC_TRIG ;
614
615
615
- err = idtcm_write (idtcm , 0 , HW_Q11_CTRL_SPARE ,
616
+ err = idtcm_write (idtcm , HW_Q11_CTRL_SPARE , 0 ,
616
617
& temp , sizeof (temp ));
617
618
if (err )
618
619
return err ;
619
620
}
620
621
621
622
/* Place master sync out of reset */
622
623
val &= ~(SYNCTRL1_MASTER_SYNC_RST );
623
- err = idtcm_write (idtcm , 0 , sync_ctrl1 , & val , sizeof (val ));
624
+ err = idtcm_write (idtcm , sync_ctrl1 , 0 , & val , sizeof (val ));
624
625
625
626
return err ;
626
627
}
@@ -637,7 +638,7 @@ static int idtcm_sync_pps_output(struct idtcm_channel *channel)
637
638
u8 temp ;
638
639
u16 output_mask = channel -> output_mask ;
639
640
640
- err = idtcm_read (idtcm , 0 , HW_Q8_CTRL_SPARE ,
641
+ err = idtcm_read (idtcm , HW_Q8_CTRL_SPARE , 0 ,
641
642
& temp , sizeof (temp ));
642
643
if (err )
643
644
return err ;
@@ -646,7 +647,7 @@ static int idtcm_sync_pps_output(struct idtcm_channel *channel)
646
647
Q9_TO_Q8_FANOUT_AND_CLOCK_SYNC_ENABLE_MASK )
647
648
out8_mux = 1 ;
648
649
649
- err = idtcm_read (idtcm , 0 , HW_Q11_CTRL_SPARE ,
650
+ err = idtcm_read (idtcm , HW_Q11_CTRL_SPARE , 0 ,
650
651
& temp , sizeof (temp ));
651
652
if (err )
652
653
return err ;
@@ -1253,7 +1254,7 @@ static void display_pll_and_masks(struct idtcm *idtcm)
1253
1254
static int idtcm_load_firmware (struct idtcm * idtcm ,
1254
1255
struct device * dev )
1255
1256
{
1256
- u16 scratch = IDTCM_FW_REG (idtcm -> fw_ver , V520 , SCRATCH );
1257
+ u16 scratch = SCSR_ADDR ( IDTCM_FW_REG (idtcm -> fw_ver , V520 , SCRATCH ) );
1257
1258
char fname [128 ] = FW_FILENAME ;
1258
1259
const struct firmware * fw ;
1259
1260
struct idtcm_fwrc * rec ;
@@ -1303,14 +1304,14 @@ static int idtcm_load_firmware(struct idtcm *idtcm,
1303
1304
err = 0 ;
1304
1305
1305
1306
/* Top (status registers) and bottom are read-only */
1306
- if (regaddr < GPIO_USER_CONTROL || regaddr >= scratch )
1307
+ if (regaddr < SCSR_ADDR ( GPIO_USER_CONTROL ) || regaddr >= scratch )
1307
1308
continue ;
1308
1309
1309
1310
/* Page size 128, last 4 bytes of page skipped */
1310
1311
if ((loaddr > 0x7b && loaddr <= 0x7f ) || loaddr > 0xfb )
1311
1312
continue ;
1312
1313
1313
- err = idtcm_write (idtcm , regaddr , 0 , & val , sizeof (val ));
1314
+ err = idtcm_write (idtcm , SCSR_BASE , regaddr , & val , sizeof (val ));
1314
1315
}
1315
1316
1316
1317
if (err )
@@ -1340,7 +1341,7 @@ static int idtcm_output_enable(struct idtcm_channel *channel,
1340
1341
return base ;
1341
1342
}
1342
1343
1343
- err = idtcm_read (idtcm , (u16 )base , OUT_CTRL_1 , & val , sizeof (val ));
1344
+ err = idtcm_read (idtcm , (u32 )base , OUT_CTRL_1 , & val , sizeof (val ));
1344
1345
if (err )
1345
1346
return err ;
1346
1347
@@ -1349,7 +1350,7 @@ static int idtcm_output_enable(struct idtcm_channel *channel,
1349
1350
else
1350
1351
val &= ~SQUELCH_DISABLE ;
1351
1352
1352
- return idtcm_write (idtcm , (u16 )base , OUT_CTRL_1 , & val , sizeof (val ));
1353
+ return idtcm_write (idtcm , (u32 )base , OUT_CTRL_1 , & val , sizeof (val ));
1353
1354
}
1354
1355
1355
1356
static int idtcm_perout_enable (struct idtcm_channel * channel ,
@@ -1713,10 +1714,10 @@ static s32 idtcm_getmaxphase(struct ptp_clock_info *ptp __always_unused)
1713
1714
static int _idtcm_adjphase (struct idtcm_channel * channel , s32 delta_ns )
1714
1715
{
1715
1716
struct idtcm * idtcm = channel -> idtcm ;
1716
- int err ;
1717
- u8 i ;
1718
1717
u8 buf [4 ] = {0 };
1719
1718
s32 phase_50ps ;
1719
+ int err ;
1720
+ u8 i ;
1720
1721
1721
1722
if (channel -> mode != PTP_PLL_MODE_WRITE_PHASE ) {
1722
1723
err = channel -> configure_write_phase (channel );
0 commit comments