コード例 #1
0
ファイル: sys_eeprom.c プロジェクト: Geeteshchintu/uboot-hack
/**
 * read_eeprom - read the EEPROM into memory
 */
static int read_eeprom(void)
{
    int ret;
#ifdef CONFIG_SYS_EEPROM_BUS_NUM
    unsigned int bus;
#endif

    if (has_been_read)
        return 0;

#ifdef CONFIG_SYS_EEPROM_BUS_NUM
    bus = i2c_get_bus_num();
    i2c_set_bus_num(CONFIG_SYS_EEPROM_BUS_NUM);
#endif

    ret = i2c_read(CONFIG_SYS_I2C_EEPROM_ADDR, 0, CONFIG_SYS_I2C_EEPROM_ADDR_LEN,
                   (void *)&e, sizeof(e));

#ifdef CONFIG_SYS_EEPROM_BUS_NUM
    i2c_set_bus_num(bus);
#endif

#ifdef DEBUG
    show_eeprom();
#endif

    has_been_read = (ret == 0) ? 1 : 0;

    return ret;
}
コード例 #2
0
ファイル: kp_imx53.c プロジェクト: sartura/u-boot
int board_late_init(void)
{
	int ret = 0;

	setup_ups();

	if (!power_init())
		setup_clocks();

	ret = read_eeprom();
	if (ret)
		printf("Error %d reading EEPROM content!\n", ret);

	eth_phy_reset();

	show_eeprom();
	read_board_id();

	return ret;
}
コード例 #3
0
ファイル: sys_eeprom.c プロジェクト: Geeteshchintu/uboot-hack
int do_mac(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
{
    char cmd;

    if (argc == 1) {
        show_eeprom();
        return 0;
    }

    cmd = argv[1][0];

    if (cmd == 'r') {
        read_eeprom();
        return 0;
    }

    if (cmd == 'i') {
#ifdef CONFIG_SYS_I2C_EEPROM_NXID
        memcpy(e.id, "NXID", sizeof(e.id));
        e.version = 0;
#else
        memcpy(e.id, "CCID", sizeof(e.id));
#endif
        return 0;
    }

    if (!is_valid) {
        printf("Please read the EEPROM ('r') and/or set the ID ('i') first.\n");
        return 0;
    }

    if (argc == 2) {
        switch (cmd) {
        case 's':	/* save */
            prog_eeprom();
            break;
        default:
            return cmd_usage(cmdtp);
        }

        return 0;
    }

    /* We know we have at least one parameter  */

    switch (cmd) {
    case 'n':	/* serial number */
        memset(e.sn, 0, sizeof(e.sn));
        strncpy((char *)e.sn, argv[2], sizeof(e.sn) - 1);
        update_crc();
        break;
    case 'e':	/* errata */
#ifdef CONFIG_SYS_I2C_EEPROM_NXID
        memset(e.errata, 0, 5);
        strncpy((char *)e.errata, argv[2], 4);
#else
        e.errata[0] = argv[2][0];
        e.errata[1] = argv[2][1];
#endif
        update_crc();
        break;
    case 'd':	/* date BCD format YYMMDDhhmmss */
        set_date(argv[2]);
        break;
    case 'p':	/* MAC table size */
        e.mac_count = simple_strtoul(argv[2], NULL, 16);
        update_crc();
        break;
    case '0' ... '7':	/* "mac 0" through "mac 7" */
        set_mac_address(cmd - '0', argv[2]);
        break;
    case 'h':	/* help */
    default:
        return cmd_usage(cmdtp);
    }

    return 0;
}
コード例 #4
0
ファイル: sys_eeprom.c プロジェクト: JamesAng/ub
int do_mac(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
{
	char cmd;

	if (argc == 1) {
		show_eeprom();
		return 0;
	}

	cmd = argv[1][0];

	if (cmd == 'r') {
#ifdef DEBUG
		printf("%s read\n", __func__);
#endif
		read_eeprom();
		return 0;
	}

	if (argc == 2) {
		switch (cmd) {
		case 's':	/* save */
#ifdef DEBUG
			printf("%s save\n", __func__);
#endif
			prog_eeprom();
			break;
		default:
			return cmd_usage(cmdtp);
		}

		return 0;
	}

	/* We know we have at least one parameter  */

	switch (cmd) {
	case 'n':	/* serial number */
#ifdef DEBUG
		printf("%s serial number\n", __func__);
#endif
		memset(e.sn, 0, sizeof(e.sn));
		strncpy((char *)e.sn, argv[2], sizeof(e.sn) - 1);
		update_crc();
		break;
	case 'd':	/* date BCD format YYMMDDhhmmss */
		set_date(argv[2]);
		break;
	case 'e':	/* errata */
		printf("mac errata not implemented\n");
		break;
	case 'i':	/* id */
		memset(e.id, 0, sizeof(e.id));
		strncpy((char *)e.id, argv[2], sizeof(e.id) - 1);
		update_crc();
		break;
	case 'p':	/* ports */
		printf("mac ports not implemented (always 1 port)\n");
		break;
	case '0' ... '9':
		/* we only have "mac 0" but any digit can be used here */
		set_mac_address(argv[2]);
		break;
	case 'h':	/* help */
	default:
		return cmd_usage(cmdtp);
	}

	return 0;
}