27 Jan, 2020

1 commit

  • Some drivers define their own speed enums and use their own constants for
    speed. It makes sense to have a unified defition of the different speeds.

    Since many controllers have to do different things for fast/high speed, it
    is a good idea to have an enum for the mode.

    Add these as well as an enum for the address mode.

    Signed-off-by: Simon Glass
    Reviewed-by: Heiko Schocher

    Simon Glass
     

17 Dec, 2019

1 commit

  • Some devices (2 wire eeproms for example) use some bits from the chip
    address to represent the high bits of the offset instead of or as well
    as using multiple bytes for the offset, effectively stealing chip
    addresses on the bus.

    Add a chip offset mask that can be set for any i2c chip which gets
    filled with the offset overflow during offset setup.

    Signed-off-by: Robert Beckett
    Signed-off-by: Ian Ray
    Reviewed-by: Heiko Schocher

    Robert Beckett
     

30 Jul, 2019

1 commit


11 Apr, 2019

1 commit

  • The 'u-boot,i2c-transaction-bytes' device tree property provides
    information regarding number of bytes transferred by a device in a
    single transaction.

    This change is necessary to avoid hanging devices after soft reset.
    One notable example is communication with MC34708 device:

    1. Reset when communicating with MC34708 via I2C.

    2. The u-boot (after reboot -f) tries to setup the I2C and then calls
    force_idle_bus. In the same time MC34708 still has some data to be sent
    (as it transfers data in 24 bits chunks).

    3. The force_idle_bus() is not able to make the bus idle as 8 SCL
    clocks may be not enough to have the full transmission.

    4. We end up with I2C inconsistency with MC34708.

    This PMIC device requires 24+ SCL cycles to make finish any pending I2C
    transmission.

    Signed-off-by: Lukasz Majewski

    Lukasz Majewski
     

30 Nov, 2018

1 commit

  • Sandbox i2c works using emulation drivers which are currently children of
    the i2c device:

    rtc_0: rtc@43 {
    reg = ;
    compatible = "sandbox-rtc";
    emul {
    compatible = "sandbox,i2c-rtc";
    };
    };

    In this case the emulation device is attached to i2c bus on address 0x43
    and provides the Real-Time-Clock (RTC) functionality.

    However this is not ideal, since every device on an I2C bus has a child
    device. This is only really the case for sandbox, but we want to avoid
    special-case code for sandbox.

    A better approach seems to be to add a separate node on the bus, an
    'emulation parent'. This can be given a bogus address (such as 0xff) and
    hides all the emulators away. Then we can use a phandle to point from the
    device to the correct emualtor, and only on sandbox. The code to find an
    emulator does not interfere with normal i2c operation.

    Add a new UCLASS_I2C_EMUL_PARENT uclass which allows finding an emulator
    given a bus, and finding a bus given an emulator. This will be used in a
    follow-on patch.

    Signed-off-by: Simon Glass

    Simon Glass
     

07 May, 2018

1 commit

  • When U-Boot started using SPDX tags we were among the early adopters and
    there weren't a lot of other examples to borrow from. So we picked the
    area of the file that usually had a full license text and replaced it
    with an appropriate SPDX-License-Identifier: entry. Since then, the
    Linux Kernel has adopted SPDX tags and they place it as the very first
    line in a file (except where shebangs are used, then it's second line)
    and with slightly different comment styles than us.

    In part due to community overlap, in part due to better tag visibility
    and in part for other minor reasons, switch over to that style.

    This commit changes all instances where we have a single declared
    license in the tag as both the before and after are identical in tag
    contents. There's also a few places where I found we did not have a tag
    and have introduced one.

    Signed-off-by: Tom Rini

    Tom Rini
     

12 Jun, 2017

2 commits


01 Jun, 2017

1 commit


22 May, 2017

1 commit


15 May, 2017

1 commit


06 Apr, 2017

2 commits

  • This is not used by any board. Drop it.

    Signed-off-by: Simon Glass
    Clean up board_f sequence a little
    This series tries to remove #ifdefs from the board_f init sequence. It
    gets as far as I2C and then we need to discuss whether we can start to
    remove the old I2C framework.

    I think that ideally each entry in the init sequence should be enabled by
    at most one CONFIG, which is in Kconfig and is not arch-specific.
    END
    Acked-by: Lukasz Majewski
    Acked-by: Jaehoon Chung

    Simon Glass
     
  • These are not used in U-Boot. Manual relocation fixup is used by blackfin
    but that is being removed.

    Signed-off-by: Simon Glass

    Simon Glass
     

11 Jun, 2016

1 commit


27 Nov, 2015

1 commit


06 Aug, 2015

5 commits

  • Add a new I2C_MUX uclass. Devices in this class can multiplex between
    several I2C buses, selecting them one at a time for use by the system.
    The multiplexing mechanism is left to the driver to decide - it may be
    controlled by GPIOs, for example.

    The uclass supports only two methods: select() and deselect().

    The current mux state is expected to be stored in the mux itself since
    it is the only thing that knows how to make things work. The mux can
    record the current state and then avoid switching unless it is necessary.
    So select() can be skipped if the mux is already in the correct state.
    Also deselect() can be made a nop if required.

    Signed-off-by: Simon Glass

    Simon Glass
     
  • Sometimes it is useful to be able to transfer a raw I2C message. This
    happens when the chip address needs to be set manually, or when the data to
    be sent/received is in another buffer.

    Add a function to provide access to this.

    Signed-off-by: Simon Glass
    Acked-by: Heiko Schocher

    Simon Glass
     
  • Move the flags and struct definitions higher in the file so that we can
    reference them with functions declared in the driver model section.

    Signed-off-by: Simon Glass
    Acked-by: Heiko Schocher

    Simon Glass
     
  • Add documentation for the @dev parameter.

    Signed-off-by: Simon Glass
    Acked-by: Heiko Schocher

    Simon Glass
     
  • Add a way to dump the contents of an I2C message for debugging purposes.

    Signed-off-by: Simon Glass
    Acked-by: Heiko Schocher

    Simon Glass
     

11 Jun, 2015

1 commit


15 May, 2015

1 commit


06 May, 2015

2 commits


17 Apr, 2015

1 commit


13 Feb, 2015

2 commits


30 Jan, 2015

5 commits

  • These functions are useful in case the board calls them. Also fix a missing
    parameter caused by applying the wrong patch (actually I failed to send v2
    and applied v1 by mistake).

    Signed-off-by: Simon Glass

    Simon Glass
     
  • At present we go through various contortions to store the I2C's chip
    address in its private data. This only exists when the chip is active so
    must be set up when it is probed. Until the device is probed we don't
    actually record what address it will appear on.

    However, now that we can support per-child platform data, we can use that
    instead. This allows us to set up the address when the child is bound,
    and avoid the messy contortions.

    Unfortunately this is a fairly large change and it seems to be difficult to
    break it down further.

    Signed-off-by: Simon Glass
    Reviewed-by: Masahiro Yamada

    Simon Glass
     
  • Rather than assuming that the chip offset length is 1, allow it to be
    provided. This allows chips that don't use the default offset length to
    be used (at present they are only supported by the command line 'i2c'
    command which sets the offset length explicitly).

    Signed-off-by: Simon Glass
    Acked-by: Heiko Schocher

    Simon Glass
     
  • For boards which use multiple I2C devices, or for SOCs which support
    multiple boards, we might want to convert these to driver model at different
    times. At present this is difficult because we need to either use
    CONFIG_DM_I2C for a board or not.

    Add a compatibility layer which implements the old API, thus allowing a
    board to move to driver model for I2C without requiring that everything it
    uses is moved in the same commit.

    Signed-off-by: Simon Glass

    Simon Glass
     
  • Add a dm_ prefix to driver model I2C functions so that we can keep the old
    ones around.

    This is a little unfortunate, but on reflection it is too difficult to
    change the API. We can undo this rename when most boards and drivers are
    converted to use driver model for I2C.

    Signed-off-by: Simon Glass

    Simon Glass
     

12 Dec, 2014

1 commit

  • The uclass implements the same operations as the current I2C framework but
    makes some changes to make it fit driver model better:

    - Remove the chip address from API calls
    - Remove the address length from API calls
    - Remove concept of 'current' I2C bus
    - Drop all existing init functions

    Acked-by: Heiko Schocher
    Reviewed-by: Masahiro Yamada
    Signed-off-by: Simon Glass

    Simon Glass
     

20 Feb, 2014

1 commit

  • Adds support for set-speed on the OMAP24xx I2C Adapter.

    Changes to omap24_i2c_write(...) for polling ARDY Bit from IRQ-Status.
    Otherwise on a subsequent call the transfer of last byte from the
    predecessor is aborted and therefore lost. For exmaple when
    i2c_write(...) is followed by a i2c_setspeed(...) (which has to
    deactivate and activate master for changing psc,...).

    Minor cosmetical changes.

    Signed-off-by: Hannes Petermaier
    Cc: Heiko Schocher

    Hannes Petermaier
     

14 Nov, 2013

1 commit


17 Oct, 2013

1 commit


20 Aug, 2013

1 commit


24 Jul, 2013

2 commits


23 Jul, 2013

1 commit

  • CONFIG_I2C_MUX is replaced through the new i2c multibus/multiadapter
    framework, configured through CONFIG_SYS_I2C. As CONFIG_I2C_MUX
    is only used on the keymile boards, and they are now completely
    moved to the new framework, remove CONFIG_I2C_MUX.

    Signed-off-by: Heiko Schocher
    Cc: Holger Brunck
    Tested-By: Holger Brunck

    Heiko Schocher