public inbox for u-boot@lists.denx.de
 help / color / mirror / Atom feed
From: Heiko Schocher <hs@denx.de>
To: u-boot@lists.denx.de
Subject: [U-Boot] [PATCH v2 0/17] dm: Add I2C support and convert sandbox, tegra
Date: Mon, 17 Nov 2014 07:42:18 +0100	[thread overview]
Message-ID: <546998CA.5040905@denx.de> (raw)
In-Reply-To: <1415727993-22032-1-git-send-email-sjg@chromium.org>

Hello Simon,

Am 11.11.2014 18:46, schrieb Simon Glass:
> This series adds I2C support to driver model. It has become apparent that
> this is a high priority as it is widely used. It follows along to some
> extent from the SPI conversion.
>
> Several changes are made from the original I2C implementations.
>
> Firstly it is not necessary to specify the chip address with every call,
> since each chip knows its own address - it is stored in struct dm_i2c_chip
> which is attached to each chip on the I2C bus. However, this information
> *is* passed to the driver since I presume most drivers need it and it would
> be cumbersome to look up in every call.
>
> Secondly there is no concept of a 'current' I2C bus so all associated logic
> is removed. With driver model i2c_set_bus_num() and i2c_get_bus_num() are
> not available. Since the chip device specifies both the bus and the chip
> address, there is no need for this concept. It also causes problems when
> one driver changes the current bus and forgets to change it back.
>
> Thirdly initialisation is handled by driver model's normal probe() method
> on each device so there should be no need for i2c_init_all(), i2c_init(),
> i2c_init_board(), i2c_board_late_init() and board_i2c_init().
>
> I2C muxes are not yet supported. To support these we will need to maintain
> state of the current mux settings to avoid resetting every mux every time.
> Probably we need to add a sandbox I2C mux driver to permit testing of this.
> This can probably be done later.
>
> Platform data is not yet supported either, only device tree. The
> U_BOOT_I2C_MKENT_COMPLETE() and U_BOOT_I2C_ADAP_COMPLETE() macros are not
> used. Also struct i2c_adapter is not defined anymore. This will need to be
> addressed, perhaps as part of converting over a board that does not use
> device tree, assuming that we want to support this.
>
> The following I2C CONFIGs are no-longer needed when driver model is used:
>
>    CONFIG_SYS_I2C_INIT_BOARD - each I2C bus is inited in its probe() method
>    CONFIG_I2C_MULTI_BUS      - we always support multi-bus with driver model
>    CONFIG_SYS_MAX_I2C_BUS    - the device tree aliases define available buses
>    CONFIG_SYS_I2C_SPEED      - the device tree specifies the speed for each bus
>    CONFIG_SYS_I2C            - this is the 'new old' API, now deprecated
>
> There are a few SPI patches included here due to a dependency on a new
> device binding function.
>
> This series is available at u-boot-dm/i2c-working.
>
> Changes in v2:
> - Add a suitable commit message
> - Add new patch to correct handling of aliases with embedded digits
> - Add new patch to add a function to bind a device by driver name
> - Add new patches to adjust SPI to use device_bind_driver()
> - Fix cihp typo
> - Implement generic I2C devices to allow 'i2c probe' on unknown devices
> - Return the probed device from i2c_probe()
> - Set the bus speed after the bus is probed
> - Add some debugging for generic I2C device binding
> - Add a 'deblock' method to recover an I2C bus stuck in mid-transaction
> - Add a helper function to find a chip on a particular bus number
> - Change alen to int so that it can be -1 (this was a bug)
> - Call the deblock() method for 'i2c reset'
> - Update commit message for EEPROM driver
> - Add a test for automatic binding of generic I2C devices
> - Add a new asm/test.h header for tests in sandbox
> - Adjust tegra_i2c_child_pre_probe() to permit generic I2C devices
> - Correct the compatible strings for I2C buses
> - Don't init if the speed is 0, since this breaks the controller
> - Expand coverage to all Tegra boards
>
> Simon Glass (17):
>    dm: i2c: Move error reporting into a common function
>    dm: core: Allow access to the device's driver_id data
>    dm: core: Add functions to find parent and OF data
>    dm: fdt: Correct handling of aliases with embedded digits
>    dm: Add a function to bind a device by driver name
>    dm: spi: Correct handling of SPI chip selects in sandbox
>    dm: spi: Use device_bind_driver() instead of our own function
>    dm: i2c: Add a uclass for I2C
>    dm: i2c: Implement driver model support in the i2c command
>    dm: i2c: Add I2C emulation driver for sandbox
>    dm: i2c: Add a sandbox I2C driver
>    dm: i2c: Add an I2C EEPROM simulator
>    dm: i2c: config: Enable I2C for sandbox using driver model
>    dm: i2c: dts: Add an I2C bus for sandbox
>    dm: Add a simple EEPROM driver
>    dm: i2c: Add tests for I2C
>    dm: i2c: tegra: Convert to driver model
>
>   arch/arm/cpu/tegra20-common/pmu.c           |  21 +-
>   arch/arm/dts/tegra124-jetson-tk1.dts        |   1 -
>   arch/arm/dts/tegra124-norrin.dts            |   1 -
>   arch/arm/dts/tegra30-tec-ng.dts             |   4 +
>   arch/arm/include/asm/arch-tegra/tegra_i2c.h |   2 +-
>   arch/sandbox/dts/sandbox.dts                |  17 ++
>   arch/sandbox/include/asm/test.h             |  15 ++
>   board/avionic-design/common/tamonten-ng.c   |  12 +-
>   board/nvidia/cardhu/cardhu.c                |  13 +-
>   board/nvidia/common/board.c                 |   4 -
>   board/nvidia/dalmore/dalmore.c              |  21 +-
>   board/nvidia/whistler/whistler.c            |  29 ++-
>   board/toradex/apalis_t30/apalis_t30.c       |  19 +-
>   common/cmd_i2c.c                            | 350 +++++++++++++++++++++++-----
>   drivers/core/device.c                       |  10 +
>   drivers/core/lists.c                        |  38 ++-
>   drivers/i2c/Makefile                        |   2 +
>   drivers/i2c/i2c-emul-uclass.c               |  14 ++
>   drivers/i2c/i2c-uclass.c                    | 275 ++++++++++++++++++++++
>   drivers/i2c/sandbox_i2c.c                   | 156 +++++++++++++
>   drivers/i2c/tegra_i2c.c                     | 320 ++++++++++---------------
>   drivers/misc/Makefile                       |   4 +
>   drivers/misc/i2c_eeprom.c                   |  51 ++++
>   drivers/misc/i2c_eeprom_emul.c              | 108 +++++++++
>   drivers/mtd/spi/sandbox.c                   |   4 +-
>   drivers/power/tps6586x.c                    |  27 +--
>   drivers/spi/spi-uclass.c                    |  34 +--
>   include/config_fallbacks.h                  |   6 +
>   include/configs/apalis_t30.h                |   3 -
>   include/configs/beaver.h                    |   3 -
>   include/configs/cardhu.h                    |   5 -
>   include/configs/colibri_t30.h               |   3 -
>   include/configs/dalmore.h                   |   5 -
>   include/configs/jetson-tk1.h                |   5 -
>   include/configs/norrin.h                    |   5 -
>   include/configs/sandbox.h                   |   6 +
>   include/configs/seaboard.h                  |   3 -
>   include/configs/tec-ng.h                    |   5 -
>   include/configs/tegra-common.h              |   1 +
>   include/configs/tegra114-common.h           |   3 -
>   include/configs/tegra124-common.h           |   3 -
>   include/configs/tegra20-common.h            |   3 -
>   include/configs/tegra30-common.h            |   3 -
>   include/configs/trimslice.h                 |   3 -
>   include/configs/venice2.h                   |   5 -
>   include/configs/whistler.h                  |   3 -
>   include/dm/device.h                         |  19 ++
>   include/dm/lists.h                          |  13 ++
>   include/dm/uclass-id.h                      |   4 +
>   include/i2c.h                               | 288 +++++++++++++++++++++++
>   include/i2c_eeprom.h                        |  19 ++
>   include/spi.h                               |  14 +-
>   include/tps6586x.h                          |   4 +-
>   lib/fdtdec.c                                |   6 +-
>   test/dm/Makefile                            |   1 +
>   test/dm/i2c.c                               | 112 +++++++++
>   test/dm/test.dts                            |  17 ++
>   57 files changed, 1690 insertions(+), 432 deletions(-)
>   create mode 100644 arch/sandbox/include/asm/test.h
>   create mode 100644 drivers/i2c/i2c-emul-uclass.c
>   create mode 100644 drivers/i2c/i2c-uclass.c
>   create mode 100644 drivers/i2c/sandbox_i2c.c
>   create mode 100644 drivers/misc/i2c_eeprom.c
>   create mode 100644 drivers/misc/i2c_eeprom_emul.c
>   create mode 100644 include/i2c_eeprom.h
>   create mode 100644 test/dm/i2c.c

Thanks for your great work. I acked all your patches, so from my
side, you can push it through your dm tree into mainline. If you
want that I pick up your patches please inform me, thanks!

bye,
Heiko
-- 
DENX Software Engineering GmbH,     MD: Wolfgang Denk & Detlev Zundel
HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany

  parent reply	other threads:[~2014-11-17  6:42 UTC|newest]

Thread overview: 87+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-11-11 17:46 [U-Boot] [PATCH v2 0/17] dm: Add I2C support and convert sandbox, tegra Simon Glass
2014-11-11 17:46 ` [U-Boot] [PATCH v2 01/17] dm: i2c: Move error reporting into a common function Simon Glass
2014-11-17  0:46   ` Tom Rini
2014-11-17  6:27   ` Heiko Schocher
2014-11-23 12:59     ` Simon Glass
2014-11-11 17:46 ` [U-Boot] [PATCH v2 02/17] dm: core: Allow access to the device's driver_id data Simon Glass
2014-11-17  0:46   ` Tom Rini
2014-11-17  6:28   ` Heiko Schocher
2014-11-19  8:25   ` Masahiro Yamada
2014-11-19  9:35     ` Simon Glass
2014-11-20  6:06       ` Masahiro Yamada
2014-11-20 18:39         ` Simon Glass
2014-11-23 12:59           ` Simon Glass
2014-11-11 17:46 ` [U-Boot] [PATCH v2 03/17] dm: core: Add functions to find parent and OF data Simon Glass
2014-11-17  0:46   ` Tom Rini
2014-11-17  6:28   ` Heiko Schocher
2014-11-19  8:27   ` Masahiro Yamada
2014-11-19  9:37     ` Simon Glass
2014-11-23 13:00       ` Simon Glass
2014-11-11 17:46 ` [U-Boot] [PATCH v2 04/17] dm: fdt: Correct handling of aliases with embedded digits Simon Glass
2014-11-17  0:46   ` Tom Rini
2014-11-17  5:57     ` Simon Glass
2014-11-17 18:32       ` Tom Rini
2014-11-23 13:00         ` Simon Glass
2014-11-17  6:28   ` Heiko Schocher
2014-11-11 17:46 ` [U-Boot] [PATCH v2 05/17] dm: Add a function to bind a device by driver name Simon Glass
2014-11-11 18:23   ` Jagan Teki
2014-11-17  6:29   ` Heiko Schocher
2014-11-23 13:00     ` Simon Glass
2014-11-11 17:46 ` [U-Boot] [PATCH v2 06/17] dm: spi: Correct handling of SPI chip selects in sandbox Simon Glass
2014-11-11 18:20   ` Jagan Teki
2014-11-17  6:29   ` Heiko Schocher
2014-11-23 13:00     ` Simon Glass
2014-11-11 17:46 ` [U-Boot] [PATCH v2 07/17] dm: spi: Use device_bind_driver() instead of our own function Simon Glass
2014-11-11 18:24   ` Jagan Teki
2014-11-17  6:29   ` Heiko Schocher
2014-11-23 13:00     ` Simon Glass
2014-11-11 17:46 ` [U-Boot] [PATCH v2 08/17] dm: i2c: Add a uclass for I2C Simon Glass
2014-11-17  0:46   ` Tom Rini
2014-11-17  6:37   ` Heiko Schocher
2014-11-18 12:32   ` Masahiro Yamada
2014-11-18 12:35     ` Heiko Schocher
2014-11-19  8:56   ` Masahiro Yamada
2014-11-19  9:02     ` Masahiro Yamada
2014-11-19 10:24     ` Simon Glass
2014-11-20  6:05       ` Masahiro Yamada
2014-11-20 14:04         ` Simon Glass
2014-11-21  7:24           ` Heiko Schocher
2014-11-21  8:18             ` Masahiro Yamada
2014-11-21 22:30               ` Simon Glass
2014-11-21  8:04           ` Masahiro Yamada
2014-11-21 22:29             ` Simon Glass
2014-11-23 12:04               ` Albert ARIBAUD
2014-11-11 17:46 ` [U-Boot] [PATCH v2 09/17] dm: i2c: Implement driver model support in the i2c command Simon Glass
2014-11-17  0:46   ` Tom Rini
2014-11-17  6:38   ` Heiko Schocher
2014-11-11 17:46 ` [U-Boot] [PATCH v2 10/17] dm: i2c: Add I2C emulation driver for sandbox Simon Glass
2014-11-17  0:46   ` Tom Rini
2014-11-17  6:39   ` Heiko Schocher
2014-11-11 17:46 ` [U-Boot] [PATCH v2 11/17] dm: i2c: Add a sandbox I2C driver Simon Glass
2014-11-17  0:46   ` Tom Rini
2014-11-17  6:39   ` Heiko Schocher
2014-11-11 17:46 ` [U-Boot] [PATCH v2 12/17] dm: i2c: Add an I2C EEPROM simulator Simon Glass
2014-11-17  0:46   ` Tom Rini
2014-11-17  6:39   ` Heiko Schocher
2014-11-11 17:46 ` [U-Boot] [PATCH v2 13/17] dm: i2c: config: Enable I2C for sandbox using driver model Simon Glass
2014-11-17  0:47   ` Tom Rini
2014-11-17  6:39   ` Heiko Schocher
2014-11-11 17:46 ` [U-Boot] [PATCH v2 14/17] dm: i2c: dts: Add an I2C bus for sandbox Simon Glass
2014-11-17  0:47   ` Tom Rini
2014-11-17  6:40   ` Heiko Schocher
2014-11-19  8:29   ` Masahiro Yamada
2014-11-19 10:36     ` Simon Glass
2014-11-11 17:46 ` [U-Boot] [PATCH v2 15/17] dm: Add a simple EEPROM driver Simon Glass
2014-11-17  0:47   ` Tom Rini
2014-11-17  6:40   ` Heiko Schocher
2014-11-11 17:46 ` [U-Boot] [PATCH v2 16/17] dm: i2c: Add tests for I2C Simon Glass
2014-11-17  0:47   ` Tom Rini
2014-11-17  6:40   ` Heiko Schocher
2014-11-11 17:46 ` [U-Boot] [PATCH v2 17/17] dm: i2c: tegra: Convert to driver model Simon Glass
2014-11-17  6:41   ` Heiko Schocher
2014-11-17  6:42 ` Heiko Schocher [this message]
2014-11-17  6:52   ` [U-Boot] [PATCH v2 0/17] dm: Add I2C support and convert sandbox, tegra Simon Glass
2014-11-19  8:27 ` Masahiro Yamada
2014-11-19 13:08   ` Heiko Schocher
2014-11-20 17:31     ` Simon Glass
2014-11-21  7:27       ` Heiko Schocher

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=546998CA.5040905@denx.de \
    --to=hs@denx.de \
    --cc=u-boot@lists.denx.de \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox