26 Sep, 2014

1 commit

  • http://www.ti.com/lit/pdf/SWCZ010:
    Glitch on SDA-SCL not managed correctly by the I2C IP

    Impact:
    The standard specifies that the I2C transfer should restart on a start
    event in all cases. The current design does not support two consecutive
    Start conditions. This can cause the first real access after such a
    glitch to be corrupted.

    Description:
    An unexpected glitch on SDA and SCL can generate a wrong start event.
    In the current design, the SCL line must toggle two times to detect a
    new start event and completely restart the I2C access; hence the real
    start event is not detected in the case of a single SCL toggle.

    Workaround:
    Repeat I2C access.

    A simpler workaround is to make a dummy transfer just before the first
    access to the tps65910 chip. This can be done unconditionally.

    Signed-off-by: Arnout Vandecappelle (Essensium/Mind)
    Acked-by: Mark Brown
    Signed-off-by: Lee Jones

    Arnout Vandecappelle (Essensium/Mind)
     

09 Jul, 2014

1 commit


03 Jun, 2014

1 commit


19 Mar, 2014

2 commits

  • The tps65910_i2c_probe() allocates regmap_irq_chip in
    tps65910_irq_init() but it does not clean this up in case of
    mfd_add_devices() failure.

    Signed-off-by: Krzysztof Kozlowski
    Signed-off-by: Lee Jones

    Krzysztof Kozlowski
     
  • Fixes: 4aab3fadad32 ("mfd: tps65910: Move interrupt implementation code to mfd file")

    tps65910_irq_init() sets 'tps65910->chip_irq' before calling
    regmap_add_irq_chip(). If the regmap_add_irq_chip() call fails in
    memory allocation of regmap_irq_chip_data members then:

    1. The 'tps65910->chip_irq' will still hold some value
    2. 'tps65910->irq_data' will be pointing to already freed memory
    (because regmap_add_irq_chip() will free it on error)

    This results in invalid memory access during driver remove because the
    tps65910_irq_exit() tests whether 'tps65910->chip_irq' is not zero.

    Cc:
    Signed-off-by: Krzysztof Kozlowski
    Signed-off-by: Lee Jones

    Krzysztof Kozlowski
     

06 Jan, 2014

1 commit

  • As of commit 03e361b25ee8dfb1fd9b890072c23c4aae01c6c7 ("mfd: Stop setting
    refcounting pointers in original mfd_cell arrays"), the "cell" parameter of
    mfd_add_devices() is "const" again. Hence make all cell data passed to
    mfd_add_devices() const where possible.

    Signed-off-by: Geert Uytterhoeven
    Signed-off-by: Lee Jones

    Geert Uytterhoeven
     

25 Oct, 2013

1 commit


24 Oct, 2013

1 commit

  • Driver throw the warning message if dt node does not
    have the info for VMBCH-Threshold and VMBCH2-Threshold.
    These properties are optional property and hence it
    is not mandatory to have these on DT node and in this case
    it should not throw the warning message.
    It creates noise from driver as follows:
    [ 0.384605] tps65910 4-002d: VMBCH-Threshold not specified
    [ 0.384616] tps65910 4-002d: VMBCH2-Threshold not specified

    Removing the warning message from driver.

    Signed-off-by: Laxman Dewangan
    Signed-off-by: Samuel Ortiz

    Laxman Dewangan
     

23 Oct, 2013

1 commit


17 Dec, 2012

1 commit

  • Pull MFS update from Samuel Ortiz:
    "This is the MFD patch set for the 3.8 merge window.

    We have several new drivers, most of the time coming with their sub
    devices drivers:

    - Austria Microsystem's AS3711
    - Nano River's viperboard
    - TI's TPS80031, AM335x TS/ADC,
    - Realtek's MMC/memstick card reader
    - Nokia's retu

    We also got some notable cleanups and improvements:

    - tps6586x got converted to IRQ domains.
    - tps65910 and tps65090 moved to the regmap IRQ API.
    - STMPE is now Device Tree aware.
    - A general twl6040 and twl-core cleanup, with moves to the regmap
    I/O and IRQ APIs and a conversion to the recently added PWM
    framework.
    - sta2x11 gained regmap support.

    Then the rest is mostly tiny cleanups and fixes, among which we have
    Mark's wm5xxx and wm8xxx patchset."

    Far amount of annoying but largely trivial conflicts. Many due to
    __devinit/exit removal, others due to one or two of the new drivers also
    having come in through another tree.

    * tag 'mfd-3.8-1' of git://git.kernel.org/pub/scm/linux/kernel/git/sameo/mfd-2.6: (119 commits)
    mfd: tps6507x: Convert to devm_kzalloc
    mfd: stmpe: Update DT support for stmpe driver
    mfd: wm5102: Add readback of DSP status 3 register
    mfd: arizona: Log if we fail to create the primary IRQ domain
    mfd: tps80031: MFD_TPS80031 needs to select REGMAP_IRQ
    mfd: tps80031: Add terminating entry for tps80031_id_table
    mfd: sta2x11: Fix potential NULL pointer dereference in __sta2x11_mfd_mask()
    mfd: wm5102: Add tuning for revision B
    mfd: arizona: Defer patch initialistation until after first device boot
    mfd: tps65910: Fix wrong ack_base register
    mfd: tps65910: Remove unused data
    mfd: stmpe: Get rid of irq_invert_polarity
    mfd: ab8500-core: Fix invalid free of devm_ allocated data
    mfd: wm5102: Mark DSP memory regions as volatile
    mfd: wm5102: Correct default for LDO1_CONTROL_2
    mfd: arizona: Register haptics devices
    mfd: wm8994: Make current device behaviour the default
    mfd: tps65090: MFD_TPS65090 needs to select REGMAP_IRQ
    mfd: Fix stmpe.c build when OF is not enabled
    mfd: jz4740-adc: Use devm_kzalloc
    ...

    Linus Torvalds
     

30 Nov, 2012

2 commits

  • The interrupt status registers of TPS65910/1 should be cleared
    when the associated interrupt event occurs.
    This work is done in the regmap irq thread - using 'ack_base' register.
    The ACK registers should be fixed as status register, not mask registers.

    This patch fixes the infinite interrupt event problem by clearing
    interrupt status registers.

    Tested on the AM3517 Craneboard.

    Signed-off-by: Milo(Woogyom) Kim
    Acked-by: Laxman Dewangan
    Signed-off-by: Samuel Ortiz

    Kim, Milo
     
  • The 'io_mutex' is not used anywhere.
    The regmap API supports the mutex internally, so no additional mutex
    is required.

    And 'domain' private data is unnecessary because the irq domain is
    already registered by using regmap_add_irq_chip().

    Signed-off-by: Milo(Woogyom) Kim
    Acked-by: Laxman Dewangan
    Signed-off-by: Samuel Ortiz

    Kim, Milo
     

29 Nov, 2012

3 commits

  • CONFIG_HOTPLUG is going away as an option so __devexit is no
    longer needed.

    Signed-off-by: Bill Pemberton
    Cc: Srinidhi Kasagar
    Cc: Peter Tyser
    Cc: Daniel Walker
    Cc: Bryan Huntsman
    Acked-by: David Brown
    Acked-by: Linus Walleij
    Acked-by: Mark Brown
    Signed-off-by: Greg Kroah-Hartman

    Bill Pemberton
     
  • CONFIG_HOTPLUG is going away as an option so __devinit is no longer
    needed.

    Signed-off-by: Bill Pemberton
    Cc: Srinidhi Kasagar
    Cc: Peter Tyser
    Cc: Daniel Walker
    Cc: Bryan Huntsman
    Acked-by: David Brown
    Acked-by: Mark Brown
    Signed-off-by: Greg Kroah-Hartman

    Bill Pemberton
     
  • CONFIG_HOTPLUG is going away as an option so __devexit_p is no longer
    needed.

    Signed-off-by: Bill Pemberton
    Cc: Srinidhi Kasagar
    Cc: Peter Tyser
    Cc: Daniel Walker
    Cc: Bryan Huntsman
    Acked-by: David Brown
    Acked-by: Linus Walleij
    Acked-by: Mark Brown
    Signed-off-by: Greg Kroah-Hartman

    Bill Pemberton
     

20 Nov, 2012

3 commits


29 Sep, 2012

1 commit


14 Sep, 2012

2 commits

  • Add DT property "ti,system-power-controller" telling whether or not this
    pmic is in charge of controlling the system power, so the power off
    routine can be hooked up to system call "pm_power_off".

    Based on the work by:
    Dan Willemsen

    Signed-off-by: Bill Huang
    Tested-by: Stephen Warren
    Signed-off-by: Samuel Ortiz

    Bill Huang
     
  • Currently the MFD core supports remapping MFD cell interrupts using an
    irqdomain but only if the MFD is being instantiated using device tree
    and only if the device tree bindings use the pattern of registering IPs
    in the device tree with compatible properties. This will be actively
    harmful for drivers which support non-DT platforms and use this pattern
    for their DT bindings as it will mean that the core will silently change
    remapping behaviour and it is also limiting for drivers which don't do
    DT with this particular pattern. There is also a potential fragility if
    there are interrupts not associated with MFD cells and all the cells are
    omitted from the device tree for some reason.

    Instead change the code to take an IRQ domain as an optional argument,
    allowing drivers to take the decision about the parent domain for their
    interrupts. The one current user of this feature is ab8500-core, it has
    the domain lookup pushed out into the driver.

    Signed-off-by: Mark Brown
    Signed-off-by: Samuel Ortiz

    Mark Brown
     

16 Jul, 2012

1 commit


09 Jul, 2012

2 commits

  • Add device-tree entry to enable external 32-kHz crystal oscillator
    input.

    Compile-only tested.

    Signed-off-by: Johan Hovold
    Signed-off-by: Samuel Ortiz

    Johan Hovold
     
  • Add flag to platform data to enable external 32-kHz crystal oscillator
    (or square wave) input.

    The tps6591x can use either an internal 32-kHz RC oscillator or an
    external crystal (or square wave) to generate the 32-kHz clock.

    The default setting depends on the selected boot mode. In boot mode 00
    the internal RC oscillator is used at power-on, but the external crystal
    oscillator (or square wave) can be enabled by clearing the ck32k_ctrl
    flag in the device control register.

    Note that there is no way to switch from the external crystal oscillator
    to the internal RC oscillator.

    Signed-off-by: Johan Hovold
    Signed-off-by: Samuel Ortiz

    Johan Hovold
     

23 May, 2012

2 commits


20 May, 2012

6 commits


07 May, 2012

1 commit

  • A warning was being generated by the reference from tps65910_i2c_probe()
    to tps65910_sleepinit() since the latter was annotated as __init but the
    former was unannotated. Since these functions can only be called during
    device init make them both __devinit, and while we're at it also annotate
    tps65910_i2c_remove() __devexit for symmetry.

    Signed-off-by: Mark Brown
    Signed-off-by: Samuel Ortiz

    Mark Brown
     

01 May, 2012

1 commit

  • Adding support for device sleep through the external input control
    signal "SLEEP".
    Changing the SLEEP signal state can switch the device into SLEEP and
    ACTIVE state.
    Also adding sleep configuration for different resources so that they
    should be keep on during sleep state of device.

    Signed-off-by: Laxman Dewangan
    Signed-off-by: Samuel Ortiz

    Laxman Dewangan
     

17 Mar, 2012

1 commit


07 Mar, 2012

2 commits

  • Using regmap apis for accessing the device registers and
    using RBTREE caching mechanims for caching registers.

    Enabling caching of the registers which is used for voltage
    controls. By doing this, the modify_bits operation is faster as
    it does not involve the i2c register read from device, just read
    from cache. This results faster set voltage operation.

    Signed-off-by: Laxman Dewangan
    Reviewed-by: Mark Brown
    Signed-off-by: Samuel Ortiz

    Laxman Dewangan
     
  • irq_base of the tps65910 irq platform data should be
    initialized with the board provided irq_base data.

    Signed-off-by: Laxman Dewangan
    Signed-off-by: Samuel Ortiz

    Laxman Dewangan
     

09 Jan, 2012

1 commit


21 Dec, 2011

1 commit


01 Aug, 2011

1 commit

  • In drivers/mfd/tps65910.c:tps65910_i2c_probe() there's potential for a
    tiny optimization.

    We assign to init_data->irq and init_data->irq_base long before we
    need them, and there are two potential exits from the function before
    they are needed.

    Moving the assignments below these two potential exits means we
    completely avoid doing them in these two (failure) cases.

    Signed-off-by: Jesper Juhl
    Acked-by: Graeme Gregory
    Signed-off-by: Samuel Ortiz

    Jesper Juhl