• Wolfram Sang's avatar
    i2c-algo-pca: Extend for future drivers · c01b0831
    Wolfram Sang authored
    The separation between algorithm and adapter was unsharp at places. This was
    partly hidden by the fact, that the ISA-driver allowed just one instance and
    had all private data in static variables. This patch makes neccessary
    preparations to add a platform driver on top of the algorithm, while still
    supporting ISA. Note: Due to lack of hardware, the ISA-driver could not be
    tested except that it builds.
    
    Concerning the core struct i2c_algo_pca_data:
    
    - A private data field was added, all hardware dependant data may go here.
      Similar to other algorithms, now a pointer to this data is passed to the
      adapter's functions. In order to make as less changes as possible to the
      ISA-driver, it leaves the private data empty and still only uses its static
      variables.
    
    - A "reset_chip" function pointer was added; such a functionality must come
      from the adapter, not the algorithm.
    
    - use a variable "i2c_clock" instead of a function pointer "get_clock",
      allowing for write access to a default in case a wrong value was supplied.
    
    In the algorithm-file:
    
    - move "i2c-pca-algo.h" into "linux/i2c-algo-pca.h"
    - now using per_instance timeout values (i2c_adap->timeout)
    - error messages specify the device, not only the driver name
    - restructure initialization to easily support "i2c_add_numbered_adapter"
    - drop "retries" and "own" (i2c address) as they were unused
    
    (The state-machine for I2C-communication was not touched.)
    
    In the ISA-driver:
    
    - adapt to new algorithm
    Signed-off-by: default avatarWolfram Sang <w.sang@pengutronix.de>
    Signed-off-by: default avatarJean Delvare <khali@linux-fr.org>
    c01b0831
i2c-algo-pca.c 9.79 KB