@@ -32,8 +32,13 @@ static void device_name_get(size_t idx, struct shell_static_entry *entry)
3232
3333SHELL_DYNAMIC_CMD_CREATE (dsub_device_name , device_name_get );
3434
35- static int parse_device_arg (const struct shell * sh , char * * argv , const struct device * * dev )
35+ static int parse_device_arg (const struct shell * sh , size_t argc ,
36+ char * * argv , const struct device * * dev )
3637{
38+ if (argc < 2 ) {
39+ shell_error (sh , "not enough arguments" );
40+ return - EINVAL ;
41+ }
3742 * dev = shell_device_get_binding (argv [1 ]);
3843 if (!* dev ) {
3944 shell_error (sh , "device %s not found" , argv [1 ]);
@@ -55,12 +60,12 @@ static int cmd_mdio_scan(const struct shell *sh, size_t argc, char **argv)
5560 uint16_t reg_addr ;
5661 int ret ;
5762
58- ret = parse_device_arg (sh , argv , & dev );
63+ ret = parse_device_arg (sh , argc , argv , & dev );
5964 if (ret < 0 ) {
6065 return ret ;
6166 }
6267
63- if (argc >= 2 ) {
68+ if (argc >= 3 ) {
6469 reg_addr = strtol (argv [2 ], NULL , 16 );
6570 } else {
6671 reg_addr = 0 ;
@@ -98,7 +103,7 @@ static int cmd_mdio_write(const struct shell *sh, size_t argc, char **argv)
98103 uint16_t port_addr ;
99104 int ret ;
100105
101- ret = parse_device_arg (sh , argv , & dev );
106+ ret = parse_device_arg (sh , argc , argv , & dev );
102107 if (ret < 0 ) {
103108 return ret ;
104109 }
@@ -130,7 +135,7 @@ static int cmd_mdio_read(const struct shell *sh, size_t argc, char **argv)
130135 uint16_t port_addr ;
131136 int ret ;
132137
133- ret = parse_device_arg (sh , argv , & dev );
138+ ret = parse_device_arg (sh , argc , argv , & dev );
134139 if (ret < 0 ) {
135140 return ret ;
136141 }
@@ -164,7 +169,7 @@ static int cmd_mdio_write_45(const struct shell *sh, size_t argc, char **argv)
164169 uint8_t port_addr ;
165170 int ret ;
166171
167- ret = parse_device_arg (sh , argv , & dev );
172+ ret = parse_device_arg (sh , argc , argv , & dev );
168173 if (ret < 0 ) {
169174 return ret ;
170175 }
@@ -198,7 +203,7 @@ static int cmd_mdio_read_c45(const struct shell *sh, size_t argc, char **argv)
198203 uint8_t port_addr ;
199204 int ret ;
200205
201- ret = parse_device_arg (sh , argv , & dev );
206+ ret = parse_device_arg (sh , argc , argv , & dev );
202207 if (ret < 0 ) {
203208 return ret ;
204209 }
@@ -226,7 +231,7 @@ static int cmd_mdio_read_c45(const struct shell *sh, size_t argc, char **argv)
226231SHELL_STATIC_SUBCMD_SET_CREATE (sub_mdio_cmds ,
227232 SHELL_CMD_ARG (scan , & dsub_device_name ,
228233 "Scan MDIO bus for devices: scan <device> [<reg_addr>]" ,
229- cmd_mdio_scan , 1 , 1 ),
234+ cmd_mdio_scan , 2 , 1 ),
230235 SHELL_CMD_ARG (read , & dsub_device_name ,
231236 "Read from MDIO device: read <device> <phy_addr> <reg_addr>" ,
232237 cmd_mdio_read , 4 , 0 ),
0 commit comments