int do_mip405(cmd_tbl_t *cmdtp, int flag, int argc, char *argv[]) { ulong led_on; if (strcmp(argv[1], "info") == 0) { print_mip405_info(); return 0; } if (strcmp(argv[1], "led") == 0) { led_on = (ulong)simple_strtoul(argv[2], NULL, 10); user_led0(led_on); return 0; } return (do_mplcommon(cmdtp, flag, argc, argv)); }
int do_vcma9(cmd_tbl_t *cmdtp, int flag, int argc, char *argv[]) { struct eth_device *dev; char cs8900_name[10]; if (strcmp(argv[1], "info") == 0) { print_vcma9_info(); return 0; } #if defined(CONFIG_CS8900) if (strcmp(argv[1], "cs8900") == 0) { sprintf(cs8900_name, "%s-0", CS8900_DRIVERNAME); dev = eth_get_dev_by_name(cs8900_name); if (!dev) { printf("Couldn't find CS8900 driver"); return 0; } if (strcmp(argv[2], "read") == 0) { uchar addr; ushort data; addr = simple_strtoul(argv[3], NULL, 16); cs8900_e2prom_read(dev, addr, &data); printf("0x%2.2X: 0x%4.4X\n", addr, data); } else if (strcmp(argv[2], "write") == 0) { uchar addr; ushort data; addr = simple_strtoul(argv[3], NULL, 16); data = simple_strtoul(argv[4], NULL, 16); cs8900_e2prom_write(dev, addr, data); } else if (strcmp(argv[2], "setaddr") == 0) { uchar addr, i, csum; ushort data; uchar ethaddr[6]; /* check for valid ethaddr */ if (eth_getenv_enetaddr("ethaddr", ethaddr)) { addr = 1; data = 0x2158; cs8900_e2prom_write(dev, addr, data); csum = cs8900_chksum(data); addr++; for (i = 0; i < 6; i+=2) { data = ethaddr[i+1] << 8 | ethaddr[i]; cs8900_e2prom_write(dev, addr, data); csum += cs8900_chksum(data); addr++; } /* calculate header link byte */ data = 0xA100 | (addr * 2); cs8900_e2prom_write(dev, 0, data); csum += cs8900_chksum(data); /* write checksum word */ cs8900_e2prom_write(dev, addr, (0 - csum) << 8); } else { puts("\nplease defined 'ethaddr'\n"); } } else if (strcmp(argv[2], "dump") == 0) { uchar addr = 0, endaddr, csum; ushort data; puts("Dump of CS8900 config device: "); cs8900_e2prom_read(dev, addr, &data); if ((data & 0xE000) == 0xA000) { endaddr = (data & 0x00FF) / 2; csum = cs8900_chksum(data); for (addr = 1; addr <= endaddr; addr++) { cs8900_e2prom_read(dev, addr, &data); printf("\n0x%2.2X: 0x%4.4X", addr, data); csum += cs8900_chksum(data); } printf("\nChecksum: %s", (csum == 0) ? "ok" : "wrong"); } else { puts("no valid config found"); } puts("\n"); } return 0; } #endif #if 0 if (strcmp(argv[1], "cantest") == 0) { if (argc >= 3) vcma9_cantest(strcmp(argv[2], "s") ? 0 : 1); else vcma9_cantest(0); return 0; } if (strcmp(argv[1], "nandtest") == 0) { vcma9_nandtest(); return 0; } if (strcmp(argv[1], "nanderase") == 0) { vcma9_nanderase(); return 0; } if (strcmp(argv[1], "nandread") == 0) { ulong offset = 0; if (argc >= 3) offset = simple_strtoul(argv[2], NULL, 16); vcma9_nandread(offset); return 0; } if (strcmp(argv[1], "nandwrite") == 0) { ulong offset = 0; if (argc >= 3) offset = simple_strtoul(argv[2], NULL, 16); vcma9_nandwrite(offset); return 0; } if (strcmp(argv[1], "dactest") == 0) { if (argc >= 3) vcma9_dactest(strcmp(argv[2], "s") ? 0 : 1); else vcma9_dactest(0); return 0; } #endif return (do_mplcommon(cmdtp, flag, argc, argv)); }
int do_pati(cmd_tbl_t *cmdtp, int flag, int argc, char *argv[]) { if (strcmp(argv[1], "info") == 0) { show_pld_regs(); return 0; } if (strcmp(argv[1], "pci") == 0) { display_pci_regs(); return 0; } if (strcmp(argv[1], "led") == 0) { int led_nr,led_on; led_nr = (int)simple_strtoul(argv[2], NULL, 10); led_on = (int)simple_strtoul(argv[3], NULL, 10); if(!led_nr) user_led0(led_on); else user_led1(led_on); return 0; } #if defined(CONFIG_SYS_PCI_CON_DEVICE) if (strcmp(argv[1], "con") == 0) { pci_con_connect(); return 0; } if (strcmp(argv[1], "disc") == 0) { pci_con_disc(); return 0; } #endif if (strcmp(argv[1], "eeprom") == 0) { unsigned long addr; int size, offset; offset = 0; size = PATI_EEPROM_LAST_OFFSET; if(argc>2) { if(argc>3) { addr = simple_strtoul(argv[3], NULL, 16); if(argc>4) offset = (int) simple_strtoul(argv[4], NULL, 16); if(argc>5) size = (int) simple_strtoul(argv[5], NULL, 16); if (strcmp(argv[2], "read") == 0) { return (pati_pci_eeprom_read(offset, addr, size)); } if (strcmp(argv[2], "write") == 0) { return (pati_pci_eeprom_write(offset, addr, size)); } } if (strcmp(argv[2], "prg") == 0) { return (pati_pci_eeprom_prg()); } if (strcmp(argv[2], "era") == 0) { return (pati_pci_eeprom_erase()); } if (strcmp(argv[2], "reload") == 0) { reload_pci_eeprom(); return 0; } } } return (do_mplcommon(cmdtp, flag, argc, argv)); }
int do_vcma9(cmd_tbl_t *cmdtp, int flag, int argc, char *argv[]) { DECLARE_GLOBAL_DATA_PTR; if (strcmp(argv[1], "info") == 0) { print_vcma9_info(); return 0; } #if defined(CONFIG_DRIVER_CS8900) if (strcmp(argv[1], "cs8900") == 0) { if (strcmp(argv[2], "read") == 0) { uchar addr; ushort data; addr = simple_strtoul(argv[3], NULL, 16); cs8900_e2prom_read(addr, &data); printf("0x%2.2X: 0x%4.4X\n", addr, data); } else if (strcmp(argv[2], "write") == 0) { uchar addr; ushort data; addr = simple_strtoul(argv[3], NULL, 16); data = simple_strtoul(argv[4], NULL, 16); cs8900_e2prom_write(addr, data); } else if (strcmp(argv[2], "setaddr") == 0) { uchar addr, i, csum; ushort data; /* check for valid ethaddr */ for (i = 0; i < 6; i++) if (gd->bd->bi_enetaddr[i] != 0) break; if (i < 6) { addr = 1; data = 0x2158; cs8900_e2prom_write(addr, data); csum = cs8900_chksum(data); addr++; for (i = 0; i < 6; i+=2) { data = gd->bd->bi_enetaddr[i+1] << 8 | gd->bd->bi_enetaddr[i]; cs8900_e2prom_write(addr, data); csum += cs8900_chksum(data); addr++; } /* calculate header link byte */ data = 0xA100 | (addr * 2); cs8900_e2prom_write(0, data); csum += cs8900_chksum(data); /* write checksum word */ cs8900_e2prom_write(addr, (0 - csum) << 8); } else { puts("\nplease defined 'ethaddr'\n"); } } else if (strcmp(argv[2], "dump") == 0) { uchar addr = 0, endaddr, csum; ushort data; puts("Dump of CS8900 config device: "); cs8900_e2prom_read(addr, &data); if ((data & 0xE000) == 0xA000) { endaddr = (data & 0x00FF) / 2; csum = cs8900_chksum(data); for (addr = 1; addr <= endaddr; addr++) { cs8900_e2prom_read(addr, &data); printf("\n0x%2.2X: 0x%4.4X", addr, data); csum += cs8900_chksum(data); } printf("\nChecksum: %s", (csum == 0) ? "ok" : "wrong"); } else { puts("no valid config found"); } puts("\n"); } return 0; } #endif #if 0 if (strcmp(argv[1], "cantest") == 0) { if (argc >= 3) vcma9_cantest(strcmp(argv[2], "s") ? 0 : 1); else vcma9_cantest(0); return 0; } if (strcmp(argv[1], "nandtest") == 0) { vcma9_nandtest(); return 0; } if (strcmp(argv[1], "nanderase") == 0) { vcma9_nanderase(); return 0; } if (strcmp(argv[1], "nandread") == 0) { ulong offset = 0; if (argc >= 3) offset = simple_strtoul(argv[2], NULL, 16); vcma9_nandread(offset); return 0; } if (strcmp(argv[1], "nandwrite") == 0) { ulong offset = 0; if (argc >= 3) offset = simple_strtoul(argv[2], NULL, 16); vcma9_nandwrite(offset); return 0; } if (strcmp(argv[1], "dactest") == 0) { if (argc >= 3) vcma9_dactest(strcmp(argv[2], "s") ? 0 : 1); else vcma9_dactest(0); return 0; } #endif return (do_mplcommon(cmdtp, flag, argc, argv)); }