28 Jan, 2008

40 commits

  • SCSI sg table allocation has a maximum size (of SCSI_MAX_SG_SEGMENTS,
    currently 128) and this will cause a BUG_ON() in SCSI if something
    tries an allocation over it. This patch adds a size limit to the
    chaining allocator to allow the specification of the maximum
    allocation size for chaining, so we always chain in units of the
    maximum SCSI allocation size.

    Signed-off-by: James Bottomley
    Signed-off-by: Jens Axboe

    James Bottomley
     
  • Also change scsi_alloc_sgtable() to just return 0/failure, since it
    maps to the command passed in. ->request_buffer is now no longer needed,
    once drivers are adapted to use scsi_sglist() it can be killed.

    Signed-off-by: Jens Axboe

    Jens Axboe
     
  • Manually doing chained sg lists is not trivial, so add some helpers
    to make sure that drivers get it right.

    Signed-off-by: Jens Axboe

    Jens Axboe
     
  • * 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/cooloney/blackfin-2.6: (54 commits)
    MAINTIANERS: just use Mike gmail e-mail for contact and pawn the serial driver off onto Sonic
    [Blackfin] arch: remove old I2C BF54x porting.
    [Blackfin] arch: Add the semtimedop syscall. Upstream uClibc doesn't compile without it.
    [Blackfin] arch: fix bug kernel boot message: memory information is not reasonable
    [Blackfin] arch: use common flash driver to setup partitions rather than the bf5xx-flash driver
    [Blackfin] arch: Fix bug - kernel build with Debug option enabled fails to boot up
    [Blackfin] arch: Fix bug Only RTC interrupt can wake up deeper sleep core.
    [Blackfin] arch: Add proper SW System Reset delay sequence
    [Blackfin] arch: Update copyright date
    [Blackfin] arch: GPIO API cleanup and anomaly update
    [Blackfin] arch: Fix BUG gpio_direction_output API is not compatitable with GENERIC_GPIO API interface
    [Blackfin] arch: Initial checkin of the memory protection support.
    [Blackfin] arch: set_bfin_dma_config shouldnt set SYNC or RESTART by default - add argument or option
    [Blackfin] arch: Add some comments - fix semicolons
    [Blackfin] arch: move all code related to CPLB handling into a new subdirectory under kernel/
    [Blackfin] arch: print out list of modules if kernel is crashing and tell people if the kernel is tainted
    [Blackfin] arch: enable generic GPIO based I2C driver in STAMP-BF533, EZKIT-BF533 and EZKIT-BF561 boards
    [Blackfin] arch: Don't oops_in_progress if single step is comming from the kernel
    [Blackfin] arch: Fix BUG - kernel sometimes would stuck with KEYBOARD_GPIO on
    [Blackfin] arch: update to latest anomaly sheets
    ...

    Linus Torvalds
     
  • All the users of this driver explicitly specify the I2C bus numbers
    to be used in their platform data. Make the driver respect that.

    Signed-off-by: Kalle Pokki
    Cc: Bryan Wu
    Signed-off-by: Jean Delvare

    Kalle Pokki
     
  • Convert the i2c-au1550 bus driver to platform driver, and
    register a platform device for the Alchemy Db/Pb series of
    boards.

    Signed-off-by: Manuel Lauss
    Signed-off-by: Jean Delvare

    Manuel Lauss
     
  • Zero-bytes transfers would leave the bus transaction unfinished
    (no i2c stop is sent), with the following transfer actually
    sending the slave address to the previously addressed device,
    resulting in weird device failures (e.g. reset minute register
    values in my RTC).
    This patch instructs the controller to send an I2C STOP right after
    the slave address in case of a zero-byte transfer.

    Signed-off-by: Manuel Lauss
    Signed-off-by: Jean Delvare

    Manuel Lauss
     
  • Propagate the error values returned by i2c_wait() instead of overriding
    them with a meaningless -1.

    Signed-off-by: Jon Smirl
    Signed-off-by: Jean Delvare

    Jon Smirl
     
  • This adds a i2c_new_dummy() primitive to help work with devices
    that consume multiple addresses, which include many I2C eeproms
    and at least one RTC.

    Signed-off-by: David Brownell
    Signed-off-by: Jean Delvare

    David Brownell
     
  • It is no longer required to hold adapter->clist_lock to call
    i2c_check_addr.

    Signed-off-by: Jean Delvare
    Cc: David Brownell

    Jean Delvare
     
  • We only need to hold adapter->clist_lock when we touch the client list.

    Signed-off-by: Jean Delvare

    Jean Delvare
     
  • This goes on top of the patch removing most i2c_adapter.clients usage,
    updating i2c_attach_client:

    - Don't call device_register() while holding clist_lock. This
    removes a self-deadlock when on the i2c_driver.probe() path,
    for drivers that need to attach new devices (e.g. dummies).

    - Remove a redundant address check. The driver model core does
    this as a consequence of guaranteeing unique names.

    - Move the "device registered" diagnostic so that it never lies;
    previously, on error paths it would falsely report success.

    Signed-off-by: David Brownell
    Signed-off-by: Jean Delvare

    David Brownell
     
  • The redundant i2c client list maintained by i2c-core is going away
    soon, so drivers should stop using it now. Instead, they can use the
    standard iterator provided by the device driver model
    (device_for_each_child).

    Signed-off-by: Jean Delvare
    Cc: David Brownell
    Cc: Michael Hunold

    Jean Delvare
     
  • The i2c_adapter.clients list of i2c_client nodes duplicates driver
    model state. This patch starts removing that list, letting us remove
    most existing users of those i2c-core lists.

    * The core I2C code now iterates over the driver model's list instead
    of the i2c-internal one in some places where it's safe:
    - Passing a command/ioctl to each client, a mechanims
    used almost exclusively by DVB adapters;
    - Device address checking, in both i2c-core and i2c-dev.

    * Provide i2c_verify_client() to use with driver model iterators.

    * Flag the relevant i2c_adapter and i2c_client fields as deprecated,
    to help prevent new users from appearing.

    For the moment the list needs to stick around, since some issues show
    up when deleting devices created by legacy I2C drivers. (They don't
    follow standard driver model rules. Removing those devices can cause
    self-deadlocks.)

    Signed-off-by: David Brownell
    Signed-off-by: Jean Delvare

    David Brownell
     
  • Add support for another variant of the VT8237. I couldn't test
    I2C block support but I assume it is present as well.

    Signed-off-by: Jean Delvare

    Jean Delvare
     
  • Checking the PCI function number doesn't add any value, and it makes
    adding dynamic IDs to the driver more difficult. Drop this check.

    Signed-off-by: Jean Delvare

    Jean Delvare
     
  • The i2c-amd756 and i2c-viapro drivers make use of the driver_data
    field of the PCI device ID. When adding device IDs dynamically (by
    writing to the new_id sysfs file) you cannot set the value of this
    field by default. It has to be allowed explicitly. Do that, and
    check the value so that the user can't crash the kernel accidentally.

    Signed-off-by: Jean Delvare
    Acked-by: Greg Kroah-Hartman

    Jean Delvare
     
  • Add polling I2C transfer implementation for PXA I2C. This is needed
    for cases where I2C transactions have to occur at times interrups are
    disabled.

    Signed-off-by: Mike Rapoport
    Acked-by: eric miao
    Signed-off-by: Jean Delvare

    Mike Rapoport
     
  • Allow i2c_transfer to be called in contexts where sleeping is not allowed.
    It is the reponsability of the caller to ensure that the underlying i2c bus
    driver will not sleep either.

    Signed-off-by: Mike Rapoport
    Signed-off-by: Jean Delvare

    Mike Rapoport
     
  • The implementation is unsafe, and anyway one can achieve the same from
    userspace using i2c-dev + i2cdetect.

    Also tag i2c_sibyte_add_bus __init.

    Signed-off-by: Jean Delvare
    Cc: Ralf Baechle

    Jean Delvare
     
  • Discard all I2C driver IDs that aren't used anywhere. That's not just a
    couple of them, but more like 49 or one quarter of all defined IDs! And
    this is just a first pass, next will come all IDs that are set but
    never used, or used but never set.

    Signed-off-by: Jean Delvare

    Jean Delvare
     
  • I2C block read is supported since the ICH5. I couldn't get it to work
    using the block buffer, so it's using the old-style byte-by-byte mode
    for now.

    Note: I'm also updating the driver author... The i2c-i801 driver was
    really written by Mark Studebaker, even though he based his work on
    the i2c-piix4 driver which was written by Philip Edelbrock.

    Signed-off-by: Jean Delvare

    Jean Delvare
     
  • Clear special mode bits (PEC, block buffer) at driver load time,
    you never know in which state the device was left by its last user.

    Also make sure that we reset the block buffer mode at the end of every
    transaction, not only when PEC was used.

    Signed-off-by: Jean Delvare

    Jean Delvare
     
  • Use separate flags with explicit names to describe the features of
    the ICH chip.

    Signed-off-by: Jean Delvare

    Jean Delvare
     
  • Provide a clearer documentation of which additional features each
    ICH chip support, and which of these the driver supports.

    Signed-off-by: Jean Delvare

    Jean Delvare
     
  • Move the tps65010 header file from the OMAP arch directory to the
    more generic directory, and remove the spurious
    dependency of this driver on OMAP.

    Signed-off-by: David Brownell
    Signed-off-by: Jean Delvare

    David Brownell
     
  • Rename the main mutex in i2c-core from core_lists to core_lock. This
    makes more sense now that the redundant lists are gone.

    Signed-off-by: Jean Delvare

    Jean Delvare
     
  • i2c_driver.list is superfluous, this list duplicates the one
    maintained by the driver core. Drop it.

    Signed-off-by: Jean Delvare
    Acked-by: David Brownell

    Jean Delvare
     
  • i2c_adapter.list is superfluous, this list duplicates the one
    maintained by the driver core. Drop it.

    Signed-off-by: Jean Delvare
    Acked-by: David Brownell

    Jean Delvare
     
  • Use more standard prototypes for i2c_use_client() and
    i2c_release_client(). The former now returns a pointer to the client,
    and the latter no longer returns anything. This matches what all other
    subsystems do.

    Signed-off-by: Jean Delvare
    Cc: David Brownell

    Jean Delvare
     
  • Don't implement our own reference counting mechanism for i2c clients
    when the driver model already has one.

    Signed-off-by: Jean Delvare
    Cc: David Brownell

    Jean Delvare
     
  • The framebuffer drivers for these pieces of hardware include support
    for the DDC/I2C buses, so there is no need for separate drivers.

    Signed-off-by: Jean Delvare

    Jean Delvare
     
  • I2C adapter drivers are supposed to handle retries on nack by themselves
    if they do, so there's no point in setting .retries if they don't.

    As this retry mechanism is going away (at least in its current form),
    clean this up now so that we don't get build failures later.

    Signed-off-by: Jean Delvare

    Jean Delvare
     
  • I2C driver IDs are optional, so if you don't need one, just omit it.

    Signed-off-by: Jean Delvare

    Jean Delvare
     
  • Signed-off-by: Jean Delvare

    Jean Delvare
     
  • Signed-off-by: Jean Delvare
    Acked-by: Alessandro Zummo

    Jean Delvare
     
  • This patch allows much of the I2C client address data to move from initdata
    into text.

    Signed-off-by: Mark M. Hoffman
    Signed-off-by: Jean Delvare

    Mark M. Hoffman
     
  • The 10-bit address support in i2c-algo-pcf is so heavily broken that
    it can't have ever been used. Nobody ever complained, so I'll take it
    that nobody needs it. Let's just delete it.

    Signed-off-by: Jean Delvare

    Jean Delvare
     
  • Update comments and logging on return path for byte writes. NAK is
    an error, to be reported or optionally ignored. Timeouts are always
    errors. Lost arbitration is not currently handled, so don't even list
    it as an option in the error message.

    Don't return bogus EFAULT code for inappropriate NAK; EIO is better,
    there is no bad userspace address in question.

    Signed-off-by: David Brownell
    Signed-off-by: Jean Delvare

    David Brownell
     
  • Fix *LOTS* of whitespace goofs and checkpatch.pl warnings, strangely
    parenthesized ternary expressions, and other CodingStyle glitches.

    Signed-off-by: David Brownell
    Signed-off-by: Jean Delvare

    David Brownell