int xmux_config_init() { int rc = eeprom_open(); if (rc < 0) { trace_err("eeprom open failed! rc %d", rc); return rc; } trace_info("xmux eeprom size %#x, param size %#x", EEPROM_SIZE, sizeof(struct xmux_eeprom_param)); trace_info("data layout in eeprom:"); trace_info("Sys: %#08x", EEPROM_OFF_SYS); trace_info("Net: %#08x", EEPROM_OFF_NET); trace_info("User: %#08x", EEPROM_OFF_USER); trace_info("Misc: %#08x", EEPROM_OFF_MISC); trace_info("MUX_PROG_INFO: %#08x", EEPROM_OFF_MUX_PROG_INFO); trace_info("PID_MAP_TABLE: %#08x", EEPROM_OFF_PID_MAP_TABLE); trace_info("OUTPUT_PSI: %#08x", EEPROM_OFF_OUTPUT_PSI); trace_info("PID_TRANS_INFO: %#08x", EEPROM_OFF_PID_TRANS_INFO); #if CHANNEL_MAX_NUM == 1 trace_info("INPUT_PMT_SE: %#08x", EEPROM_OFF_INPUT_PMT_SEC); trace_info("TUNNER: %#08x", EEPROM_OFF_TUNNER); #endif return 0; }
int main(int argc, char** argv) { struct eeprom e; int op; op = 0; usage_if(argc != 2 || argv[1][0] != '-' || argv[1][2] != '\0'); op = argv[1][1]; fprintf(stderr, "Open /dev/i2c/0 with 8bit mode\n"); die_if(eeprom_open("/dev/i2c/0", 0x50, EEPROM_TYPE_8BIT_ADDR, &e) < 0, "unable to open eeprom device file " "(check that the file exists and that it's readable)"); switch(op) { case 'r': fprintf(stderr, " Reading 256 bytes from 0x0\n"); read_from_eeprom(&e, 0, 256); break; case 'w': fprintf(stderr, " Writing 0x00-0xff into 24C08 \n"); write_to_eeprom(&e, 0); break; default: usage_if(1); exit(1); } eeprom_close(&e); return 0; }
void init_mpu6050(struct eeprom *e) { int result=0; die_if(eeprom_open("/dev/i2c/0", 0x68, EEPROM_TYPE_8BIT_ADDR, e) < 0, "unable to open MPU6050 device file "); result=mpu_init(); if(!result) { printf("mpu initialization complete......\n "); //mpu initialization complete if(!mpu_set_sensors(INV_XYZ_GYRO | INV_XYZ_ACCEL)) //mpu_set_sensor printf("mpu_set_sensor complete ......\n"); else printf("mpu_set_sensor come across error ......\n"); if(!mpu_configure_fifo(INV_XYZ_GYRO | INV_XYZ_ACCEL)) //mpu_configure_fifo printf("mpu_configure_fifo complete ......\n"); else printf("mpu_configure_fifo come across error ......\n"); if(!mpu_set_sample_rate(50)) //mpu_set_sample_rate printf("mpu_set_sample_rate complete ......\n"); else printf("mpu_set_sample_rate error ......\n"); if(!dmp_load_motion_driver_firmware()) //dmp_load_motion_driver_firmvare printf("dmp_load_motion_driver_firmware complete ......\n"); else printf("dmp_load_motion_driver_firmware come across error ......\n"); if(!dmp_set_orientation(inv_orientation_matrix_to_scalar(gyro_orientation))) //dmp_set_orientation printf("dmp_set_orientation complete ......\n"); else printf("dmp_set_orientation come across error ......\n"); if(!dmp_enable_feature(DMP_FEATURE_6X_LP_QUAT | DMP_FEATURE_TAP | DMP_FEATURE_ANDROID_ORIENT | DMP_FEATURE_SEND_RAW_ACCEL | DMP_FEATURE_SEND_CAL_GYRO | DMP_FEATURE_GYRO_CAL)) //dmp_enable_feature printf("dmp_enable_feature complete ......\n"); else printf("dmp_enable_feature come across error ......\n"); if(!dmp_set_fifo_rate(50)) //dmp_set_fifo_rate printf("dmp_set_fifo_rate complete ......\n"); else printf("dmp_set_fifo_rate come across error ......\n"); run_self_test(); //自检 if(!mpu_set_dmp_state(1)) printf("mpu_set_dmp_state complete ......\n"); else printf("mpu_set_dmp_state come across error ......\n"); } else { printf("mpu INIT INIT INIT error ......\r\n"); } }
int main(int argc, char** argv) { int r = 0; int i, j; unsigned char testbuf[MAXTEST], rxbuf[MAXTEST]; int testtimes = 0; int errors = 0; r = eeprom_open(); if( r < 0 ){ printf("eeprom open failed!\n"); exit(1); } //for(;;){ r = eeprom_read_buf(0x0, MAXTEST, rxbuf); if( r < 0 ){ printf("eeprom read failed!\n"); exit(1); } printf("\nThe EEPROM contents:\n "); for(i = 0; i < 16; i ++){ printf(" %02x ", i); } printf("\n[00]: "); for(i = 1, j = 1; i <= MAXTEST; i ++){ printf("0x%02x,", rxbuf[i-1]); if(i %16 == 0){ if(i < MAXTEST) printf("\n[%02x]: ", j++); else printf("\n"); } } printf("\n"); //} eeprom_close(); }
int main(int argc, char **argv) { struct eeprom_dev *dev; int ch; int writing = 0; char *tmp; struct novena_eeprom_data_v2 newrom; int newdata = 0; int update_mac = 0; int update_features = 0; int update_serial = 0; int update_oops_start = 0; int update_oops_length = 0; int update_page_size = 0; int update_total_size = 0; int update_lvds1 = 0; int update_lvds2 = 0; int update_hdmi = 0; dev = eeprom_open(I2C_BUS, EEPROM_ADDRESS); if (!dev) return 1; while ((ch = getopt(argc, argv, "hm:s:f:wo:p:l:1:2:d:e:i:")) != -1) { switch(ch) { /* MAC address */ case 'm': if (parse_mac(optarg, newrom.mac)) return 1; update_mac = 1; break; /* Serial number */ case 's': newrom.serial = strtoul(optarg, NULL, 0); update_serial = 1; break; /* Featuresset */ case 'f': newrom.features = parse_features(optarg); if (newrom.features == -1) return 1; update_features = 1; break; case 'o': newrom.eepromoops_offset = strtoul(optarg, &tmp, 0); update_oops_start = 1; if (tmp && *tmp) { newrom.eepromoops_length = strtoul(tmp + 1, NULL, 0); update_oops_length = 1; } break; case 'p': newrom.page_size = strtoul(optarg, NULL, 0); update_page_size = 1; break; case 'l': newrom.eeprom_size = strtoul(optarg, NULL, 0); update_total_size = 1; break; case '1': if (parse_modesetting(&newrom.lvds1, optarg)) return 1; update_lvds1 = 1; break; case '2': if (parse_modesetting(&newrom.lvds2, optarg)) return 1; update_lvds2 = 1; break; case 'd': if (parse_modesetting(&newrom.hdmi, optarg)) return 1; update_hdmi = 1; break; case 'e': return eeprom_export(dev, optarg); case 'i': if (eeprom_import(dev, optarg)) return 1; newdata = 1; break; /* Write data */ case 'w': writing = 1; break; case 'h': print_usage(argv[0]); return 1; default: printf("Unrecognized option: %c\n", ch); print_usage(argv[0]); return 1; } } argc -= optind; argv += optind; if (update_mac || update_serial || update_features || update_oops_start || update_oops_length || update_page_size || update_total_size || update_lvds1 || update_lvds2 || update_hdmi) newdata = 1; if (argc) print_usage(argv[0]); else if (!writing) { if (newdata) printf("Not writing data, as -w was not specified\n"); printf("Current EEPROM settings:\n"); print_eeprom_data(dev); } else { int ret; ret = eeprom_read(dev); if (ret) return 1; if (dev->data.v1.version == 1) { printf("Updating v1 EEPROM to v2...\n"); eeprom_upgrade_v1_to_v2(dev); } else if (dev->data.v1.version == 2) { /* Ignore v2 */; } else { if (memcmp(dev->data.v2.signature, NOVENA_SIGNATURE, sizeof(dev->data.v2.signature))) printf("Blank EEPROM found, " "setting defaults...\n"); else fprintf(stderr, "Unrecognized EEPROM version found " "(v%d), overwriting with v2\n", dev->data.v1.version); eeprom_get_defaults(dev); } if (update_mac) memcpy(&dev->data.v2.mac, newrom.mac, sizeof(newrom.mac)); if (update_serial) dev->data.v2.serial = newrom.serial; if (update_features) dev->data.v2.features = newrom.features; if (update_oops_start) dev->data.v2.eepromoops_offset = newrom.eepromoops_offset; if (update_oops_length) dev->data.v2.eepromoops_length = newrom.eepromoops_length; if (update_page_size) dev->data.v2.page_size = newrom.page_size; if (update_total_size) dev->data.v2.eeprom_size = newrom.eeprom_size; if (update_lvds1) memcpy(&dev->data.v2.lvds1, &newrom.lvds1, sizeof(dev->data.v2.lvds1)); if (update_lvds2) memcpy(&dev->data.v2.lvds2, &newrom.lvds2, sizeof(dev->data.v2.lvds2)); if (update_hdmi) memcpy(&dev->data.v2.hdmi, &newrom.hdmi, sizeof(dev->data.v2.hdmi)); memcpy(&dev->data.v2.signature, NOVENA_SIGNATURE, sizeof(dev->data.v2.signature)); dev->data.v2.version = 2; ret = eeprom_write(dev); if (ret) { printf("EEPROM write failed\n"); return 1; } printf("Updated EEPROM. New values:\n"); print_eeprom_data(dev); } eeprom_close(&dev); return 0; }
int main(int argc, char** argv) { struct eeprom e; int ret, op, i2c_addr, memaddr, size, want_hex, dummy, force, sixteen; char *device, *arg = 0, *i2c_addr_s; struct stat st; int eeprom_type = 0; op = want_hex = dummy = force = sixteen = 0; g_quiet = 0; while((ret = getopt(argc, argv, "1:8fr:qhw:xd")) != -1) { switch(ret) { case '1': usage_if(*optarg != '6' || strlen(optarg) != 1); die_if(eeprom_type, "EEPROM type switch (-8 or -16) used twice"); eeprom_type = EEPROM_TYPE_16BIT_ADDR; break; case 'x': want_hex++; break; case 'd': dummy++; break; case '8': die_if(eeprom_type, "EEPROM type switch (-8 or -16) used twice"); eeprom_type = EEPROM_TYPE_8BIT_ADDR; break; case 'f': force++; break; case 'q': g_quiet++; break; case 'h': usage_if(1); break; default: die_if(op != 0, "Both read and write requested"); arg = optarg; op = ret; } } if(!eeprom_type) eeprom_type = EEPROM_TYPE_8BIT_ADDR; // default usage_if(op == 0); // no switches // set device and i2c_addr reading from cmdline or env device = i2c_addr_s = 0; switch(argc - optind) { case 0: device = getenv(ENV_DEV); i2c_addr_s = getenv(ENV_I2C_ADDR); break; case 1: if(stat(argv[optind], &st) != -1) { device = argv[optind]; i2c_addr_s = getenv(ENV_I2C_ADDR); } else { device = getenv(ENV_DEV); i2c_addr_s = argv[optind]; } break; case 2: device = argv[optind++]; i2c_addr_s = argv[optind]; break; default: usage_if(1); } usage_if(!device || !i2c_addr_s); i2c_addr = strtoul(i2c_addr_s, 0, 0); print_info("eeprog %s, a 24Cxx EEPROM reader/writer\n", VERSION); print_info("Copyright (c) 2003 by Stefano Barbato - All rights reserved.\n"); print_info(" Bus: %s, Address: 0x%x, Mode: %dbit\n", device, i2c_addr, (eeprom_type == EEPROM_TYPE_8BIT_ADDR ? 8 : 16) ); if(dummy) { fprintf(stderr, "Dummy mode selected, nothing done.\n"); return 0; } die_if(eeprom_open(device, i2c_addr, eeprom_type, &e) < 0, "unable to open eeprom device file (check that the file exists and that it's readable)"); switch(op) { case 'r': if(force == 0) confirm_action(); size = 1; // default parse_arg(arg, &memaddr, &size); print_info(" Reading %d bytes from 0x%x\n", size, memaddr); read_from_eeprom(&e, memaddr, size, want_hex); break; case 'w': if(force == 0) confirm_action(); parse_arg(arg, &memaddr, &size); print_info(" Writing stdin starting at address 0x%x\n", memaddr); write_to_eeprom(&e, memaddr); break; default: usage_if(1); exit(1); } eeprom_close(&e); return 0; }