[PATCH v4 00/11] Move part of cros-ec out of MFD subsystem

From: Enric Balletbo i Serra
Date: Thu Jun 27 2019 - 06:41:39 EST


Hi,

This is another attempt to clean up a bit more the cros-ec driver
to have a better separation on what is part of the MFD subsystem and
what is part of platform/chrome.

It'd be really nice have some reviews, acks and tested on different
platforms from the chromiumos people before merge all this patchset,
as this moves a lot of code.

The major changes introduced by this patchset are:
1. Move the core driver to platform/chrome, as is not really related
to an MFD device driver.
2. Create a new misc chardev driver to replace the chardev bits from
cros-ec-dev (MFD)
3. Added some convenience structs on cros-ec-dev (MFD) to easy add
more subdrivers avoiding to add more boiler plate.

Once applied we have moved all the code to platform/chrome except
the cros-ec-dev driver, which is the one that instantiates the different
subdrivers as cells of the MFD driver.

I tested the following patches on Veyron, Kevin, Samus, Peach Pi and
Peach Pit without noticing any problem, but they would need more
tests.

Waiting for your feedback,
Enric

Changes in v4:
- Rebase against on top of for-mfd-next to avoid conflicts.

Changes in v3:
- Collect more acks an tested-by
- Fix 'linux/mfd/cros_ec.h' is not exported (reported by lkp)
- Use mfd_add_hotplug_devices helper (Gwendal)
- Add a new patch to use mfd_add_hoplug_devices to register subdevices

Changes in v2:
- Collect acks received.
- Remove '[PATCH 07/10] mfd: cros_ec: Update with SPDX Licence identifier
and fix description' to avoid conflicts with some tree-wide patches
that actually updates the Licence identifier.
- Add '[PATCH 10/10] arm/arm64: defconfig: Update configs to use the new
CROS_EC options' to update the defconfigs after change some config
symbols.
- Remove the list, and the lock, as are not needed (Greg Kroah-Hartman)
- Remove dev_info in probe, anyway we will see the chardev or not if the
probe fails (Greg Kroah-Hartman)

Enric Balletbo i Serra (11):
mfd / platform: cros_ec: Handle chained ECs as platform devices
mfd / platform: cros_ec: Move cros-ec core driver out from MFD
mfd / platform: cros_ec: Miscellaneous character device to talk with
the EC
mfd: cros_ec: Switch to use the new cros-ec-chardev driver
mfd / platform: cros_ec: Rename config to a better name
mfd / platform: cros_ec: Reorganize platform and mfd includes
mfd: cros_ec: Use kzalloc and cros_ec_cmd_xfer_status helper
mfd: cros_ec: Add convenience struct to define dedicated CrOS EC MCUs
mfd: cros_ec: Add convenience struct to define autodetectable CrOS EC
subdevices
mfd: cros_ec: Use mfd_add_hotplug_devices() helper
arm/arm64: defconfig: Update configs to use the new CROS_EC options

Documentation/ioctl/ioctl-number.txt | 2 +-
arch/arm/configs/exynos_defconfig | 4 +-
arch/arm/configs/multi_v7_defconfig | 6 +-
arch/arm/configs/pxa_defconfig | 4 +-
arch/arm64/configs/defconfig | 6 +-
drivers/extcon/Kconfig | 2 +-
drivers/extcon/extcon-usbc-cros-ec.c | 3 +-
drivers/hid/Kconfig | 2 +-
drivers/hid/hid-google-hammer.c | 4 +-
drivers/i2c/busses/Kconfig | 2 +-
drivers/i2c/busses/i2c-cros-ec-tunnel.c | 4 +-
drivers/iio/accel/cros_ec_accel_legacy.c | 3 +-
drivers/iio/common/cros_ec_sensors/Kconfig | 2 +-
.../common/cros_ec_sensors/cros_ec_sensors.c | 3 +-
.../cros_ec_sensors/cros_ec_sensors_core.c | 3 +-
drivers/iio/light/cros_ec_light_prox.c | 3 +-
drivers/iio/pressure/cros_ec_baro.c | 3 +-
drivers/input/keyboard/Kconfig | 2 +-
drivers/input/keyboard/cros_ec_keyb.c | 4 +-
drivers/media/platform/Kconfig | 3 +-
.../media/platform/cros-ec-cec/cros-ec-cec.c | 5 +-
drivers/mfd/Kconfig | 26 +-
drivers/mfd/Makefile | 4 +-
drivers/mfd/cros_ec_dev.c | 461 +++++-------------
drivers/platform/chrome/Kconfig | 48 +-
drivers/platform/chrome/Makefile | 2 +
drivers/{mfd => platform/chrome}/cros_ec.c | 64 +--
drivers/platform/chrome/cros_ec_chardev.c | 254 ++++++++++
drivers/platform/chrome/cros_ec_debugfs.c | 3 +-
drivers/platform/chrome/cros_ec_i2c.c | 12 +-
drivers/platform/chrome/cros_ec_lightbar.c | 3 +-
drivers/platform/chrome/cros_ec_lpc.c | 7 +-
drivers/platform/chrome/cros_ec_lpc_reg.c | 4 +-
drivers/platform/chrome/cros_ec_proto.c | 3 +-
drivers/platform/chrome/cros_ec_rpmsg.c | 6 +-
drivers/platform/chrome/cros_ec_spi.c | 12 +-
drivers/platform/chrome/cros_ec_sysfs.c | 3 +-
drivers/platform/chrome/cros_ec_trace.c | 2 +-
drivers/platform/chrome/cros_ec_trace.h | 4 +-
drivers/platform/chrome/cros_ec_vbc.c | 3 +-
drivers/platform/chrome/cros_usbpd_logger.c | 5 +-
drivers/power/supply/Kconfig | 2 +-
drivers/power/supply/cros_usbpd-charger.c | 5 +-
drivers/pwm/Kconfig | 2 +-
drivers/pwm/pwm-cros-ec.c | 4 +-
drivers/rtc/Kconfig | 2 +-
drivers/rtc/rtc-cros-ec.c | 3 +-
.../linux/iio/common/cros_ec_sensors_core.h | 3 +-
include/linux/mfd/cros_ec.h | 291 -----------
.../{mfd => platform_data}/cros_ec_commands.h | 0
include/linux/platform_data/cros_ec_proto.h | 316 ++++++++++++
.../uapi/linux/cros_ec_chardev.h | 21 +-
sound/soc/codecs/Kconfig | 4 +-
sound/soc/codecs/cros_ec_codec.c | 4 +-
sound/soc/qcom/Kconfig | 2 +-
55 files changed, 896 insertions(+), 759 deletions(-)
rename drivers/{mfd => platform/chrome}/cros_ec.c (85%)
create mode 100644 drivers/platform/chrome/cros_ec_chardev.c
rename include/linux/{mfd => platform_data}/cros_ec_commands.h (100%)
create mode 100644 include/linux/platform_data/cros_ec_proto.h
rename drivers/mfd/cros_ec_dev.h => include/uapi/linux/cros_ec_chardev.h (50%)

--
2.20.1