05 Oct, 2017

1 commit


22 Aug, 2017

1 commit


19 Jun, 2017

1 commit


01 Jun, 2017

1 commit


10 Feb, 2017

2 commits


16 Dec, 2016

1 commit

  • Pull i2c updates from Wolfram Sang:

    - the first series of making i2c_device_id optional instead of
    mandatory (in favor of alternatives like of_device_id).

    This involves adding a new probe callback (probe_new) which removes
    some peculiarities I2C had for a long time now. The new probe is
    matching the other subsystems now and the old one will be removed
    once all users are converted. It is expected to take a while but
    there is ongoing interest in that.

    - SMBus Host Notify introduced 4.9 got refactored. They are now using
    interrupts instead of the alert callback which solves multiple
    issues.

    - new drivers for iMX LowPower I2C, Mellanox CPLD and its I2C mux

    - significant refactoring for bcm2835 driver

    - the usual set of driver updates and improvements

    * 'i2c/for-4.10' of git://git.kernel.org/pub/scm/linux/kernel/git/wsa/linux: (46 commits)
    i2c: fsl-lpi2c: read lpi2c fifo size in probe()
    i2c: octeon: thunderx: Remove double-check after interrupt
    i2c: octeon: thunderx: TWSI software reset in recovery
    i2c: cadence: Allow Cadence I2C to be selected for Cadence Xtensa CPUs
    i2c: sh_mobile: Add per-Generation fallback bindings
    i2c: rcar: Add per-Generation fallback bindings
    i2c: imx-lpi2c: add low power i2c bus driver
    dt-bindings: i2c: imx-lpi2c: add devicetree bindings
    i2c: designware-pcidrv: Add 10bit address feature to medfield/merrifield
    i2c: pxa: Add support for the I2C units found in Armada 3700
    i2c: pxa: Add definition of fast and high speed modes via the regs layout
    dt-bindings: i2c: pxa: Update the documentation for the Armada 3700
    i2c: qup: support SMBus block read
    i2c: qup: add ACPI support
    i2c: designware: Consolidate default functionality bits
    i2c: i2c-mux-gpio: update mux with gpiod_set_array_value_cansleep
    i2c: mux: pca954x: Add ACPI support for pca954x
    i2c: use an IRQ to report Host Notify events, not alert
    i2c: i801: remove SMBNTFDDAT reads as they always seem to return 0
    i2c: i801: use the BIT() macro for FEATURES_* also
    ...

    Linus Torvalds
     

24 Nov, 2016

2 commits

  • The current SMBus Host Notify implementation relies on .alert() to
    relay its notifications. However, the use cases where SMBus Host
    Notify is needed currently is to signal data ready on touchpads.

    This is closer to an IRQ than a custom API through .alert().
    Given that the 2 touchpad manufacturers (Synaptics and Elan) that
    use SMBus Host Notify don't put any data in the SMBus payload, the
    concept actually matches one to one.

    Benefits are multiple:
    - simpler code and API: the client will just have an IRQ, and
    nothing needs to be added in the adapter beside internally
    enabling it.
    - no more specific workqueue, the threading is handled by IRQ core
    directly (when required)
    - no more races when removing the device (the drivers are already
    required to disable irq on remove)
    - simpler handling for drivers: use plain regular IRQs
    - no more dependency on i2c-smbus for i2c-i801 (and any other adapter)
    - the IRQ domain is created automatically when the adapter exports
    the Host Notify capability
    - the IRQ are assign only if ACPI, OF and the caller did not assign
    one already
    - the domain is automatically destroyed on remove
    - fewer lines of code (minus 20, yeah!)

    Signed-off-by: Benjamin Tissoires
    Signed-off-by: Wolfram Sang

    Benjamin Tissoires
     
  • Device driver for Mellanox I2C controller logic, implemented in Lattice
    CPLD device.
    Device supports:
    - Master mode
    - One physical bus
    - Polling mode

    The Kconfig currently controlling compilation of this code is:
    drivers/i2c/busses/Kconfig:config I2C_MLXCPLD

    Signed-off-by: Michael Shych
    Signed-off-by: Vadim Pasternak
    Reviewed-by: Jiri Pirko
    Reviewed-by: Vladimir Zapolskiy
    Signed-off-by: Wolfram Sang

    Vadim Pasternak
     

11 Nov, 2016

1 commit


08 Sep, 2016

1 commit


24 Jul, 2016

2 commits


17 Jun, 2016

1 commit

  • SMBus Host Notify allows a slave device to act as a master on a bus to
    notify the host of an interrupt. On Intel chipsets, the functionality
    is directly implemented in the firmware. We just need to export a
    function to call .alert() on the proper device driver.

    i2c_handle_smbus_host_notify() behaves like i2c_handle_smbus_alert().
    When called, it schedules a task that will be able to sleep to go through
    the list of devices attached to the adapter.

    The current implementation allows one Host Notification to be scheduled
    while an other is running.

    Tested-by: Andrew Duggan
    Signed-off-by: Benjamin Tissoires
    Signed-off-by: Wolfram Sang

    Benjamin Tissoires
     

05 May, 2016

4 commits

  • The root i2c adapter lock is then no longer held by the i2c mux during
    accesses behind the i2c gate, and such accesses need to take that lock
    just like any other ordinary i2c accesses do.

    So, declare the i2c gate mux-locked, and zap the regmap overrides
    that makes the i2c accesses unlocked and use plain old regmap
    accesses. This also removes the need for the regmap wrappers used by
    rtl2832_sdr, so deconvolute the code further and provide the regmap
    handle directly instead of the wrapper functions.

    Tested-by: Antti Palosaari
    Signed-off-by: Peter Rosin
    Signed-off-by: Wolfram Sang

    Peter Rosin
     
  • The root i2c adapter lock is then no longer held by the i2c mux during
    accesses behind the i2c gate, and such accesses need to take that lock
    just like any other ordinary i2c accesses do.

    So, declare the i2c gate mux-locked, and zap the code that makes the
    i2c accesses unlocked. But add a mutex so that firmware commands are
    still serialized.

    Signed-off-by: Antti Palosaari
    Signed-off-by: Peter Rosin
    Signed-off-by: Wolfram Sang

    Antti Palosaari
     
  • The root i2c adapter lock is then no longer held by the i2c mux during
    accesses behind the i2c gate, and such accesses need to take that lock
    just like any other ordinary i2c accesses do.

    So, declare the i2c gate mux-locked, and zap the code that makes the
    unlocked i2c accesses and just use ordinary regmap_write accesses.

    This also happens to fix the deadlock described in
    http://patchwork.ozlabs.org/patch/584776/ authored by
    Adriana Reus and submitted by
    Daniel Baluta

    ----------8mlock) i2c_transfer
    | |
    i2c transaction i2c adapter lock
    | |
    i2c adapter lock i2c_mux_master_xfer
    |
    inv_mpu6050_select_bypass
    |
    mutex_lock(&indio_dev->mlock)

    When we operate on an mpu sensor the order of locking is mpu lock
    followed by the i2c adapter lock. However, when we operate the auxiliary
    sensor the order of locking is the other way around.

    ...
    ----------8
    Acked-by: Daniel Baluta
    Tested-by: Crestez Dan Leonard
    Signed-off-by: Peter Rosin
    Signed-off-by: Wolfram Sang

    Peter Rosin
     
  • Signed-off-by: Peter Rosin
    Signed-off-by: Wolfram Sang

    Peter Rosin
     

11 Feb, 2016

1 commit


20 Nov, 2015

1 commit


26 Oct, 2015

1 commit


24 Aug, 2015

1 commit


10 Aug, 2015

1 commit

  • Add support for VCT-jig parallel port I2C adapter to i2c-parport.

    The adapter schematic can be found here (in the RAR file):
    http://remont-aud.net/shop/22/desc/vct-jig-komplekt-dlja-samostojatelnoj-sborki

    Signed-off-by: Ondrej Zary
    Reviewed-by: Jean Delvare
    Signed-off-by: Wolfram Sang

    Ondrej Zary
     

26 Jun, 2015

1 commit

  • Pull i2c updates from Wolfram Sang:
    "Highlights:

    - new drivers for Mediatek I2C, APM X-Gene, Broadcom Settop
    - major updates to at91, davinci
    - bugfixes to the mux infrastructure when dealing with the new quirk
    mechanism
    - more users for the bus recovery feature
    - further improvements to the slave framework

    Plus the usual bunch of smaller driver and core improvements and
    fixes.

    There is one patch removing old code from an ARM platform. This has
    been acked by the sh_mobile maintainer Simon Horman"

    * 'i2c/for-4.2' of git://git.kernel.org/pub/scm/linux/kernel/git/wsa/linux: (48 commits)
    i2c: busses: i2c-bcm2835: limits cdiv to allowed values
    i2c: sh_mobile: use proper type for timeout
    i2c: sh_mobile: use adapter default for timeout
    i2c: rcar: use proper type for timeout
    i2c: rcar: use adapter default for timeout
    i2c: designware: Make sure the device is suspended before disabling runtime PM
    i2c: tegra: apply size limit quirk
    i2c: tegra: don't advertise SMBUS_QUICK
    i2c: octeon: remove unused signal handling
    i2c: davinci: Optimize SCL generation
    i2c: mux: pca954x: Use __i2c_transfer because of quirks
    i2c: mux: Use __i2c_transfer() instead of calling parent's master_xfer()
    i2c: use parent adapter quirks in mux
    i2c: bcm2835: clear reserved bits in S-Register
    ARM: shmobile: r8a7740: remove I2C errata handling
    i2c: sh_mobile: add errata workaround
    i2c: at91: fix code checker warnings
    i2c: busses: xgene-slimpro: fix incorrect __init declation for probe
    i2c: davinci: Avoid sending to own address
    i2c: davinci: Refactor i2c_davinci_wait_bus_not_busy()
    ...

    Linus Torvalds
     

17 Jun, 2015

1 commit


01 Jun, 2015

1 commit


27 Mar, 2015

2 commits


19 Feb, 2015

1 commit


05 Dec, 2014

1 commit


13 Nov, 2014

1 commit


16 Oct, 2014

1 commit


08 Sep, 2014

1 commit

  • The example code provided with the i2c device interface documentation
    won't compile since it uses the reserved word "register" to name a
    variable.

    The compiler fails with this error message:

    error: expected identifier or '(' before '=' token
    __u8 register = 0x20; /* Device register to access */
    ^

    Rename the variable "register" to simply "reg" in the example code.

    Another couple of typos has been fixed as well.
    [Change "! =" to "!=".]

    Signed-off-by: Jose Alarcon Roldan
    Signed-off-by: Randy Dunlap
    Acked-by: Wolfram Sang
    Signed-off-by: Linus Torvalds

    Jose Manuel Alarcon Roldan
     

18 Jul, 2014

3 commits

  • Signed-off-by: Jean Delvare
    Signed-off-by: Wolfram Sang

    Jean Delvare
     
  • Some chips implement banked register ranges. This allows implementing
    more registers than the limited 8-bit address space originally allows.
    In order to access a register on these chips, you must first select
    the proper bank. Add support for this mechanism to the i2c-stub driver
    so that such chips can be emulated. All the bank settings are passed
    as module parameters.

    Signed-off-by: Jean Delvare
    Tested-by: Guenter Roeck
    Signed-off-by: Wolfram Sang

    Jean Delvare
     
  • SMBus block commands are different to I2C block commands since
    the returned data is not normally accessible with byte or word
    commands on other command offsets. Add linked list of 'block'
    commands to support those commands.

    Access mechanism is quite simple: Block commands must be written
    before they can be read. Subsequent writes can be partial. Block
    read commands always return the number of bytes associated with
    the longest previous write.

    Signed-off-by: Guenter Roeck
    Reviewed-by: Jean Delvare
    Signed-off-by: Wolfram Sang

    Guenter Roeck
     

06 Apr, 2014

1 commit


12 Mar, 2014

1 commit


10 Mar, 2014

1 commit


16 Feb, 2014

1 commit