Changeset 5771

Show
Ignore:
Timestamp:
09/17/09 17:59:38 (3 years ago)
Author:
khali
Message:

Add support for short writes with PEC.

Location:
i2c-tools/trunk
Files:
3 modified

Legend:

Unmodified
Added
Removed
  • i2c-tools/trunk/CHANGES

    r5746 r5771  
    1515  decode-xeon: Delete 
    1616  eepromer: Fix array initialization overrun 
     17  i2cset: Add support for short writes with PEC 
    1718  i2c-stub-from-dump: Use udev settle to speed up initialization 
    1819 
  • i2c-tools/trunk/tools/i2cset.8

    r5393 r5771  
    1212.I chip-address 
    1313.I data-address 
    14 .RI [ "value " [ "mode" ]] 
     14.RI [ value ] 
     15.RI [ mode ] 
    1516.br 
    1617.B i2cset 
     
    7475mode without PEC. The \fIvalue\fR provided must be within range for the 
    7576specified data type (0x00-0xFF for bytes, 0x0000-0xFFFF for words). 
     77Another possible mode is \fBc\fP, which doesn't write any value (so-called 
     78short write). You usually don't have to specify this mode, as it is the 
     79default when no value is provided, unless you also want to enable PEC. 
    7680 
    7781.SH WARNING 
  • i2c-tools/trunk/tools/i2cset.c

    r5394 r5771  
    33    Copyright (C) 2001-2003  Frodo Looijaard <frodol@dds.nl>, and 
    44                             Mark D. Studebaker <mdsxyz123@yahoo.com> 
    5     Copyright (C) 2004-2008  Jean Delvare <khali@linux-fr.org> 
     5    Copyright (C) 2004-2009  Jean Delvare <khali@linux-fr.org> 
    66 
    77    This program is free software; you can redistribute it and/or modify 
     
    3636{ 
    3737        fprintf(stderr, 
    38                 "Usage: i2cset [-f] [-y] [-m MASK] I2CBUS CHIP-ADDRESS DATA-ADDRESS [VALUE [MODE]]\n" 
     38                "Usage: i2cset [-f] [-y] [-m MASK] I2CBUS CHIP-ADDRESS DATA-ADDRESS [VALUE] [MODE]\n" 
    3939                "  I2CBUS is an integer or an I2C bus name\n" 
    4040                "  ADDRESS is an integer (0x03 - 0x77)\n" 
    4141                "  MODE is one of:\n" 
    42                 "    b (byte, default)\n" 
    43                 "    w (word)\n" 
     42                "    c (byte, no value)\n" 
     43                "    b (byte data, default)\n" 
     44                "    w (word data)\n" 
    4445                "    Append p for SMBus PEC\n"); 
    4546        exit(1); 
     
    181182 
    182183        if (argc > flags + 4) { 
    183                 size = I2C_SMBUS_BYTE_DATA; 
    184                 value = strtol(argv[flags+4], &end, 0); 
    185                 if (*end || value < 0) { 
    186                         fprintf(stderr, "Error: Data value invalid!\n"); 
    187                         help(); 
     184                if (!strcmp(argv[flags+4], "c") 
     185                 || !strcmp(argv[flags+4], "cp")) { 
     186                        size = I2C_SMBUS_BYTE; 
     187                        value = -1; 
     188                        pec = argv[flags+4][1] == 'p'; 
     189                } else { 
     190                        size = I2C_SMBUS_BYTE_DATA; 
     191                        value = strtol(argv[flags+4], &end, 0); 
     192                        if (*end || value < 0) { 
     193                                fprintf(stderr, "Error: Data value invalid!\n"); 
     194                                help(); 
     195                        } 
    188196                } 
    189197        } else {