|
@@ -29,143 +29,6 @@
|
|
|
#include <command.h>
|
|
|
#include <miiphy.h>
|
|
|
|
|
|
-#ifdef CONFIG_TERSE_MII
|
|
|
-/*
|
|
|
- * Display values from last command.
|
|
|
- */
|
|
|
-uint last_op;
|
|
|
-uint last_addr;
|
|
|
-uint last_data;
|
|
|
-uint last_reg;
|
|
|
-
|
|
|
-/*
|
|
|
- * MII device/info/read/write
|
|
|
- *
|
|
|
- * Syntax:
|
|
|
- * mii device {devname}
|
|
|
- * mii info {addr}
|
|
|
- * mii read {addr} {reg}
|
|
|
- * mii write {addr} {reg} {data}
|
|
|
- */
|
|
|
-int do_mii (cmd_tbl_t * cmdtp, int flag, int argc, char *argv[])
|
|
|
-{
|
|
|
- char op;
|
|
|
- unsigned char addr, reg;
|
|
|
- unsigned short data;
|
|
|
- int rcode = 0;
|
|
|
- char *devname;
|
|
|
-
|
|
|
- if (argc < 2) {
|
|
|
- printf ("Usage:\n%s\n", cmdtp->usage);
|
|
|
- return 1;
|
|
|
- }
|
|
|
-
|
|
|
-#if defined(CONFIG_8xx) || defined(CONFIG_MCF52x2)
|
|
|
- mii_init ();
|
|
|
-#endif
|
|
|
-
|
|
|
- /*
|
|
|
- * We use the last specified parameters, unless new ones are
|
|
|
- * entered.
|
|
|
- */
|
|
|
- op = last_op;
|
|
|
- addr = last_addr;
|
|
|
- data = last_data;
|
|
|
- reg = last_reg;
|
|
|
-
|
|
|
- if ((flag & CMD_FLAG_REPEAT) == 0) {
|
|
|
- op = argv[1][0];
|
|
|
- if (argc >= 3)
|
|
|
- addr = simple_strtoul (argv[2], NULL, 16);
|
|
|
- if (argc >= 4)
|
|
|
- reg = simple_strtoul (argv[3], NULL, 16);
|
|
|
- if (argc >= 5)
|
|
|
- data = simple_strtoul (argv[4], NULL, 16);
|
|
|
- }
|
|
|
-
|
|
|
- /* use current device */
|
|
|
- devname = miiphy_get_current_dev();
|
|
|
-
|
|
|
- /*
|
|
|
- * check device/read/write/list.
|
|
|
- */
|
|
|
- if (op == 'i') {
|
|
|
- unsigned char j, start, end;
|
|
|
- unsigned int oui;
|
|
|
- unsigned char model;
|
|
|
- unsigned char rev;
|
|
|
-
|
|
|
- /*
|
|
|
- * Look for any and all PHYs. Valid addresses are 0..31.
|
|
|
- */
|
|
|
- if (argc >= 3) {
|
|
|
- start = addr; end = addr + 1;
|
|
|
- } else {
|
|
|
- start = 0; end = 31;
|
|
|
- }
|
|
|
-
|
|
|
- for (j = start; j < end; j++) {
|
|
|
- if (miiphy_info (devname, j, &oui, &model, &rev) == 0) {
|
|
|
- printf ("PHY 0x%02X: "
|
|
|
- "OUI = 0x%04X, "
|
|
|
- "Model = 0x%02X, "
|
|
|
- "Rev = 0x%02X, "
|
|
|
- "%3dbase%s, %s\n",
|
|
|
- j, oui, model, rev,
|
|
|
- miiphy_speed (devname, j),
|
|
|
- miiphy_is_1000base_x (devname, j)
|
|
|
- ? "X" : "T",
|
|
|
- (miiphy_duplex (devname, j) == FULL)
|
|
|
- ? "FDX" : "HDX");
|
|
|
- }
|
|
|
- }
|
|
|
- } else if (op == 'r') {
|
|
|
- if (miiphy_read (devname, addr, reg, &data) != 0) {
|
|
|
- puts ("Error reading from the PHY\n");
|
|
|
- rcode = 1;
|
|
|
- } else {
|
|
|
- printf ("%04X\n", data & 0x0000FFFF);
|
|
|
- }
|
|
|
- } else if (op == 'w') {
|
|
|
- if (miiphy_write (devname, addr, reg, data) != 0) {
|
|
|
- puts ("Error writing to the PHY\n");
|
|
|
- rcode = 1;
|
|
|
- }
|
|
|
- } else if (op == 'd') {
|
|
|
- if (argc == 2)
|
|
|
- miiphy_listdev ();
|
|
|
- else
|
|
|
- miiphy_set_current_dev (argv[2]);
|
|
|
- } else {
|
|
|
- printf ("Usage:\n%s\n", cmdtp->usage);
|
|
|
- return 1;
|
|
|
- }
|
|
|
-
|
|
|
- /*
|
|
|
- * Save the parameters for repeats.
|
|
|
- */
|
|
|
- last_op = op;
|
|
|
- last_addr = addr;
|
|
|
- last_data = data;
|
|
|
- last_reg = reg;
|
|
|
-
|
|
|
- return rcode;
|
|
|
-}
|
|
|
-
|
|
|
-/***************************************************/
|
|
|
-
|
|
|
-U_BOOT_CMD(
|
|
|
- mii, 5, 1, do_mii,
|
|
|
- "mii - MII utility commands\n",
|
|
|
- "device - list available devices\n"
|
|
|
- "mii device <devname> - set current device\n"
|
|
|
- "mii info <addr> - display MII PHY info\n"
|
|
|
- "mii read <addr> <reg> - read MII PHY <addr> register <reg>\n"
|
|
|
- "mii write <addr> <reg> <data> - write MII PHY <addr> register <reg>\n"
|
|
|
-);
|
|
|
-
|
|
|
-#else /* ! CONFIG_TERSE_MII ================================================= */
|
|
|
-
|
|
|
typedef struct _MII_reg_desc_t {
|
|
|
ushort regno;
|
|
|
char * name;
|
|
@@ -599,5 +462,3 @@ U_BOOT_CMD(
|
|
|
"mii dump <addr> <reg> - pretty-print <addr> <reg> (0-5 only)\n"
|
|
|
"Addr and/or reg may be ranges, e.g. 2-7.\n"
|
|
|
);
|
|
|
-
|
|
|
-#endif /* CONFIG_TERSE_MII */
|