All of lore.kernel.org
 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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.