Changeset 5210
- Timestamp:
- 04/24/08 14:43:40 (7 months ago)
- Files:
-
- i2c-tools/trunk/tools/i2cbusses.c (modified) (6 diffs)
- i2c-tools/trunk/tools/i2cdetect.c (modified) (13 diffs)
- i2c-tools/trunk/tools/i2cdump.c (modified) (12 diffs)
- i2c-tools/trunk/tools/i2cget.c (modified) (9 diffs)
- i2c-tools/trunk/tools/i2cset.c (modified) (6 diffs)
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
i2c-tools/trunk/tools/i2cbusses.c
r5205 r5210 1 1 /* 2 2 i2cbusses: Print the installed i2c busses for both 2.4 and 2.6 kernels. 3 Part of user-space programs to access for I2C 3 Part of user-space programs to access for I2C 4 4 devices. 5 5 Copyright (c) 1999-2003 Frodo Looijaard <frodol@dds.nl> and … … 226 226 sprintf(n, "%s/%s/device", sysfs, de->d_name); 227 227 if(!(ddir = opendir(n))) 228 continue; 228 continue; 229 229 while ((dde = readdir(ddir)) != NULL) { 230 230 if (!strcmp(dde->d_name, ".")) … … 234 234 if ((!strncmp(dde->d_name, "i2c-", 4))) { 235 235 sprintf(n, "%s/%s/device/%s/name", 236 sysfs, de->d_name, dde->d_name);236 sysfs, de->d_name, dde->d_name); 237 237 if((f = fopen(n, "r"))) 238 238 goto found; … … 360 360 if (address < 0x03 || address > 0x77) { 361 361 fprintf(stderr, "Error: Chip address out of range " 362 "(0x03-0x77)!\n");362 "(0x03-0x77)!\n"); 363 363 return -2; 364 364 } … … 382 382 if (errno == ENOENT) { 383 383 fprintf(stderr, "Error: Could not open file " 384 "`/dev/i2c-%d' or `/dev/i2c/%d': %s\n",385 i2cbus, i2cbus, strerror(ENOENT));384 "`/dev/i2c-%d' or `/dev/i2c/%d': %s\n", 385 i2cbus, i2cbus, strerror(ENOENT)); 386 386 } else { 387 387 fprintf(stderr, "Error: Could not open file " 388 "`%s': %s\n", filename, strerror(errno));388 "`%s': %s\n", filename, strerror(errno)); 389 389 if (errno == EACCES) 390 390 fprintf(stderr, "Run as root?\n"); 391 391 } 392 392 } 393 393 394 394 return file; 395 395 } … … 401 401 if (ioctl(file, force ? I2C_SLAVE_FORCE : I2C_SLAVE, address) < 0) { 402 402 fprintf(stderr, 403 "Error: Could not set address to 0x%02x: %s\n",404 address, strerror(errno));403 "Error: Could not set address to 0x%02x: %s\n", 404 address, strerror(errno)); 405 405 return -errno; 406 406 } i2c-tools/trunk/tools/i2cdetect.c
r5206 r5210 38 38 { 39 39 fprintf(stderr, 40 "Usage: i2cdetect [-y] [-a] [-q|-r] I2CBUS [FIRST LAST]\n"41 " i2cdetect -F I2CBUS\n"42 " i2cdetect -l\n"43 " I2CBUS is an integer or an I2C bus name\n"44 " If provided, FIRST and LAST limit the probing range.\n");40 "Usage: i2cdetect [-y] [-a] [-q|-r] I2CBUS [FIRST LAST]\n" 41 " i2cdetect -F I2CBUS\n" 42 " i2cdetect -l\n" 43 " I2CBUS is an integer or an I2C bus name\n" 44 " If provided, FIRST and LAST limit the probing range.\n"); 45 45 } 46 46 … … 70 70 } else { 71 71 fprintf(stderr, "Error: Could not set " 72 "address to 0x%02x: %s\n", i+j,73 strerror(errno));72 "address to 0x%02x: %s\n", i+j, 73 strerror(errno)); 74 74 return -1; 75 75 } … … 152 152 { 153 153 int i; 154 154 155 155 for (i = 0; all_func[i].value; i++) { 156 156 printf("%-32s %s\n", all_func[i].name, … … 203 203 if (mode != MODE_AUTO && mode != MODE_FUNC) { 204 204 fprintf(stderr, "Error: Different modes " 205 "specified!\n");205 "specified!\n"); 206 206 exit(1); 207 207 } 208 208 mode = MODE_FUNC; 209 209 break; 210 case 'r': 210 case 'r': 211 211 if (mode == MODE_QUICK) { 212 212 fprintf(stderr, "Error: Different modes " 213 "specified!\n");213 "specified!\n"); 214 214 exit(1); 215 215 } … … 219 219 if (mode == MODE_READ) { 220 220 fprintf(stderr, "Error: Different modes " 221 "specified!\n");221 "specified!\n"); 222 222 exit(1); 223 223 } … … 265 265 if (*end) { 266 266 fprintf(stderr, "Error: FIRST argment not a " 267 "number!\n");267 "number!\n"); 268 268 help(); 269 269 exit(1); … … 271 271 if (tmp < first || tmp > last) { 272 272 fprintf(stderr, "Error: FIRST argument out of range " 273 "(0x%02x-0x%02x)!\n", first, last);273 "(0x%02x-0x%02x)!\n", first, last); 274 274 help(); 275 275 exit(1); … … 280 280 if (*end) { 281 281 fprintf(stderr, "Error: LAST argment not a " 282 "number!\n");282 "number!\n"); 283 283 help(); 284 284 exit(1); … … 286 286 if (tmp < first || tmp > last) { 287 287 fprintf(stderr, "Error: LAST argument out of range " 288 "(0x%02x-0x%02x)!\n", first, last);288 "(0x%02x-0x%02x)!\n", first, last); 289 289 help(); 290 290 exit(1); … … 303 303 if (ioctl(file, I2C_FUNCS, &funcs) < 0) { 304 304 fprintf(stderr, "Error: Could not get the adapter " 305 "functionality matrix: %s\n", strerror(errno));305 "functionality matrix: %s\n", strerror(errno)); 306 306 close(file); 307 307 exit(1); … … 318 318 if (mode != MODE_READ && !(funcs & I2C_FUNC_SMBUS_QUICK)) { 319 319 fprintf(stderr, "Error: Can't use SMBus Quick Write command " 320 "on this bus (ISA bus?)\n");320 "on this bus (ISA bus?)\n"); 321 321 close(file); 322 322 exit(1); … … 324 324 if (mode != MODE_QUICK && !(funcs & I2C_FUNC_SMBUS_READ_BYTE)) { 325 325 fprintf(stderr, "Error: Can't use SMBus Read Byte command " 326 "on this bus (ISA bus?)\n");326 "on this bus (ISA bus?)\n"); 327 327 close(file); 328 328 exit(1); … … 333 333 334 334 fprintf(stderr, "WARNING! This program can confuse your I2C " 335 "bus, cause data loss and worse!\n");335 "bus, cause data loss and worse!\n"); 336 336 337 337 fprintf(stderr, "I will probe file %s%s.\n", filename, 338 mode==MODE_QUICK?" using quick write commands":339 mode==MODE_READ?" using read byte commands":"");338 mode==MODE_QUICK?" using quick write commands": 339 mode==MODE_READ?" using read byte commands":""); 340 340 fprintf(stderr, "I will probe address range 0x%02x-0x%02x.\n", 341 first, last);341 first, last); 342 342 343 343 fprintf(stderr, "Continue? [Y/n] "); i2c-tools/trunk/tools/i2cdump.c
r5206 r5210 34 34 { 35 35 fprintf(stderr, 36 "Usage: i2cdump [-f] [-y] [-r first-last] I2CBUS ADDRESS [MODE] [BANK [BANKREG]]\n"37 " I2CBUS is an integer or an I2C bus name\n"38 " ADDRESS is an integer (0x03 - 0x77)\n"39 " MODE is one of:\n"36 "Usage: i2cdump [-f] [-y] [-r first-last] I2CBUS ADDRESS [MODE] [BANK [BANKREG]]\n" 37 " I2CBUS is an integer or an I2C bus name\n" 38 " ADDRESS is an integer (0x03 - 0x77)\n" 39 " MODE is one of:\n" 40 40 " b (byte, default)\n" 41 41 " w (word)\n" … … 43 43 " s (SMBus block)\n" 44 44 " i (I2C block)\n" 45 " c (consecutive byte)\n"46 " Append p for SMBus PEC\n");45 " c (consecutive byte)\n" 46 " Append p for SMBus PEC\n"); 47 47 } 48 48 … … 154 154 if (*end || size == I2C_SMBUS_BLOCK_DATA) { 155 155 fprintf(stderr, "Error: Invalid bank register " 156 "number!\n");156 "number!\n"); 157 157 help(); 158 158 exit(1); … … 160 160 if (bankreg < 0 || bankreg > 0xff) { 161 161 fprintf(stderr, "Error: bank out of range " 162 "(0-0xff)!\n");162 "(0-0xff)!\n"); 163 163 help(); 164 164 exit(1); … … 195 195 default: 196 196 fprintf(stderr, 197 "Error: Range parameter not compatible with selected mode!\n");197 "Error: Range parameter not compatible with selected mode!\n"); 198 198 exit(1); 199 199 } … … 208 208 if (ioctl(file, I2C_FUNCS, &funcs) < 0) { 209 209 fprintf(stderr, "Error: Could not get the adapter " 210 "functionality matrix: %s\n", strerror(errno));210 "functionality matrix: %s\n", strerror(errno)); 211 211 exit(1); 212 212 } … … 249 249 if (!(funcs & I2C_FUNC_SMBUS_READ_I2C_BLOCK)) { 250 250 fprintf(stderr, "Error: Adapter for i2c bus %d does " 251 "not have i2c block read capability\n",252 i2cbus);251 "not have i2c block read capability\n", 252 i2cbus); 253 253 exit(1); 254 254 } … … 262 262 if (ioctl(file, I2C_PEC, 1) < 0) { 263 263 fprintf(stderr, "Error: Could not set PEC: %s\n", 264 strerror(errno));264 strerror(errno)); 265 265 exit(1); 266 266 } 267 267 if (!(funcs & (I2C_FUNC_SMBUS_PEC | I2C_FUNC_I2C))) { 268 268 fprintf(stderr, "Warning: Adapter for i2c bus %d does " 269 "not seem to actually support PEC\n", i2cbus);269 "not seem to actually support PEC\n", i2cbus); 270 270 } 271 271 } … … 273 273 if (!yes) { 274 274 fprintf(stderr, "WARNING! This program can confuse your I2C " 275 "bus, cause data loss and worse!\n");275 "bus, cause data loss and worse!\n"); 276 276 277 277 fprintf(stderr, "I will probe file %s, address 0x%x, mode " 278 "%s\n", filename, address,279 size == I2C_SMBUS_BLOCK_DATA ? "smbus block" :280 size == I2C_SMBUS_I2C_BLOCK_DATA ? "i2c block" :281 size == I2C_SMBUS_BYTE ? "byte consecutive read" :282 size == I2C_SMBUS_BYTE_DATA ? "byte" : "word");278 "%s\n", filename, address, 279 size == I2C_SMBUS_BLOCK_DATA ? "smbus block" : 280 size == I2C_SMBUS_I2C_BLOCK_DATA ? "i2c block" : 281 size == I2C_SMBUS_BYTE ? "byte consecutive read" : 282 size == I2C_SMBUS_BYTE_DATA ? "byte" : "word"); 283 283 if (pec) 284 284 fprintf(stderr, "PEC checking enabled.\n"); 285 285 if (even) 286 286 fprintf(stderr, "Only probing even register " 287 "addresses.\n");287 "addresses.\n"); 288 288 if (bank) { 289 289 if (size == I2C_SMBUS_BLOCK_DATA) 290 290 fprintf(stderr, "Using command 0x%02x.\n", 291 bank);291 bank); 292 292 else 293 293 fprintf(stderr, "Probing bank %d using bank " 294 "register 0x%02x.\n", bank, bankreg);294 "register 0x%02x.\n", bank, bankreg); 295 295 } 296 296 if (range) { 297 297 fprintf(stderr, 298 "Probe range limited to 0x%02x-0x%02x.\n",299 first, last);298 "Probe range limited to 0x%02x-0x%02x.\n", 299 first, last); 300 300 } 301 301 … … 347 347 if (res <= 0) { 348 348 fprintf(stderr, "Error: Block read failed, " 349 "return code %d\n", res);349 "return code %d\n", res); 350 350 exit(1); 351 351 } … … 363 363 if(res != 0) { 364 364 fprintf(stderr, "Error: Write start address " 365 "failed, return code %d\n", res);365 "failed, return code %d\n", res); 366 366 exit(1); 367 367 } … … 396 396 } else if (size == I2C_SMBUS_WORD_DATA) { 397 397 res = i2c_smbus_read_word_data(file, 398 i+j);398 i+j); 399 399 if (res < 0) { 400 400 block[i+j] = res; i2c-tools/trunk/tools/i2cget.c
r5207 r5210 39 39 { 40 40 fprintf(stderr, 41 "Usage: i2cget [-f] [-y] I2CBUS CHIP-ADDRESS [DATA-ADDRESS [MODE]]\n"42 " I2CBUS is an integer or an I2C bus name\n"43 " ADDRESS is an integer (0x03 - 0x77)\n"44 " MODE is one of:\n"45 " b (read byte data, default)\n"46 " w (read word data)\n"47 " c (write byte/read byte)\n"48 " Append p for SMBus PEC\n");41 "Usage: i2cget [-f] [-y] I2CBUS CHIP-ADDRESS [DATA-ADDRESS [MODE]]\n" 42 " I2CBUS is an integer or an I2C bus name\n" 43 " ADDRESS is an integer (0x03 - 0x77)\n" 44 " MODE is one of:\n" 45 " b (read byte data, default)\n" 46 " w (read word data)\n" 47 " c (write byte/read byte)\n" 48 " Append p for SMBus PEC\n"); 49 49 exit(1); 50 50 } … … 57 57 if (ioctl(file, I2C_FUNCS, &funcs) < 0) { 58 58 fprintf(stderr, "Error: Could not get the adapter " 59 "functionality matrix: %s\n", strerror(errno));59 "functionality matrix: %s\n", strerror(errno)); 60 60 return -1; 61 61 } … … 65 65 if (!(funcs & I2C_FUNC_SMBUS_READ_BYTE)) { 66 66 fprintf(stderr, "Error: Adapter for i2c bus %d does " 67 "not have read byte capability\n", i2cbus);67 "not have read byte capability\n", i2cbus); 68 68 return -1; 69 69 } … … 71 71 && !(funcs & I2C_FUNC_SMBUS_WRITE_BYTE)) { 72 72 fprintf(stderr, "Error: Adapter for i2c bus %d does " 73 "not have write byte capability\n", i2cbus);73 "not have write byte capability\n", i2cbus); 74 74 return -1; 75 75 } … … 79 79 if (!(funcs & I2C_FUNC_SMBUS_READ_BYTE_DATA)) { 80 80 fprintf(stderr, "Error: Adapter for i2c bus %d does " 81 "not have read byte data capability\n", i2cbus);81 "not have read byte data capability\n", i2cbus); 82 82 return -1; 83 83 } … … 87 87 if (!(funcs & I2C_FUNC_SMBUS_READ_WORD_DATA)) { 88 88 fprintf(stderr, "Error: Adapter for i2c bus %d does " 89 "not have read word data capability\n", i2cbus);89 "not have read word data capability\n", i2cbus); 90 90 return -1; 91 91 } … … 96 96 && !(funcs & (I2C_FUNC_SMBUS_PEC | I2C_FUNC_I2C))) { 97 97 fprintf(stderr, "Warning: Adapter for i2c bus %d does " 98 "not seem to support PEC\n", i2cbus);98 "not seem to support PEC\n", i2cbus); 99 99 } 100 100 … … 122 122 if (size == I2C_SMBUS_BYTE && daddress >= 0 && pec) { 123 123 fprintf(stderr, "WARNING! All I2C chips and some SMBus chips " 124 "will interpret a write\nbyte command with PEC as a"125 "write byte data command, effectively writing a\n"126 "value into a register!\n");124 "will interpret a write\nbyte command with PEC as a" 125 "write byte data command, effectively writing a\n" 126 "value into a register!\n"); 127 127 dont++; 128 128 } … … 224 224 225 225 if (!yes && !confirm(filename, address, size, daddress, pec)) 226 exit(0);226 exit(0); 227 227 228 228 if (pec && ioctl(file, I2C_PEC, 1) < 0) { 229 229 fprintf(stderr, "Error: Could not set PEC: %s\n", 230 strerror(errno));230 strerror(errno)); 231 231 exit(1); 232 232 } i2c-tools/trunk/tools/i2cset.c
r5209 r5210 37 37 fprintf(stderr, 38 38 "Usage: i2cset [-f] [-y] I2CBUS CHIP-ADDRESS DATA-ADDRESS VALUE [MODE] [MASK]\n" 39 " I2CBUS is an integer or an I2C bus name\n"40 " ADDRESS is an integer (0x03 - 0x77)\n"41 " MODE is one of:\n"42 " b (byte, default)\n"39 " I2CBUS is an integer or an I2C bus name\n" 40 " ADDRESS is an integer (0x03 - 0x77)\n" 41 " MODE is one of:\n" 42 " b (byte, default)\n" 43 43 " w (word)\n" 44 " Append p for SMBus PEC\n");44 " Append p for SMBus PEC\n"); 45 45 exit(1); 46 46 } … … 53 53 if (ioctl(file, I2C_FUNCS, &funcs) < 0) { 54 54 fprintf(stderr, "Error: Could not get the adapter " 55 "functionality matrix: %s\n", strerror(errno));55 "functionality matrix: %s\n", strerror(errno)); 56 56 return -1; 57 57 } … … 61 61 if (!(funcs & I2C_FUNC_SMBUS_WRITE_BYTE_DATA)) { 62 62 fprintf(stderr, "Error: Adapter for i2c bus %d does " 63 "not have byte write capability\n", i2cbus);63 "not have byte write capability\n", i2cbus); 64 64 return -1; 65 65 } … … 69 69 if (!(funcs & I2C_FUNC_SMBUS_WRITE_WORD_DATA)) { 70 70 fprintf(stderr, "Error: Adapter for i2c bus %d does " 71 "not have word write capability\n", i2cbus);71 "not have word write capability\n", i2cbus); 72 72 return -1; 73 73 } … … 78 78 && !(funcs & (I2C_FUNC_SMBUS_PEC | I2C_FUNC_I2C))) { 79 79 fprintf(stderr, "Warning: Adapter for i2c bus %d does " 80 "not seem to support PEC\n", i2cbus);80 "not seem to support PEC\n", i2cbus); 81 81 } 82 82 … … 245 245 if (pec && ioctl(file, I2C_PEC, 1) < 0) { 246 246 fprintf(stderr, "Error: Could not set PEC: %s\n", 247 strerror(errno));247 strerror(errno)); 248 248 close(file); 249 249 exit(1);
