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
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
30 Jul, 2019
1 commit
-
There are no more users of the compatibility layer for i2c. Remove the
driver and all references to it.Signed-off-by: Bartosz Golaszewski
Acked-by: Heiko Schocher
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
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
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
12 Jun, 2017
2 commits
-
There was for long time no activity in the 8260 area.
We need to go further and convert to Kconfig, but it
turned out, nobody is interested anymore in 8260,
so remove it.Signed-off-by: Heiko Schocher
-
There was for long time no activity in the 8xx area.
We need to go further and convert to Kconfig, but it
turned out, nobody is interested anymore in 8xx,
so remove it (with a heavy heart, knowing that I remove
here the root of U-Boot).Signed-off-by: Heiko Schocher
01 Jun, 2017
1 commit
-
Update the i2c uclass to support a live device tree.
Signed-off-by: Simon Glass
22 May, 2017
1 commit
-
This subsystem is quite old. It has been replaced with a driver-model
version (UCLASS_THERMAL). Boards are free to convert to that if required,
but here is a removal patch that could be applied in the meantime.Signed-off-by: Simon Glass
Reviewed-by: Heiko Schocher
Reviewed-by: Tom Rini
15 May, 2017
1 commit
-
This option is not used by any boards. Drop it.
Signed-off-by: Simon Glass
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 -
These are not used in U-Boot. Manual relocation fixup is used by blackfin
but that is being removed.Signed-off-by: Simon Glass
11 Jun, 2016
1 commit
-
Add early i2c init function with conservative divider when the exact
clock rate is not available.Signed-off-by: Yuan Yao
Reviewed-by: York Sun
27 Nov, 2015
1 commit
-
Use the correct function name in the function description.
Signed-off-by: Stefan Roese
Reviewed-by: Simon Glass
Cc: Heiko Schocher
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
-
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 -
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 -
Add documentation for the @dev parameter.
Signed-off-by: Simon Glass
Acked-by: Heiko Schocher -
Add a way to dump the contents of an I2C message for debugging purposes.
Signed-off-by: Simon Glass
Acked-by: Heiko Schocher
11 Jun, 2015
1 commit
-
Add the legacy i2c_reg_read/write() functions to the compatibility layer
so that they can be used when CONFIG_DM_I2C_COMPAT is defined.Signed-off-by: Simon Glass
Acked-by: Heiko Schocher
15 May, 2015
1 commit
-
We can currently set this but there is no API function to get it. Add one.
Signed-off-by: Simon Glass
Reviewed-by: Joe Hershberger
Acked-by: Heiko Schocher
06 May, 2015
2 commits
-
At present this driver has a few test features. They are needed for running
the driver model unit tests but are confusing and unnecessary if using
sandbox at the command line. Add a flag to enable the test mode, and don't
enable it by default.Signed-off-by: Simon Glass
-
Add driver model versions of the legacy functions to read and write a
single byte register. These are a useful shortcut in many cases.Signed-off-by: Simon Glass
Acked-by: Heiko Schocher
17 Apr, 2015
1 commit
-
Add a convenience function to access the private data that a uclass stores
for each of its devices. Convert over most existing uses for consistency
and to provide an example for others.Signed-off-by: Simon Glass
13 Feb, 2015
2 commits
-
Make the driver model I2C API available always, even if driver model
is not enabled. This allows for a 'soft' switch-over, where drivers can
use the new structures in code which is compiled but not yet used. This
makes migration easier in some cases.Fix up the existing drivers which define their own 'struct i2c_msg'.
Signed-off-by: Simon Glass
Acked-by: Heiko Schocher -
As with i2c_read() and i2c_write(), add a dm_ prefix to the driver model
versions of these functions to avoid conflicts.Signed-off-by: Simon Glass
Acked-by: Heiko Schocher
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
-
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 -
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 -
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
-
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
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 functionsAcked-by: Heiko Schocher
Reviewed-by: Masahiro Yamada
Signed-off-by: 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
14 Nov, 2013
1 commit
-
Since the required API is gpio which is enclosed with CONFIG_ATMEL_LEGACY use
that switch here.Signed-off-by: Andreas Bießmann
Acked-by: Heiko Schocher
17 Oct, 2013
1 commit
-
(Interface is not quite the same as Phillips PCA9547.)
Signed-off-by: Michael Burr
Cc: Heiko Schocher
Cc: Michal Simek
20 Aug, 2013
1 commit
-
The I2C_MULTI_BUS needs to be defined for correct I2C operation with
many software emulated I2C controllers.This fix restores correct value of the I2C_MULTI_BUS changed by following
commit:SHA1: 385c9ef5a7215b2b0c22836fee6c692dfc8559d7
i2c: add i2c_core and prepare for new multibus supportSigned-off-by: Lukasz Majewski
Cc: Heiko Schocher
24 Jul, 2013
2 commits
-
The sandburst-specific i2c drivers have been deleted, conflict was just
over the SPDX conversion.Conflicts:
board/sandburst/common/ppc440gx_i2c.c
board/sandburst/common/ppc440gx_i2c.hSigned-off-by: Tom Rini
-
Signed-off-by: Wolfgang Denk
[trini: Fixup common/cmd_io.c]
Signed-off-by: Tom Rini
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