25 Aug, 2020

1 commit


20 May, 2020

1 commit


16 Jul, 2019

1 commit

  • Pull i2c updates from Wolfram Sang:
    "New stuff from the I2C world:

    - in the core, getting irqs from ACPI is now similar to OF

    - new driver for MediaTek MT7621/7628/7688 SoCs

    - bcm2835, i801, and tegra drivers got some more attention

    - GPIO API cleanups

    - cleanups in the core headers

    - lots of usual driver updates"

    * 'i2c/for-5.3' of git://git.kernel.org/pub/scm/linux/kernel/git/wsa/linux: (74 commits)
    i2c: mt7621: Fix platform_no_drv_owner.cocci warnings
    i2c: cpm: remove casting dma_alloc
    dt-bindings: i2c: sun6i-p2wi: Fix the binding example
    dt-bindings: i2c: mv64xxx: Fix the example compatible
    i2c: i801: Documentation update
    i2c: i801: Add support for Intel Tiger Lake
    i2c: i801: Fix PCI ID sorting
    dt-bindings: i2c-stm32: document optional dmas
    i2c: i2c-stm32f7: Add I2C_SMBUS_I2C_BLOCK_DATA support
    i2c: core: Tidy up handling of init_irq
    i2c: core: Move ACPI gpio IRQ handling into i2c_acpi_get_irq
    i2c: core: Move ACPI IRQ handling to probe time
    i2c: acpi: Factor out getting the IRQ from ACPI
    i2c: acpi: Use available IRQ helper functions
    i2c: core: Allow whole core to use i2c_dev_irq_from_resources
    eeprom: at24: modify a comment referring to platform data
    dt-bindings: i2c: omap: Add new compatible for J721E SoCs
    dt-bindings: i2c: mv64xxx: Add YAML schemas
    dt-bindings: i2c: sun6i-p2wi: Add YAML schemas
    i2c: mt7621: Add MediaTek MT7621/7628/7688 I2C driver
    ...

    Linus Torvalds
     

29 Jun, 2019

2 commits

  • Bring the ACPI path in sync with the device tree path and handle all the
    IRQ fetching at probe time. This leaves the only IRQ handling at device
    registration time being that which is passed directly through the board
    info as either a resource or an actual IRQ number.

    Reviewed-by: Andy Shevchenko
    Signed-off-by: Charles Keepax
    Reviewed-by: Mika Westerberg
    Signed-off-by: Wolfram Sang

    Charles Keepax
     
  • Remove the static from i2c_dev_irq_from _resources so that other parts
    of the core code can use this helper function.

    Reviewed-by: Mika Westerberg
    Reviewed-by: Andy Shevchenko
    Signed-off-by: Charles Keepax
    Signed-off-by: Wolfram Sang

    Charles Keepax
     

31 May, 2019

1 commit

  • Based on 3 normalized pattern(s):

    this program is free software you can redistribute it and or modify
    it under the terms of the gnu general public license as published by
    the free software foundation either version 2 of the license or at
    your option any later version this program is distributed in the
    hope that it will be useful but without any warranty without even
    the implied warranty of merchantability or fitness for a particular
    purpose see the gnu general public license for more details

    this program is free software you can redistribute it and or modify
    it under the terms of the gnu general public license as published by
    the free software foundation either version 2 of the license or at
    your option any later version [author] [kishon] [vijay] [abraham]
    [i] [kishon]@[ti] [com] this program is distributed in the hope that
    it will be useful but without any warranty without even the implied
    warranty of merchantability or fitness for a particular purpose see
    the gnu general public license for more details

    this program is free software you can redistribute it and or modify
    it under the terms of the gnu general public license as published by
    the free software foundation either version 2 of the license or at
    your option any later version [author] [graeme] [gregory]
    [gg]@[slimlogic] [co] [uk] [author] [kishon] [vijay] [abraham] [i]
    [kishon]@[ti] [com] [based] [on] [twl6030]_[usb] [c] [author] [hema]
    [hk] [hemahk]@[ti] [com] this program is distributed in the hope
    that it will be useful but without any warranty without even the
    implied warranty of merchantability or fitness for a particular
    purpose see the gnu general public license for more details

    extracted by the scancode license scanner the SPDX license identifier

    GPL-2.0-or-later

    has been chosen to replace the boilerplate/reference in 1105 file(s).

    Signed-off-by: Thomas Gleixner
    Reviewed-by: Allison Randal
    Reviewed-by: Richard Fontana
    Reviewed-by: Kate Stewart
    Cc: linux-spdx@vger.kernel.org
    Link: https://lkml.kernel.org/r/20190527070033.202006027@linutronix.de
    Signed-off-by: Greg Kroah-Hartman

    Thomas Gleixner
     

03 May, 2019

1 commit

  • We checked I2C calls, but not SMBus. Refactor the helper to an inline
    function and use it for both, I2C and SMBus.

    Fixes: 9ac6cb5fbb17 ("i2c: add suspended flag and accessors for i2c adapters")
    Reported-by: Peter Rosin
    Signed-off-by: Wolfram Sang
    Reviewed-by: Simon Horman
    Signed-off-by: Wolfram Sang

    Wolfram Sang
     

16 Apr, 2019

3 commits

  • We had the request to access devices very late when interrupts are not
    available anymore multiple times now. Mostly to prepare shutdown or
    reboot. Allow adapters to specify a specific callback for this case.
    Note that we fall back to the generic {master|smbus}_xfer callback if
    this new atomic one is not present. This is intentional to preserve the
    previous behaviour and avoid regressions. Because there are drivers not
    using interrupts or because it might have worked "accidently" before.

    Signed-off-by: Wolfram Sang
    Reviewed-by Andy Shevchenko
    Tested-by: Stefan Lengfeld
    Signed-off-by: Wolfram Sang

    Wolfram Sang
     
  • If I2C transfers are executed in atomic contexts, trylock is used
    instead of lock. This behaviour was missing for SMBUS, although a lot of
    transfers are of SMBUS type, either emulated or direct. So, factor out
    the locking routine into a helper and use it for I2C and SMBUS.

    Signed-off-by: Wolfram Sang
    Reviewed-by Andy Shevchenko
    Signed-off-by: Wolfram Sang

    Wolfram Sang
     
  • Commit cea443a81c9c ("i2c: Support i2c_transfer in atomic contexts")
    added in_atomic() to the I2C core. However, the use of in_atomic()
    outside of core kernel code is discouraged and was already[1] when this
    code was added in early 2008. The above commit was a preparation for
    commit b7a3670131c7 ("i2c-pxa: Add polling transfer"). Its commit
    message says explicitly it was added "for cases where I2C transactions
    have to occur at times interrup[t]s are disabled". So, the intention was
    'disabled interrupts'. This matches the use cases for atomic I2C
    transfers I have seen so far: very late communication (mostly to a PMIC)
    to powerdown or reboot the system. For those cases, interrupts are
    disabled then. It doesn't seem that in_atomic() adds value.

    After a discussion with Peter Zijlstra[2], we came up with a better set
    of conditionals to match the use case.

    The I2C core will soon gain an extra callback into bus drivers
    especially for atomic transfers to make them more generic. The code
    deciding which transfer to use (atomic/non-atomic) should mimic the
    behaviour which locking to use (trylock/lock). This is why we add a
    helper for it.

    [1] https://lwn.net/Articles/274695/
    [2] http://patchwork.ozlabs.org/patch/1067437/

    Signed-off-by: Wolfram Sang
    Reviewed-by Andy Shevchenko
    Tested-by: Stefan Lengfeld
    Signed-off-by: Wolfram Sang

    Wolfram Sang
     

24 Mar, 2018

1 commit


31 Jul, 2017

1 commit

  • For now empty ID table is not allowed with ACPI and prevents driver to
    be probed.

    Add a check to allow empty ID table.

    This introduces a helper i2c_acpi_match_device().

    Note, we rename some static function in i2c-core-acpi.c to distinguish
    with public API.

    Fixes: da10c06a044b ("i2c: Make I2C ID tables non-mandatory for DT'ed devices")
    Signed-off-by: Andy Shevchenko
    Tested-by: Rajmohan Mani
    Acked-by: Mika Westerberg
    [wsa: needed to get some drivers probed again]
    Signed-off-by: Wolfram Sang

    Andy Shevchenko
     

01 Jun, 2017

3 commits


08 Nov, 2014

1 commit


27 Mar, 2012

1 commit


19 Jun, 2009

1 commit


02 May, 2007

1 commit

  • This provides partial support for new-style I2C driver binding. It builds
    on "struct i2c_board_info" declarations that identify I2C devices on a given
    board. This is needed on systems with I2C devices that can't be fully probed
    and/or autoconfigured, such as many embedded Linux configurations where the
    way a given I2C device is wired may affect how it must be used.

    There are two models for declaring such devices:

    * LATE -- using a public function i2c_new_device(). This lets modules
    declare I2C devices found *AFTER* a given I2C adapter becomes available.

    For example, a PCI card could create adapters giving access to utility
    chips on that card, and this would be used to associate those chips with
    those adapters.

    * EARLY -- from arch_initcall() level code, using a non-exported function
    i2c_register_board_info(). This copies the declarations *BEFORE* such
    an i2c_adapter becomes available, arranging that i2c_new_device() will
    be called later when i2c-core registers the relevant i2c_adapter.

    For example, arch/.../.../board-*.c files would declare the I2C devices
    along with their platform data, and I2C devices would behave much like
    PNPACPI devices. (That is, both enumerate from board-specific tables.)

    To match the exported i2c_new_device(), the previously-private function
    i2c_unregister_device() is now exported.

    Pending later patches using these new APIs, this is effectively a NOP.

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

    David Brownell