Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1757512AbbFCNFd (ORCPT ); Wed, 3 Jun 2015 09:05:33 -0400 Received: from bhuna.collabora.co.uk ([93.93.135.160]:42447 "EHLO bhuna.collabora.co.uk" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1760107AbbFCNFN (ORCPT ); Wed, 3 Jun 2015 09:05:13 -0400 From: Javier Martinez Canillas To: Lee Jones Cc: Samuel Ortiz , Olof Johansson , Doug Anderson , Bill Richardson , Simon Glass , Gwendal Grignou , Stephen Barber , Filipe Brandenburger , Todd Broch , Alexandru M Stan , Heiko Stuebner , linux-samsung-soc@vger.kernel.org, linux-kernel@vger.kernel.org, devicetree@vger.kernel.org, Javier Martinez Canillas Subject: [PATCH v5 0/9] mfd: cros_ec: Add multi EC and proto v3 support Date: Wed, 3 Jun 2015 15:03:55 +0200 Message-Id: <1433336644-20532-1-git-send-email-javier.martinez@collabora.co.uk> X-Mailer: git-send-email 2.1.4 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 5197 Lines: 116 Hello, Newer Chromebooks have more than one Embedded Controller (EC) in the system. These additional ECs are connected through I2C with a host EC which is the one that is connected to the Application Processor (AP) through different transports (I2C, SPI or LPC). So on these platforms, sub-processors are chained to each other: AP <--> Host EC <--> Power Delivery (PD) EC The AP sends commands to the additional EC through the host EC using a set of passthru commands and the host redirects to the correct EC. This is a v5 of a series that adds support for multiple EC in a system and also for the protocol version 3 that is used on newer ECs. Most patches were taken from the downstream ChromiumOS v3.14 tree with fixes squashed, split to minimise the cross subsystem churn and changes for mainline inclusion but were not modified functionality wise. This version addresses a lot of issues pointed out by Lee Jones on the v4 posted before [0]. The patches are based on top of "[PATCH 0/2] mfd: cros_ec: Small cleanups" [1] that were posted before and was already picked by Lee Jones. Testing was done on some Chromebooks that have a single EC and support protocol v2 such as the Exynos5250 Snow, Exynos5420 Peach Pit and Exynos5800 Peach Pi to be sure that no regressions were introduced for these machines. The series were tested using a modified ectool [2] that supports the new cros_ec IOCTL API. They were also tested on a x86 Pixel Chromebook 2 (Samus) that uses the new protocol v3 and has 2 EC (cros_ec and cros_pd). But for testing on Samus, also the posted "[PATCH 0/3] platform/chrome: Changes for cros_ec_lpc and cros_ec_dev" series [3] are needed. The series is composed of the following patches: Alexandru M Stan (2): mfd: cros_ec: spi: Add a DT property to delay asserting the CS mfd: cros_ec: spi: Add delay for asserting CS Gwendal Grignou (2): mfd: cros_ec: Add DT property to define ChromeOS EC name mfd: cros_ec: Support multiple EC in a system Javier Martinez Canillas (2): mfd: cros_ec: Use a zero-length array for command data mfd: cros_ec: Move protocol helpers out of the MFD driver Stephen Barber (3): mfd: cros_ec: rev cros_ec_commands.h mfd: cros_ec: add proto v3 skeleton mfd: cros_ec: add bus-specific proto v3 code Documentation/devicetree/bindings/mfd/cros-ec.txt | 9 + drivers/i2c/busses/Kconfig | 2 +- drivers/i2c/busses/i2c-cros-ec-tunnel.c | 45 ++- drivers/input/keyboard/Kconfig | 2 +- drivers/input/keyboard/cros_ec_keyb.c | 31 +- drivers/mfd/Kconfig | 6 +- drivers/mfd/cros_ec.c | 156 +++------ drivers/mfd/cros_ec_i2c.c | 169 ++++++++- drivers/mfd/cros_ec_spi.c | 407 +++++++++++++++++++--- drivers/platform/chrome/Kconfig | 9 +- drivers/platform/chrome/Makefile | 1 + drivers/platform/chrome/cros_ec_dev.c | 189 ++++++---- drivers/platform/chrome/cros_ec_dev.h | 7 - drivers/platform/chrome/cros_ec_lightbar.c | 217 +++++++----- drivers/platform/chrome/cros_ec_lpc.c | 84 ++++- drivers/platform/chrome/cros_ec_proto.c | 382 ++++++++++++++++++++ drivers/platform/chrome/cros_ec_sysfs.c | 178 ++++++---- include/linux/mfd/cros_ec.h | 84 ++++- include/linux/mfd/cros_ec_commands.h | 277 +++++++++++++-- 19 files changed, 1806 insertions(+), 449 deletions(-) create mode 100644 drivers/platform/chrome/cros_ec_proto.c Patch #1 modifies the struct cros_ec_command to use a zero-length array for the buffer used for EC input and output data. Patch #2 synchronises the cros_ec_commands.h with a newer version of the file in the EC firmware repository. Patch #3 moves the EC communication protocol helper functions out of the MFD driver. Patch #4 adds the EC host command protocol v3 support to the cros_ec driver and patch #5 adds the bus specific proto v3 support for I2C, SPI and LPC. Patch #6 adds a DT property to specify the ChromeOS EC name according to its function. Patch #7 adds support to make multiple EC have a different device id and also exposing a per EC character device interface. Patch #8 adds a DT property to the cros_ec DT binding to specify a delay before receiving SPI transfers to make sure that the EC has already waked up and patch #9 implements it in the cros_ec_spi driver. Since the changes are quite intrusive and affects all ChromeOS EC related drivers, the patches should be merged through the MFD subsystem tree with the ack of the drivers/platform/chrome maintainer. Best regards, Javier [0]: https://lkml.org/lkml/2015/6/2/111 [1]: https://lkml.org/lkml/2015/5/20/235 [2]: http://cgit.collabora.com/git/user/javier/ec.git/log/?h=mainline-ioctl-zero-length [3]: https://lkml.org/lkml/2015/5/20/184 -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/