mirror of
https://github.com/logicog/RTLPlayground.git
synced 2026-08-30 14:52:51 +08:00
Add commands to access PHY registers
This commit is contained in:
+107
@@ -803,6 +803,109 @@ err:
|
||||
}
|
||||
|
||||
|
||||
void parse_phyget(void)
|
||||
{
|
||||
__xdata uint8_t phy_id, dev_id, hex_size;
|
||||
__xdata uint16_t reg;
|
||||
|
||||
if (cmd_words_b[1] < 0 || cmd_words_b[2] < 0 || cmd_words_b[3] < 0) {
|
||||
goto err;
|
||||
}
|
||||
|
||||
if (atoi_byte(&phy_id, cmd_words_b[1])) {
|
||||
goto err;
|
||||
}
|
||||
|
||||
if (atoi_byte(&dev_id, cmd_words_b[2])) {
|
||||
goto err;
|
||||
}
|
||||
|
||||
hex_size = atoi_hex(cmd_words_b[3]);
|
||||
if (hex_size == 0 || hex_size > 2) {
|
||||
goto err;
|
||||
}
|
||||
reg = hexvalue[0];
|
||||
if (hex_size == 2) {
|
||||
reg <<= 8;
|
||||
reg |= hexvalue[1];
|
||||
}
|
||||
|
||||
print_string("PHYGET: ");
|
||||
itoa(phy_id);
|
||||
print_string(":");
|
||||
itoa(dev_id);
|
||||
print_string(".");
|
||||
print_short(reg);
|
||||
print_string(": VAL: ");
|
||||
|
||||
phy_read(phy_id, dev_id, reg);
|
||||
print_phy_data();
|
||||
write_char('\n');
|
||||
return;
|
||||
|
||||
err:
|
||||
print_string("usage: phyget <phy-id> <dev-id> <hex:reg>\n");
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
void parse_physet(void)
|
||||
{
|
||||
__xdata uint8_t phy_id, dev_id, hex_size;
|
||||
__xdata uint16_t reg, val;
|
||||
|
||||
if (cmd_words_b[1] < 0 || cmd_words_b[2] < 0 || cmd_words_b[3] < 0 || cmd_words_b[4] < 0) {
|
||||
goto err;
|
||||
}
|
||||
|
||||
if (atoi_byte(&phy_id, cmd_words_b[1])) {
|
||||
goto err;
|
||||
}
|
||||
|
||||
if (atoi_byte(&dev_id, cmd_words_b[2])) {
|
||||
goto err;
|
||||
}
|
||||
|
||||
hex_size = atoi_hex(cmd_words_b[3]);
|
||||
if (hex_size == 0 || hex_size > 2) {
|
||||
goto err;
|
||||
}
|
||||
reg = hexvalue[0];
|
||||
if (hex_size == 2) {
|
||||
reg <<= 8;
|
||||
reg |= hexvalue[1];
|
||||
}
|
||||
|
||||
hex_size = atoi_hex(cmd_words_b[4]);
|
||||
if (hex_size == 0 || hex_size > 2) {
|
||||
goto err;
|
||||
}
|
||||
val = hexvalue[0];
|
||||
if (hex_size == 2) {
|
||||
val <<= 8;
|
||||
val |= hexvalue[1];
|
||||
}
|
||||
|
||||
print_string("PHYSET: ");
|
||||
itoa(phy_id);
|
||||
print_string(":");
|
||||
itoa(dev_id);
|
||||
print_string(".");
|
||||
print_short(reg);
|
||||
print_string(": VAL: ");
|
||||
|
||||
phy_write(phy_id, dev_id, reg, val);
|
||||
|
||||
print_short(val);
|
||||
write_char('\n');
|
||||
return;
|
||||
|
||||
err:
|
||||
print_string("usage: physet <phy-id> <dev-id> <hex:reg> <hex:val>\n");
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
void parse_rnd(void)
|
||||
{
|
||||
// In order to get a new random numner, this bit has to be set each time!
|
||||
@@ -1205,6 +1308,10 @@ void cmd_parser(void) __banked
|
||||
parse_sdsget();
|
||||
} else if (cmd_compare(0, "sdsset")) {
|
||||
parse_sdsset();
|
||||
} else if (cmd_compare(0, "phyget")) {
|
||||
parse_phyget();
|
||||
} else if (cmd_compare(0, "physet")) {
|
||||
parse_physet();
|
||||
} else if (cmd_compare(0, "rnd")) {
|
||||
parse_rnd();
|
||||
} else if (cmd_compare(0, "passwd")) {
|
||||
|
||||
Reference in New Issue
Block a user