@@ -110,8 +110,8 @@ struct mc_vsc8541_data {
110
110
uint8_t link_monitor_thread_stack [STACK_SIZE ];
111
111
};
112
112
113
- static int phy_mc_vsc8541_read (const struct device * dev , uint16_t reg_addr , uint32_t * data );
114
- static int phy_mc_vsc8541_write (const struct device * dev , uint16_t reg_addr , uint32_t data );
113
+ static int phy_mc_vsc8541_read (const struct device * dev , uint16_t reg_addr , uint16_t * data );
114
+ static int phy_mc_vsc8541_write (const struct device * dev , uint16_t reg_addr , uint16_t data );
115
115
static void phy_mc_vsc8541_link_monitor (void * arg1 , void * arg2 , void * arg3 );
116
116
117
117
#if CONFIG_PHY_VERIFY_DEVICE_IDENTIFICATION
@@ -123,11 +123,11 @@ static int phy_mc_vsc8541_verify_phy_id(const struct device *dev)
123
123
uint16_t phy_id_1 ;
124
124
uint16_t phy_id_2 ;
125
125
126
- if (0 != phy_mc_vsc8541_read (dev , PHY_REG_PAGE0_ID1 , ( uint32_t * ) & phy_id_1 )) {
126
+ if (0 != phy_mc_vsc8541_read (dev , PHY_REG_PAGE0_ID1 , & phy_id_1 )) {
127
127
return - EINVAL ;
128
128
}
129
129
130
- if (0 != phy_mc_vsc8541_read (dev , PHY_REG_PAGE0_ID2 , ( uint32_t * ) & phy_id_2 )) {
130
+ if (0 != phy_mc_vsc8541_read (dev , PHY_REG_PAGE0_ID2 , & phy_id_2 )) {
131
131
return - EINVAL ;
132
132
}
133
133
@@ -216,7 +216,7 @@ static int phy_mc_vsc8541_reset(const struct device *dev)
216
216
}
217
217
218
218
/* wait for phy finished software reset */
219
- uint32_t reg = 0 ;
219
+ uint16_t reg = 0 ;
220
220
221
221
do {
222
222
phy_mc_vsc8541_read (dev , PHY_REG_PAGE0_BMCR , & reg );
@@ -271,10 +271,10 @@ static int phy_mc_vsc8541_reset(const struct device *dev)
271
271
static int phy_mc_vsc8541_get_speed (const struct device * dev , struct phy_link_state * state )
272
272
{
273
273
int ret ;
274
- uint32_t status ;
275
- uint32_t link10_status ;
276
- uint32_t link100_status ;
277
- uint32_t link1000_status ;
274
+ uint16_t status ;
275
+ uint16_t link10_status ;
276
+ uint16_t link100_status ;
277
+ uint16_t link1000_status ;
278
278
279
279
ret = phy_mc_vsc8541_read (dev , PHY_REG_PAGE0_BMSR , & status );
280
280
if (ret ) {
@@ -361,8 +361,8 @@ static int phy_mc_vsc8541_init(const struct device *dev)
361
361
static int phy_mc_vsc8541_get_link (const struct device * dev , struct phy_link_state * state )
362
362
{
363
363
int ret ;
364
- uint32_t reg_sr ;
365
- uint32_t reg_cr ;
364
+ uint16_t reg_sr ;
365
+ uint16_t reg_cr ;
366
366
367
367
ret = phy_mc_vsc8541_read (dev , PHY_REG_PAGE0_BMSR , & reg_sr );
368
368
if (ret ) {
@@ -470,7 +470,7 @@ void phy_mc_vsc8541_link_monitor(void *arg1, void *arg2, void *arg3)
470
470
* - to speed up, we store the last used page and only swap page if needed
471
471
*
472
472
*/
473
- static int phy_mc_vsc8541_read (const struct device * dev , uint16_t reg_addr , uint32_t * data )
473
+ static int phy_mc_vsc8541_read (const struct device * dev , uint16_t reg_addr , uint16_t * data )
474
474
{
475
475
const struct mc_vsc8541_config * cfg = dev -> config ;
476
476
struct mc_vsc8541_data * dev_data = dev -> data ;
@@ -479,7 +479,7 @@ static int phy_mc_vsc8541_read(const struct device *dev, uint16_t reg_addr, uint
479
479
* data = 0U ;
480
480
481
481
/* decode page */
482
- uint32_t page = reg_addr >> 8 ;
482
+ uint16_t page = reg_addr >> 8 ;
483
483
484
484
/* mask out lower byte */
485
485
reg_addr &= 0x00ff ;
@@ -488,7 +488,7 @@ static int phy_mc_vsc8541_read(const struct device *dev, uint16_t reg_addr, uint
488
488
489
489
/* select page, given by register upper byte */
490
490
if (dev_data -> active_page != page ) {
491
- ret = mdio_write (cfg -> mdio_dev , cfg -> addr , PHY_REG_PAGE_SELECTOR , ( uint16_t ) page );
491
+ ret = mdio_write (cfg -> mdio_dev , cfg -> addr , PHY_REG_PAGE_SELECTOR , page );
492
492
if (ret ) {
493
493
mdio_bus_disable (cfg -> mdio_dev );
494
494
return ret ;
@@ -497,7 +497,7 @@ static int phy_mc_vsc8541_read(const struct device *dev, uint16_t reg_addr, uint
497
497
}
498
498
499
499
/* select register, given by register lower byte */
500
- ret = mdio_read (cfg -> mdio_dev , cfg -> addr , reg_addr , ( uint16_t * ) data );
500
+ ret = mdio_read (cfg -> mdio_dev , cfg -> addr , reg_addr , data );
501
501
mdio_bus_disable (cfg -> mdio_dev );
502
502
if (ret ) {
503
503
return ret ;
@@ -506,6 +506,15 @@ static int phy_mc_vsc8541_read(const struct device *dev, uint16_t reg_addr, uint
506
506
return 0 ;
507
507
}
508
508
509
+ /**
510
+ * @brief Reading of phy register content at given address via mdio interface
511
+ * For external API using uint32_t as data type
512
+ */
513
+ static int phy_mc_vsc8541_read_ext (const struct device * dev , uint16_t reg_addr , uint32_t * data )
514
+ {
515
+ return phy_mc_vsc8541_read (dev , reg_addr , (uint16_t * )data );
516
+ }
517
+
509
518
/**
510
519
* @brief Writing of new value to phy register at given address via mdio interface
511
520
*
@@ -514,14 +523,14 @@ static int phy_mc_vsc8541_read(const struct device *dev, uint16_t reg_addr, uint
514
523
* - to speed up, we store the last used page and only swap page if needed
515
524
*
516
525
*/
517
- static int phy_mc_vsc8541_write (const struct device * dev , uint16_t reg_addr , uint32_t data )
526
+ static int phy_mc_vsc8541_write (const struct device * dev , uint16_t reg_addr , uint16_t data )
518
527
{
519
528
const struct mc_vsc8541_config * cfg = dev -> config ;
520
529
struct mc_vsc8541_data * dev_data = dev -> data ;
521
530
int ret ;
522
531
523
532
/* decode page */
524
- uint32_t page = reg_addr >> 8 ;
533
+ uint16_t page = reg_addr >> 8 ;
525
534
526
535
/* mask out lower byte */
527
536
reg_addr &= 0x00ff ;
@@ -539,7 +548,7 @@ static int phy_mc_vsc8541_write(const struct device *dev, uint16_t reg_addr, uin
539
548
}
540
549
541
550
/* write register, given by lower byte */
542
- ret = mdio_write (cfg -> mdio_dev , cfg -> addr , reg_addr , ( uint16_t ) data );
551
+ ret = mdio_write (cfg -> mdio_dev , cfg -> addr , reg_addr , data );
543
552
mdio_bus_disable (cfg -> mdio_dev );
544
553
if (ret ) {
545
554
return ret ;
@@ -548,12 +557,17 @@ static int phy_mc_vsc8541_write(const struct device *dev, uint16_t reg_addr, uin
548
557
return 0 ;
549
558
}
550
559
560
+ static int phy_mc_vsc8541_write_ext (const struct device * dev , uint16_t reg_addr , uint32_t data )
561
+ {
562
+ return phy_mc_vsc8541_write (dev , reg_addr , (uint16_t )data );
563
+ }
564
+
551
565
static DEVICE_API (ethphy , mc_vsc8541_phy_api ) = {
552
566
.get_link = phy_mc_vsc8541_get_link ,
553
567
.cfg_link = phy_mc_vsc8541_cfg_link ,
554
568
.link_cb_set = phy_mc_vsc8541_link_cb_set ,
555
- .read = phy_mc_vsc8541_read ,
556
- .write = phy_mc_vsc8541_write ,
569
+ .read = phy_mc_vsc8541_read_ext ,
570
+ .write = phy_mc_vsc8541_write_ext ,
557
571
};
558
572
559
573
#if DT_ANY_INST_HAS_PROP_STATUS_OKAY (reset_gpios )
0 commit comments