linux/drivers/platform/chrome
Enric Balletbo i Serra 7aa703bb88 mfd / platform: cros_ec: Handle chained ECs as platform devices
An MFD is a device that contains several sub-devices (cells). For instance,
the ChromeOS EC fits in this description as usually contains a charger and
can have other devices with different functions like a Real-Time Clock,
an Audio codec, a Real-Time Clock, ...

If you look at the driver, though, we're doing something odd. We have
two MFD cros-ec drivers where one of them (cros-ec-core) instantiates
another MFD driver as sub-driver (cros-ec-dev), and the latest
instantiates the different sub-devices (Real-Time Clock, Audio codec,
etc).

                  MFD
------------------------------------------
   cros-ec-core
       |___ mfd-cellA (cros-ec-dev)
       |       |__ mfd-cell0
       |       |__ mfd-cell1
       |       |__ ...
       |
       |___ mfd-cellB (cros-ec-dev)
               |__ mfd-cell0
               |__ mfd-cell1
               |__ ...

The problem that was trying to solve is to describe some kind of topology for
the case where we have an EC (cros-ec) chained with another EC
(cros-pd). Apart from that this extends the bounds of what MFD was
designed to do we might be interested on have other kinds of topology that
can't be implemented in that way.

Let's prepare the code to move the cros-ec-core part from MFD to
platform/chrome as this is clearly a platform specific thing non-related
to a MFD device.

  platform/chrome  |         MFD
------------------------------------------
                   |
   cros-ec ________|___ cros-ec-dev
                   |       |__ mfd-cell0
                   |       |__ mfd-cell1
                   |       |__ ...
                   |
   cros-pd ________|___ cros-ec-dev
                   |        |__ mfd-cell0
                   |        |__ mfd-cell1
                   |        |__ ...

Signed-off-by: Enric Balletbo i Serra <enric.balletbo@collabora.com>
Acked-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
Reviewed-by: Gwendal Grignou <gwendal@chromium.org>
Tested-by: Gwendal Grignou <gwendal@chromium.org>
Signed-off-by: Lee Jones <lee.jones@linaro.org>
2019-09-02 11:32:57 +01:00
..
wilco_ec chrome platform changes for v5.3 2019-07-11 18:45:29 -07:00
Kconfig chrome platform changes for v5.3 2019-07-11 18:45:29 -07:00
Makefile platform/chrome: cros_ec_lpc: Choose Microchip EC at runtime 2019-06-20 12:00:32 +02:00
chromeos_laptop.c platform/chrome: chromeos_laptop: use pci_dev_id() helper 2019-04-29 16:13:06 -05:00
chromeos_pstore.c platform/chrome: cromeos_pstore: switch to SPDX identifier 2019-02-01 10:13:05 +01:00
chromeos_tbmc.c platform/chrome: chromeos_tbmc - Remove unneeded const 2018-10-09 22:40:12 -07:00
cros_ec_debugfs.c mfd / platform: cros_ec_debugfs: Expose resume result via debugfs 2019-07-01 15:39:11 +02:00
cros_ec_i2c.c mfd / platform: cros_ec: Handle chained ECs as platform devices 2019-09-02 11:32:57 +01:00
cros_ec_ishtp.c platform/chrome: Add ChromeOS EC ISHTP driver 2019-05-20 10:18:10 +02:00
cros_ec_lightbar.c platform/chrome: lightbar: Get drvdata from parent in suspend/resume 2019-06-28 12:37:21 +02:00
cros_ec_lpc.c mfd / platform: cros_ec: Handle chained ECs as platform devices 2019-09-02 11:32:57 +01:00
cros_ec_lpc_mec.c platform/chrome: cros_ec_lpc_mec: Fix kernel-doc comment first line 2019-06-20 12:00:32 +02:00
cros_ec_lpc_mec.h platform/chrome: cros_ec: Remove cros_ec dependency in lpc_mec 2019-02-11 10:07:40 +01:00
cros_ec_proto.c - Core Frameworks 2019-05-14 10:39:08 -07:00
cros_ec_rpmsg.c mfd / platform: cros_ec: Handle chained ECs as platform devices 2019-09-02 11:32:57 +01:00
cros_ec_spi.c mfd / platform: cros_ec: Handle chained ECs as platform devices 2019-09-02 11:32:57 +01:00
cros_ec_sysfs.c platform/chrome: cros_ec: Make some symbols static 2019-06-05 17:28:53 +02:00
cros_ec_trace.c platform/chrome: cros_ec_proto: Add trace event to trace EC commands 2019-04-17 10:29:34 +02:00
cros_ec_trace.h platform/chrome: cros_ec_proto: Add trace event to trace EC commands 2019-04-17 10:29:34 +02:00
cros_ec_vbc.c platform/chrome: cros_ec: Make some symbols static 2019-06-05 17:28:53 +02:00
cros_kbd_led_backlight.c platform/chrome: cros_kbd_led_backlight: switch to SPDX identifier 2019-02-01 10:13:06 +01:00
cros_usbpd_logger.c platform/chrome: Add CrOS USB PD logging driver 2019-04-15 12:13:24 +02:00