Changeset 3608

2001-12-31 17:55:36 (14 years ago)

big TODO update, was almost 2 years old.

Added outline of SMBus 2.0 plan and other stuff,
deleted things that were done. Comments or additions welcome.

2 modified


  • i2c/trunk/CHANGES

    r3603 r3608  
    20202.6.3 (2001????) 
     21  TODO: Many updates 
    2122  drivers (all): Add message loglevels to printk's 
    2223  i2c.h: Add defines for 2-byte address block reads/writes 
  • i2c/trunk/TODO

    r3441 r3608  
     1I2C / SMBus TODO list 
     2Contact us if you have comments or wish to help. 
     5* SMBus 2.0 
     6  SMBus 2.0 requires PEC and ARP. Implementation is only required 
     7  to access an SMBus 2.0 client chip that requires address resolution. 
     8  Here is a preliminary plan. 
     9     PEC (Packet Error Checking): 
     10        Adapters may or may not have hardware support for PEC. 
     11        - Add capability flag for I2C_FUNC_SMBUS_HWPEC to i2c.h 
     12        - Add message flag for I2C_M_HWPEC for i2c_msg to i2c.h 
     13        - Add transaction types for PEC versions to i2c.h 
     14        - Add PEC generation/calculation to i2c-core.c 
     15        - In i2c-core.c, pass HWPEC flag to adapter if PEC transaction 
     16          is supported and adapter supports HWPEC. 
     17          If adapter does not support HWPEC, do software PEC: add 
     18          PEC byte to writes (convert byte write to word write, etc.); 
     19          verify PEC and strip off on reads. 
     20        - New return codes for bad PEC? 
     21        - Add PEC support to the i2c-dev interface 
     22     ARP (Address Resolution Protocol): 
     23        Create a module i2c-arp which will serve as ARP Master. 
     24        The design will be similar to "chip" drivers in lm_sensors. 
     25        It will respond to address 0x61 
     26        (the SMBus Device Default Address) on all i2c adapters. 
     27        It will maintain UDID tables and the Used Address Pool.  
     28        It may export this data via /proc. 
     29        Additional communication may be required between i2c-arp and 
     30        the adapter driver. 
     31        ARP communications are SMBus Block Reads and Writes with PEC. 
     32        Note: "Notify ARP Master" at address 0x08 does not appear 
     33        to be required. It would depend on Host-as-slave mode (see below), 
     34        and some method to signal the i2c-arp module. 
     36* 16-bit Register Addresses 
     37  There is no support for 16-bit register addresses (used by serial 
     38  eeproms larger than 16K bit, such as the Atmel 24C32) in i2c-core.c 
     39  or i2c-dev.c. 
     40  Emulation support is required; the Intel i801, for example, 
     41  supports a 16-bit address i2c block read (see i2c-i801 in lm_sensors). 
     42  General 16-bit support for all transaction types will require 
     43  many changes. Support for 16-bit address block 
     44  accesses only can be added more easily, and the 
     45  functionality #defines I2C_FUNC_SMBUS_READ_I2C_BLOCK_2 and 
     46  I2C_FUNC_SMBUS_WRITE_I2C_BLOCK_2 have been added to i2c.h. 
     47  This may be enough to begin with for these new eeproms. 
     48  The emulation layer has not been implemented. 
     49  There is an alternate proposal from Wolfgang Denk <> 
     50  for a driver 'i2c-simple' that supports a generalized address 
     51  length of 1-4 bytes and accesses via ioctls on /dev. 
     53* Host-as-slave mode in i2c adapters may need to be integrated 
     54  with the adapter host code, because the lm_sensors-type chip driver 
     55  architecture is not well suited to implementing a chip slave, 
     56  the slave mode will require locking with the master mode, and 
     57  specialized commmunication such as "Notify ARP Master". 
     58  Adapters may respond to one or more host-as-slave addresses. The 
     59  functionality bits and the rest of the API will have to be extended 
     60  to support slaves embedded in host adapters. 
     62* 64-bit functionality values may be required to represent all 
     63  the new capabilities described above. 
     65* Emulation layer i2c block reads are fixed at 32 bytes and there is 
     66  currently no method to change it. You cannot, for example, 
     67  read an entire serial eeprom with a single block read, or read 
     68  only the 7 bytes in a clock chip. 
     70* Enhance mkpatch so it will patch additional drivers such as 
     71  the Power PC modules to 2.4 kernels that support it. Currently 
     72  these drivers are not patched because it would break 2.2 kernels. 
     74* i2c-pcf-epp.h is missing, so i2c-pcf-epp.c can't be compiled. 
     76* i2c version strings were added to i2c.h but they are used only 
     77  for printk's. Integers would be better for use in preprocessor 
     78  directives for conditional compiles. 
     80* Alternative i2c implementations in kernel to be converted to 
     81  the standard i2c implementation in this package. 
     82  Most if not all of these are bit-banging algorithms, 
     83  for which the official driver is drivers/i2c/i2c-algo-bit.c. 
     84  For a good example of using i2c-algo-bit, see drivers/acorn/char/i2c.c. 
     86        drivers/media/video/i2c-old.c   Used by: 
     87                drivers/media/video/buz.c 
     88                drivers/media/video/i2c-parport.c 
     89                drivers/media/video/saa7110.c 
     90                drivers/media/video/saa7111.c 
     91                drivers/media/video/saa7185.c 
     92                drivers/media/video/stradis.c 
     93                drivers/media/video/zr36120.c 
     94                drivers/media/video/zr36120_i2c.c 
     95        arch/ppc/mbxboot/iic.c 
     96        drivers/media/radio/radio-trust.c 
     97        drivers/media/video/pms.c 
     98        drivers/media/video/stradis.c 
     99        drivers/net/acenic.c 
     100        drivers/net/sk98lin/ski2c.c 
     101        drivers/sbus/char/envctrl.c 
     102        drivers/sbus/char/vfc_i2c.c 
     103        drivers/scsi/cpqfcTSi2c.c 
     104        drivers/usb/ov511.c 
    1106* Make sure the /proc registration code in i2c-core uses the same debugging 
    2107  code and other conventions as the rest of the file. 
    3109* Make especially i2c-core SMP-safe. This means: locks around all global 
    4110  variable access, especially during (de)registration activity. 
    5 * Use the defines in <linux/kernel.h> to classify printk commands  
    6   as informational, fatal, etc. Already done for some modules at some  
    7   places. 
    8 * Introduce version numbers for all modules, reported on insertion 
    9112* Check debugging levels in all modules are sane. 
    10114* linux/Documentation/devices.txt lists i2c0, i2c1 etc. instead of i2c-0, i2c-1 
    11 * Find some solution for block reads in smbus-on-i2c emulation code 
    12   We need a hack in the i2c level code for this :-( 
    13116* At least the bit-lp and bit-velle modules do no detection on loading; 
    14117  ask Simon whether this is possible to add. 
    15119* Correct all module locking code (see Keith Owens' email about this)