diff options
author | Enric Balletbo i Serra <enric.balletbo@collabora.com> | 2019-09-02 05:53:05 -0400 |
---|---|---|
committer | Lee Jones <lee.jones@linaro.org> | 2019-09-02 06:33:42 -0400 |
commit | 840d9f131f65b021e0a73f3371f3194897dba6ad (patch) | |
tree | 8da2f672f55cb9f894e49b96df5885483a240b71 | |
parent | 2fa2b980e3fe187a0b916bfe6bd5822889b44d5e (diff) |
mfd / platform: cros_ec: Reorganize platform and mfd includes
There is a bit of mess between cros-ec mfd includes and platform
includes. For example, we have a linux/mfd/cros_ec.h include that
exports the interface implemented in platform/chrome/cros_ec_proto.c. Or
we have a linux/mfd/cros_ec_commands.h file that is non related to the
multifunction device (in the sense that is not exporting any function of
the mfd device). This causes crossed includes between mfd and
platform/chrome subsystems and makes the code difficult to read, apart
from creating 'curious' situations where a platform/chrome driver includes
a linux/mfd/cros_ec.h file just to get the exported functions that are
implemented in another platform/chrome driver.
In order to have a better separation on what the cros-ec multifunction
driver does and what the cros-ec core provides move and rework the
affected includes doing:
- Move cros_ec_commands.h to include/linux/platform_data/cros_ec_commands.h
- Get rid of the parts that are implemented in the platform/chrome/cros_ec_proto.c
driver from include/linux/mfd/cros_ec.h to a new file
include/linux/platform_data/cros_ec_proto.h
- Update all the drivers with the new includes, so
- Drivers that only need to know about the protocol include
- linux/platform_data/cros_ec_proto.h
- linux/platform_data/cros_ec_commands.h
- Drivers that need to know about the cros-ec mfd device also include
- linux/mfd/cros_ec.h
Signed-off-by: Enric Balletbo i Serra <enric.balletbo@collabora.com>
Acked-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
Acked-by: Mark Brown <broonie@kernel.org>
Acked-by: Wolfram Sang <wsa@the-dreams.de>
Acked-by: Neil Armstrong <narmstrong@baylibre.com>
Acked-by: Alexandre Belloni <alexandre.belloni@bootlin.com>
Acked-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
Acked-by: Benjamin Tissoires <benjamin.tissoires@redhat.com>
Acked-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
Acked-by: Sebastian Reichel <sebastian.reichel@collabora.com>
Acked-by: Chanwoo Choi <cw00.choi@samsung.com>
Reviewed-by: Gwendal Grignou <gwendal@chromium.org>
Tested-by: Gwendal Grignou <gwendal@chromium.org>
Series changes: 3
- Fix dereferencing pointer to incomplete type 'struct cros_ec_dev' (lkp)
Signed-off-by: Lee Jones <lee.jones@linaro.org>
37 files changed, 387 insertions, 357 deletions
diff --git a/drivers/extcon/extcon-usbc-cros-ec.c b/drivers/extcon/extcon-usbc-cros-ec.c index 43c0a936ab82..5290cc2d19d9 100644 --- a/drivers/extcon/extcon-usbc-cros-ec.c +++ b/drivers/extcon/extcon-usbc-cros-ec.c | |||
@@ -6,10 +6,11 @@ | |||
6 | 6 | ||
7 | #include <linux/extcon-provider.h> | 7 | #include <linux/extcon-provider.h> |
8 | #include <linux/kernel.h> | 8 | #include <linux/kernel.h> |
9 | #include <linux/mfd/cros_ec.h> | ||
10 | #include <linux/module.h> | 9 | #include <linux/module.h> |
11 | #include <linux/notifier.h> | 10 | #include <linux/notifier.h> |
12 | #include <linux/of.h> | 11 | #include <linux/of.h> |
12 | #include <linux/platform_data/cros_ec_commands.h> | ||
13 | #include <linux/platform_data/cros_ec_proto.h> | ||
13 | #include <linux/platform_device.h> | 14 | #include <linux/platform_device.h> |
14 | #include <linux/slab.h> | 15 | #include <linux/slab.h> |
15 | #include <linux/sched.h> | 16 | #include <linux/sched.h> |
diff --git a/drivers/hid/hid-google-hammer.c b/drivers/hid/hid-google-hammer.c index ee5e0bdcf078..84f8c127ebdc 100644 --- a/drivers/hid/hid-google-hammer.c +++ b/drivers/hid/hid-google-hammer.c | |||
@@ -16,9 +16,9 @@ | |||
16 | #include <linux/acpi.h> | 16 | #include <linux/acpi.h> |
17 | #include <linux/hid.h> | 17 | #include <linux/hid.h> |
18 | #include <linux/leds.h> | 18 | #include <linux/leds.h> |
19 | #include <linux/mfd/cros_ec.h> | ||
20 | #include <linux/mfd/cros_ec_commands.h> | ||
21 | #include <linux/module.h> | 19 | #include <linux/module.h> |
20 | #include <linux/platform_data/cros_ec_commands.h> | ||
21 | #include <linux/platform_data/cros_ec_proto.h> | ||
22 | #include <linux/platform_device.h> | 22 | #include <linux/platform_device.h> |
23 | #include <linux/pm_wakeup.h> | 23 | #include <linux/pm_wakeup.h> |
24 | #include <asm/unaligned.h> | 24 | #include <asm/unaligned.h> |
diff --git a/drivers/i2c/busses/i2c-cros-ec-tunnel.c b/drivers/i2c/busses/i2c-cros-ec-tunnel.c index 82bcd9a78759..c551aa96a2e3 100644 --- a/drivers/i2c/busses/i2c-cros-ec-tunnel.c +++ b/drivers/i2c/busses/i2c-cros-ec-tunnel.c | |||
@@ -5,8 +5,8 @@ | |||
5 | 5 | ||
6 | #include <linux/module.h> | 6 | #include <linux/module.h> |
7 | #include <linux/i2c.h> | 7 | #include <linux/i2c.h> |
8 | #include <linux/mfd/cros_ec.h> | 8 | #include <linux/platform_data/cros_ec_commands.h> |
9 | #include <linux/mfd/cros_ec_commands.h> | 9 | #include <linux/platform_data/cros_ec_proto.h> |
10 | #include <linux/platform_device.h> | 10 | #include <linux/platform_device.h> |
11 | #include <linux/slab.h> | 11 | #include <linux/slab.h> |
12 | 12 | ||
diff --git a/drivers/iio/accel/cros_ec_accel_legacy.c b/drivers/iio/accel/cros_ec_accel_legacy.c index 46bb2e421bb9..fd9a634f741e 100644 --- a/drivers/iio/accel/cros_ec_accel_legacy.c +++ b/drivers/iio/accel/cros_ec_accel_legacy.c | |||
@@ -18,9 +18,10 @@ | |||
18 | #include <linux/iio/triggered_buffer.h> | 18 | #include <linux/iio/triggered_buffer.h> |
19 | #include <linux/kernel.h> | 19 | #include <linux/kernel.h> |
20 | #include <linux/mfd/cros_ec.h> | 20 | #include <linux/mfd/cros_ec.h> |
21 | #include <linux/mfd/cros_ec_commands.h> | ||
22 | #include <linux/module.h> | 21 | #include <linux/module.h> |
23 | #include <linux/slab.h> | 22 | #include <linux/slab.h> |
23 | #include <linux/platform_data/cros_ec_commands.h> | ||
24 | #include <linux/platform_data/cros_ec_proto.h> | ||
24 | #include <linux/platform_device.h> | 25 | #include <linux/platform_device.h> |
25 | 26 | ||
26 | #define DRV_NAME "cros-ec-accel-legacy" | 27 | #define DRV_NAME "cros-ec-accel-legacy" |
diff --git a/drivers/iio/common/cros_ec_sensors/cros_ec_lid_angle.c b/drivers/iio/common/cros_ec_sensors/cros_ec_lid_angle.c index 876dfd176b0e..1dcc2a16ab2d 100644 --- a/drivers/iio/common/cros_ec_sensors/cros_ec_lid_angle.c +++ b/drivers/iio/common/cros_ec_sensors/cros_ec_lid_angle.c | |||
@@ -20,9 +20,8 @@ | |||
20 | #include <linux/iio/triggered_buffer.h> | 20 | #include <linux/iio/triggered_buffer.h> |
21 | #include <linux/iio/trigger_consumer.h> | 21 | #include <linux/iio/trigger_consumer.h> |
22 | #include <linux/kernel.h> | 22 | #include <linux/kernel.h> |
23 | #include <linux/mfd/cros_ec.h> | ||
24 | #include <linux/mfd/cros_ec_commands.h> | ||
25 | #include <linux/module.h> | 23 | #include <linux/module.h> |
24 | #include <linux/platform_data/cros_ec_commands.h> | ||
26 | #include <linux/platform_device.h> | 25 | #include <linux/platform_device.h> |
27 | #include <linux/slab.h> | 26 | #include <linux/slab.h> |
28 | 27 | ||
diff --git a/drivers/iio/common/cros_ec_sensors/cros_ec_sensors.c b/drivers/iio/common/cros_ec_sensors/cros_ec_sensors.c index 17af4e0fd5f8..40dc24ff0ee5 100644 --- a/drivers/iio/common/cros_ec_sensors/cros_ec_sensors.c +++ b/drivers/iio/common/cros_ec_sensors/cros_ec_sensors.c | |||
@@ -17,8 +17,9 @@ | |||
17 | #include <linux/iio/triggered_buffer.h> | 17 | #include <linux/iio/triggered_buffer.h> |
18 | #include <linux/kernel.h> | 18 | #include <linux/kernel.h> |
19 | #include <linux/mfd/cros_ec.h> | 19 | #include <linux/mfd/cros_ec.h> |
20 | #include <linux/mfd/cros_ec_commands.h> | ||
21 | #include <linux/module.h> | 20 | #include <linux/module.h> |
21 | #include <linux/platform_data/cros_ec_commands.h> | ||
22 | #include <linux/platform_data/cros_ec_proto.h> | ||
22 | #include <linux/platform_device.h> | 23 | #include <linux/platform_device.h> |
23 | #include <linux/slab.h> | 24 | #include <linux/slab.h> |
24 | 25 | ||
diff --git a/drivers/iio/common/cros_ec_sensors/cros_ec_sensors_core.c b/drivers/iio/common/cros_ec_sensors/cros_ec_sensors_core.c index 130362ca421b..37b3f1df0ceb 100644 --- a/drivers/iio/common/cros_ec_sensors/cros_ec_sensors_core.c +++ b/drivers/iio/common/cros_ec_sensors/cros_ec_sensors_core.c | |||
@@ -14,9 +14,10 @@ | |||
14 | #include <linux/iio/trigger_consumer.h> | 14 | #include <linux/iio/trigger_consumer.h> |
15 | #include <linux/kernel.h> | 15 | #include <linux/kernel.h> |
16 | #include <linux/mfd/cros_ec.h> | 16 | #include <linux/mfd/cros_ec.h> |
17 | #include <linux/mfd/cros_ec_commands.h> | ||
18 | #include <linux/module.h> | 17 | #include <linux/module.h> |
19 | #include <linux/slab.h> | 18 | #include <linux/slab.h> |
19 | #include <linux/platform_data/cros_ec_commands.h> | ||
20 | #include <linux/platform_data/cros_ec_proto.h> | ||
20 | #include <linux/platform_device.h> | 21 | #include <linux/platform_device.h> |
21 | 22 | ||
22 | static char *cros_ec_loc[] = { | 23 | static char *cros_ec_loc[] = { |
diff --git a/drivers/iio/light/cros_ec_light_prox.c b/drivers/iio/light/cros_ec_light_prox.c index 308ee6ff2e22..437e0eae9178 100644 --- a/drivers/iio/light/cros_ec_light_prox.c +++ b/drivers/iio/light/cros_ec_light_prox.c | |||
@@ -15,8 +15,9 @@ | |||
15 | #include <linux/iio/trigger_consumer.h> | 15 | #include <linux/iio/trigger_consumer.h> |
16 | #include <linux/kernel.h> | 16 | #include <linux/kernel.h> |
17 | #include <linux/mfd/cros_ec.h> | 17 | #include <linux/mfd/cros_ec.h> |
18 | #include <linux/mfd/cros_ec_commands.h> | ||
19 | #include <linux/module.h> | 18 | #include <linux/module.h> |
19 | #include <linux/platform_data/cros_ec_commands.h> | ||
20 | #include <linux/platform_data/cros_ec_proto.h> | ||
20 | #include <linux/platform_device.h> | 21 | #include <linux/platform_device.h> |
21 | #include <linux/slab.h> | 22 | #include <linux/slab.h> |
22 | 23 | ||
diff --git a/drivers/iio/pressure/cros_ec_baro.c b/drivers/iio/pressure/cros_ec_baro.c index 034ce98d6e97..956dc01f1295 100644 --- a/drivers/iio/pressure/cros_ec_baro.c +++ b/drivers/iio/pressure/cros_ec_baro.c | |||
@@ -15,9 +15,10 @@ | |||
15 | #include <linux/iio/trigger_consumer.h> | 15 | #include <linux/iio/trigger_consumer.h> |
16 | #include <linux/kernel.h> | 16 | #include <linux/kernel.h> |
17 | #include <linux/mfd/cros_ec.h> | 17 | #include <linux/mfd/cros_ec.h> |
18 | #include <linux/mfd/cros_ec_commands.h> | ||
19 | #include <linux/module.h> | 18 | #include <linux/module.h> |
20 | #include <linux/slab.h> | 19 | #include <linux/slab.h> |
20 | #include <linux/platform_data/cros_ec_commands.h> | ||
21 | #include <linux/platform_data/cros_ec_proto.h> | ||
21 | #include <linux/platform_device.h> | 22 | #include <linux/platform_device.h> |
22 | 23 | ||
23 | /* | 24 | /* |
diff --git a/drivers/input/keyboard/cros_ec_keyb.c b/drivers/input/keyboard/cros_ec_keyb.c index 38cb6d82d8fe..a29e81fdf186 100644 --- a/drivers/input/keyboard/cros_ec_keyb.c +++ b/drivers/input/keyboard/cros_ec_keyb.c | |||
@@ -22,8 +22,8 @@ | |||
22 | #include <linux/slab.h> | 22 | #include <linux/slab.h> |
23 | #include <linux/sysrq.h> | 23 | #include <linux/sysrq.h> |
24 | #include <linux/input/matrix_keypad.h> | 24 | #include <linux/input/matrix_keypad.h> |
25 | #include <linux/mfd/cros_ec.h> | 25 | #include <linux/platform_data/cros_ec_commands.h> |
26 | #include <linux/mfd/cros_ec_commands.h> | 26 | #include <linux/platform_data/cros_ec_proto.h> |
27 | 27 | ||
28 | #include <asm/unaligned.h> | 28 | #include <asm/unaligned.h> |
29 | 29 | ||
diff --git a/drivers/media/platform/cros-ec-cec/cros-ec-cec.c b/drivers/media/platform/cros-ec-cec/cros-ec-cec.c index 068df9888dbf..f9fd4bda2a94 100644 --- a/drivers/media/platform/cros-ec-cec/cros-ec-cec.c +++ b/drivers/media/platform/cros-ec-cec/cros-ec-cec.c | |||
@@ -14,10 +14,11 @@ | |||
14 | #include <linux/cec.h> | 14 | #include <linux/cec.h> |
15 | #include <linux/slab.h> | 15 | #include <linux/slab.h> |
16 | #include <linux/interrupt.h> | 16 | #include <linux/interrupt.h> |
17 | #include <linux/mfd/cros_ec.h> | ||
18 | #include <linux/platform_data/cros_ec_commands.h> | ||
19 | #include <linux/platform_data/cros_ec_proto.h> | ||
17 | #include <media/cec.h> | 20 | #include <media/cec.h> |
18 | #include <media/cec-notifier.h> | 21 | #include <media/cec-notifier.h> |
19 | #include <linux/mfd/cros_ec.h> | ||
20 | #include <linux/mfd/cros_ec_commands.h> | ||
21 | 22 | ||
22 | #define DRV_NAME "cros-ec-cec" | 23 | #define DRV_NAME "cros-ec-cec" |
23 | 24 | ||
diff --git a/drivers/mfd/cros_ec_dev.c b/drivers/mfd/cros_ec_dev.c index 0c1c0ce3453e..091d428f5531 100644 --- a/drivers/mfd/cros_ec_dev.c +++ b/drivers/mfd/cros_ec_dev.c | |||
@@ -7,12 +7,13 @@ | |||
7 | 7 | ||
8 | #include <linux/mfd/core.h> | 8 | #include <linux/mfd/core.h> |
9 | #include <linux/mfd/cros_ec.h> | 9 | #include <linux/mfd/cros_ec.h> |
10 | #include <linux/mfd/cros_ec_commands.h> | ||
11 | #include <linux/module.h> | 10 | #include <linux/module.h> |
12 | #include <linux/mod_devicetable.h> | 11 | #include <linux/mod_devicetable.h> |
13 | #include <linux/of_platform.h> | 12 | #include <linux/of_platform.h> |
14 | #include <linux/platform_device.h> | 13 | #include <linux/platform_device.h> |
15 | #include <linux/platform_data/cros_ec_chardev.h> | 14 | #include <linux/platform_data/cros_ec_chardev.h> |
15 | #include <linux/platform_data/cros_ec_commands.h> | ||
16 | #include <linux/platform_data/cros_ec_proto.h> | ||
16 | #include <linux/slab.h> | 17 | #include <linux/slab.h> |
17 | 18 | ||
18 | #define DRV_NAME "cros-ec-dev" | 19 | #define DRV_NAME "cros-ec-dev" |
diff --git a/drivers/platform/chrome/cros_ec.c b/drivers/platform/chrome/cros_ec.c index a54ad47c7b02..fd77e6fa74c2 100644 --- a/drivers/platform/chrome/cros_ec.c +++ b/drivers/platform/chrome/cros_ec.c | |||
@@ -13,7 +13,8 @@ | |||
13 | #include <linux/interrupt.h> | 13 | #include <linux/interrupt.h> |
14 | #include <linux/slab.h> | 14 | #include <linux/slab.h> |
15 | #include <linux/module.h> | 15 | #include <linux/module.h> |
16 | #include <linux/mfd/cros_ec.h> | 16 | #include <linux/platform_data/cros_ec_commands.h> |
17 | #include <linux/platform_data/cros_ec_proto.h> | ||
17 | #include <linux/suspend.h> | 18 | #include <linux/suspend.h> |
18 | #include <asm/unaligned.h> | 19 | #include <asm/unaligned.h> |
19 | 20 | ||
diff --git a/drivers/platform/chrome/cros_ec_chardev.c b/drivers/platform/chrome/cros_ec_chardev.c index 174f940822c9..08abd7e5c7bf 100644 --- a/drivers/platform/chrome/cros_ec_chardev.c +++ b/drivers/platform/chrome/cros_ec_chardev.c | |||
@@ -14,10 +14,11 @@ | |||
14 | #include <linux/device.h> | 14 | #include <linux/device.h> |
15 | #include <linux/fs.h> | 15 | #include <linux/fs.h> |
16 | #include <linux/mfd/cros_ec.h> | 16 | #include <linux/mfd/cros_ec.h> |
17 | #include <linux/mfd/cros_ec_commands.h> | ||
18 | #include <linux/miscdevice.h> | 17 | #include <linux/miscdevice.h> |
19 | #include <linux/module.h> | 18 | #include <linux/module.h> |
20 | #include <linux/platform_data/cros_ec_chardev.h> | 19 | #include <linux/platform_data/cros_ec_chardev.h> |
20 | #include <linux/platform_data/cros_ec_commands.h> | ||
21 | #include <linux/platform_data/cros_ec_proto.h> | ||
21 | #include <linux/platform_device.h> | 22 | #include <linux/platform_device.h> |
22 | #include <linux/slab.h> | 23 | #include <linux/slab.h> |
23 | #include <linux/types.h> | 24 | #include <linux/types.h> |
diff --git a/drivers/platform/chrome/cros_ec_debugfs.c b/drivers/platform/chrome/cros_ec_debugfs.c index 8ec1cc2889f2..6ae484989d1f 100644 --- a/drivers/platform/chrome/cros_ec_debugfs.c +++ b/drivers/platform/chrome/cros_ec_debugfs.c | |||
@@ -8,9 +8,10 @@ | |||
8 | #include <linux/delay.h> | 8 | #include <linux/delay.h> |
9 | #include <linux/fs.h> | 9 | #include <linux/fs.h> |
10 | #include <linux/mfd/cros_ec.h> | 10 | #include <linux/mfd/cros_ec.h> |
11 | #include <linux/mfd/cros_ec_commands.h> | ||
12 | #include <linux/module.h> | 11 | #include <linux/module.h> |
13 | #include <linux/mutex.h> | 12 | #include <linux/mutex.h> |
13 | #include <linux/platform_data/cros_ec_commands.h> | ||
14 | #include <linux/platform_data/cros_ec_proto.h> | ||
14 | #include <linux/platform_device.h> | 15 | #include <linux/platform_device.h> |
15 | #include <linux/poll.h> | 16 | #include <linux/poll.h> |
16 | #include <linux/sched.h> | 17 | #include <linux/sched.h> |
diff --git a/drivers/platform/chrome/cros_ec_i2c.c b/drivers/platform/chrome/cros_ec_i2c.c index 6bb82dfa7dae..9bd97bc8454b 100644 --- a/drivers/platform/chrome/cros_ec_i2c.c +++ b/drivers/platform/chrome/cros_ec_i2c.c | |||
@@ -9,8 +9,8 @@ | |||
9 | #include <linux/module.h> | 9 | #include <linux/module.h> |
10 | #include <linux/i2c.h> | 10 | #include <linux/i2c.h> |
11 | #include <linux/interrupt.h> | 11 | #include <linux/interrupt.h> |
12 | #include <linux/mfd/cros_ec.h> | 12 | #include <linux/platform_data/cros_ec_commands.h> |
13 | #include <linux/mfd/cros_ec_commands.h> | 13 | #include <linux/platform_data/cros_ec_proto.h> |
14 | #include <linux/platform_device.h> | 14 | #include <linux/platform_device.h> |
15 | #include <linux/slab.h> | 15 | #include <linux/slab.h> |
16 | 16 | ||
diff --git a/drivers/platform/chrome/cros_ec_ishtp.c b/drivers/platform/chrome/cros_ec_ishtp.c index e504d255d5ce..7d050db5b1ca 100644 --- a/drivers/platform/chrome/cros_ec_ishtp.c +++ b/drivers/platform/chrome/cros_ec_ishtp.c | |||
@@ -8,11 +8,10 @@ | |||
8 | // (ISH-TP). | 8 | // (ISH-TP). |
9 | 9 | ||
10 | #include <linux/delay.h> | 10 | #include <linux/delay.h> |
11 | #include <linux/mfd/core.h> | ||
12 | #include <linux/mfd/cros_ec.h> | ||
13 | #include <linux/mfd/cros_ec_commands.h> | ||
14 | #include <linux/module.h> | 11 | #include <linux/module.h> |
15 | #include <linux/pci.h> | 12 | #include <linux/pci.h> |
13 | #include <linux/platform_data/cros_ec_commands.h> | ||
14 | #include <linux/platform_data/cros_ec_proto.h> | ||
16 | #include <linux/intel-ish-client-if.h> | 15 | #include <linux/intel-ish-client-if.h> |
17 | 16 | ||
18 | /* | 17 | /* |
diff --git a/drivers/platform/chrome/cros_ec_lightbar.c b/drivers/platform/chrome/cros_ec_lightbar.c index 609598bbb6c3..c0f2eec35a48 100644 --- a/drivers/platform/chrome/cros_ec_lightbar.c +++ b/drivers/platform/chrome/cros_ec_lightbar.c | |||
@@ -9,8 +9,9 @@ | |||
9 | #include <linux/fs.h> | 9 | #include <linux/fs.h> |
10 | #include <linux/kobject.h> | 10 | #include <linux/kobject.h> |
11 | #include <linux/mfd/cros_ec.h> | 11 | #include <linux/mfd/cros_ec.h> |
12 | #include <linux/mfd/cros_ec_commands.h> | ||
13 | #include <linux/module.h> | 12 | #include <linux/module.h> |
13 | #include <linux/platform_data/cros_ec_commands.h> | ||
14 | #include <linux/platform_data/cros_ec_proto.h> | ||
14 | #include <linux/platform_device.h> | 15 | #include <linux/platform_device.h> |
15 | #include <linux/sched.h> | 16 | #include <linux/sched.h> |
16 | #include <linux/types.h> | 17 | #include <linux/types.h> |
diff --git a/drivers/platform/chrome/cros_ec_lpc.c b/drivers/platform/chrome/cros_ec_lpc.c index 5939c4a5869c..7d10d909435f 100644 --- a/drivers/platform/chrome/cros_ec_lpc.c +++ b/drivers/platform/chrome/cros_ec_lpc.c | |||
@@ -16,9 +16,9 @@ | |||
16 | #include <linux/delay.h> | 16 | #include <linux/delay.h> |
17 | #include <linux/io.h> | 17 | #include <linux/io.h> |
18 | #include <linux/interrupt.h> | 18 | #include <linux/interrupt.h> |
19 | #include <linux/mfd/cros_ec.h> | ||
20 | #include <linux/mfd/cros_ec_commands.h> | ||
21 | #include <linux/module.h> | 19 | #include <linux/module.h> |
20 | #include <linux/platform_data/cros_ec_commands.h> | ||
21 | #include <linux/platform_data/cros_ec_proto.h> | ||
22 | #include <linux/platform_device.h> | 22 | #include <linux/platform_device.h> |
23 | #include <linux/printk.h> | 23 | #include <linux/printk.h> |
24 | #include <linux/suspend.h> | 24 | #include <linux/suspend.h> |
diff --git a/drivers/platform/chrome/cros_ec_proto.c b/drivers/platform/chrome/cros_ec_proto.c index 3d2325197a68..f659f96bda12 100644 --- a/drivers/platform/chrome/cros_ec_proto.c +++ b/drivers/platform/chrome/cros_ec_proto.c | |||
@@ -3,10 +3,11 @@ | |||
3 | // | 3 | // |
4 | // Copyright (C) 2015 Google, Inc | 4 | // Copyright (C) 2015 Google, Inc |
5 | 5 | ||
6 | #include <linux/mfd/cros_ec.h> | ||
7 | #include <linux/delay.h> | 6 | #include <linux/delay.h> |
8 | #include <linux/device.h> | 7 | #include <linux/device.h> |
9 | #include <linux/module.h> | 8 | #include <linux/module.h> |
9 | #include <linux/platform_data/cros_ec_commands.h> | ||
10 | #include <linux/platform_data/cros_ec_proto.h> | ||
10 | #include <linux/slab.h> | 11 | #include <linux/slab.h> |
11 | #include <asm/unaligned.h> | 12 | #include <asm/unaligned.h> |
12 | 13 | ||
diff --git a/drivers/platform/chrome/cros_ec_rpmsg.c b/drivers/platform/chrome/cros_ec_rpmsg.c index 520e507bfa54..9633e5417686 100644 --- a/drivers/platform/chrome/cros_ec_rpmsg.c +++ b/drivers/platform/chrome/cros_ec_rpmsg.c | |||
@@ -6,9 +6,9 @@ | |||
6 | #include <linux/delay.h> | 6 | #include <linux/delay.h> |
7 | #include <linux/kernel.h> | 7 | #include <linux/kernel.h> |
8 | #include <linux/module.h> | 8 | #include <linux/module.h> |
9 | #include <linux/mfd/cros_ec.h> | ||
10 | #include <linux/mfd/cros_ec_commands.h> | ||
11 | #include <linux/of.h> | 9 | #include <linux/of.h> |
10 | #include <linux/platform_data/cros_ec_commands.h> | ||
11 | #include <linux/platform_data/cros_ec_proto.h> | ||
12 | #include <linux/platform_device.h> | 12 | #include <linux/platform_device.h> |
13 | #include <linux/rpmsg.h> | 13 | #include <linux/rpmsg.h> |
14 | #include <linux/slab.h> | 14 | #include <linux/slab.h> |
diff --git a/drivers/platform/chrome/cros_ec_spi.c b/drivers/platform/chrome/cros_ec_spi.c index 2e21f2776063..9006e1872942 100644 --- a/drivers/platform/chrome/cros_ec_spi.c +++ b/drivers/platform/chrome/cros_ec_spi.c | |||
@@ -6,9 +6,9 @@ | |||
6 | #include <linux/delay.h> | 6 | #include <linux/delay.h> |
7 | #include <linux/kernel.h> | 7 | #include <linux/kernel.h> |
8 | #include <linux/module.h> | 8 | #include <linux/module.h> |
9 | #include <linux/mfd/cros_ec.h> | ||
10 | #include <linux/mfd/cros_ec_commands.h> | ||
11 | #include <linux/of.h> | 9 | #include <linux/of.h> |
10 | #include <linux/platform_data/cros_ec_commands.h> | ||
11 | #include <linux/platform_data/cros_ec_proto.h> | ||
12 | #include <linux/platform_device.h> | 12 | #include <linux/platform_device.h> |
13 | #include <linux/slab.h> | 13 | #include <linux/slab.h> |
14 | #include <linux/spi/spi.h> | 14 | #include <linux/spi/spi.h> |
diff --git a/drivers/platform/chrome/cros_ec_sysfs.c b/drivers/platform/chrome/cros_ec_sysfs.c index 3edb237bf8ed..74d36b8d4f46 100644 --- a/drivers/platform/chrome/cros_ec_sysfs.c +++ b/drivers/platform/chrome/cros_ec_sysfs.c | |||
@@ -9,8 +9,9 @@ | |||
9 | #include <linux/fs.h> | 9 | #include <linux/fs.h> |
10 | #include <linux/kobject.h> | 10 | #include <linux/kobject.h> |
11 | #include <linux/mfd/cros_ec.h> | 11 | #include <linux/mfd/cros_ec.h> |
12 | #include <linux/mfd/cros_ec_commands.h> | ||
13 | #include <linux/module.h> | 12 | #include <linux/module.h> |
13 | #include <linux/platform_data/cros_ec_commands.h> | ||
14 | #include <linux/platform_data/cros_ec_proto.h> | ||
14 | #include <linux/platform_device.h> | 15 | #include <linux/platform_device.h> |
15 | #include <linux/printk.h> | 16 | #include <linux/printk.h> |
16 | #include <linux/slab.h> | 17 | #include <linux/slab.h> |
diff --git a/drivers/platform/chrome/cros_ec_trace.c b/drivers/platform/chrome/cros_ec_trace.c index 0a76412095a9..6f80ff4532ae 100644 --- a/drivers/platform/chrome/cros_ec_trace.c +++ b/drivers/platform/chrome/cros_ec_trace.c | |||
@@ -6,7 +6,7 @@ | |||
6 | #define TRACE_SYMBOL(a) {a, #a} | 6 | #define TRACE_SYMBOL(a) {a, #a} |
7 | 7 | ||
8 | // Generate the list using the following script: | 8 | // Generate the list using the following script: |
9 | // sed -n 's/^#define \(EC_CMD_[[:alnum:]_]*\)\s.*/\tTRACE_SYMBOL(\1), \\/p' include/linux/mfd/cros_ec_commands.h | 9 | // sed -n 's/^#define \(EC_CMD_[[:alnum:]_]*\)\s.*/\tTRACE_SYMBOL(\1), \\/p' include/linux/platform_data/cros_ec_commands.h |
10 | #define EC_CMDS \ | 10 | #define EC_CMDS \ |
11 | TRACE_SYMBOL(EC_CMD_PROTO_VERSION), \ | 11 | TRACE_SYMBOL(EC_CMD_PROTO_VERSION), \ |
12 | TRACE_SYMBOL(EC_CMD_HELLO), \ | 12 | TRACE_SYMBOL(EC_CMD_HELLO), \ |
diff --git a/drivers/platform/chrome/cros_ec_trace.h b/drivers/platform/chrome/cros_ec_trace.h index 7ae3b89c78b9..0dd4df30fa89 100644 --- a/drivers/platform/chrome/cros_ec_trace.h +++ b/drivers/platform/chrome/cros_ec_trace.h | |||
@@ -11,8 +11,10 @@ | |||
11 | #if !defined(_CROS_EC_TRACE_H_) || defined(TRACE_HEADER_MULTI_READ) | 11 | #if !defined(_CROS_EC_TRACE_H_) || defined(TRACE_HEADER_MULTI_READ) |
12 | #define _CROS_EC_TRACE_H_ | 12 | #define _CROS_EC_TRACE_H_ |
13 | 13 | ||
14 | #include <linux/bits.h> | ||
14 | #include <linux/types.h> | 15 | #include <linux/types.h> |
15 | #include <linux/mfd/cros_ec.h> | 16 | #include <linux/platform_data/cros_ec_commands.h> |
17 | #include <linux/platform_data/cros_ec_proto.h> | ||
16 | 18 | ||
17 | #include <linux/tracepoint.h> | 19 | #include <linux/tracepoint.h> |
18 | 20 | ||
diff --git a/drivers/platform/chrome/cros_ec_vbc.c b/drivers/platform/chrome/cros_ec_vbc.c index 2aaefed87eb4..f11a1283e5c8 100644 --- a/drivers/platform/chrome/cros_ec_vbc.c +++ b/drivers/platform/chrome/cros_ec_vbc.c | |||
@@ -7,8 +7,9 @@ | |||
7 | #include <linux/of.h> | 7 | #include <linux/of.h> |
8 | #include <linux/platform_device.h> | 8 | #include <linux/platform_device.h> |
9 | #include <linux/mfd/cros_ec.h> | 9 | #include <linux/mfd/cros_ec.h> |
10 | #include <linux/mfd/cros_ec_commands.h> | ||
11 | #include <linux/module.h> | 10 | #include <linux/module.h> |
11 | #include <linux/platform_data/cros_ec_commands.h> | ||
12 | #include <linux/platform_data/cros_ec_proto.h> | ||
12 | #include <linux/slab.h> | 13 | #include <linux/slab.h> |
13 | 14 | ||
14 | #define DRV_NAME "cros-ec-vbc" | 15 | #define DRV_NAME "cros-ec-vbc" |
diff --git a/drivers/platform/chrome/cros_usbpd_logger.c b/drivers/platform/chrome/cros_usbpd_logger.c index 7c7b267626a0..c549a9b49b56 100644 --- a/drivers/platform/chrome/cros_usbpd_logger.c +++ b/drivers/platform/chrome/cros_usbpd_logger.c | |||
@@ -6,10 +6,11 @@ | |||
6 | */ | 6 | */ |
7 | 7 | ||
8 | #include <linux/ktime.h> | 8 | #include <linux/ktime.h> |
9 | #include <linux/math64.h> | ||
10 | #include <linux/mfd/cros_ec.h> | 9 | #include <linux/mfd/cros_ec.h> |
11 | #include <linux/mfd/cros_ec_commands.h> | 10 | #include <linux/math64.h> |
12 | #include <linux/module.h> | 11 | #include <linux/module.h> |
12 | #include <linux/platform_data/cros_ec_commands.h> | ||
13 | #include <linux/platform_data/cros_ec_proto.h> | ||
13 | #include <linux/platform_device.h> | 14 | #include <linux/platform_device.h> |
14 | #include <linux/rtc.h> | 15 | #include <linux/rtc.h> |
15 | 16 | ||
diff --git a/drivers/power/supply/cros_usbpd-charger.c b/drivers/power/supply/cros_usbpd-charger.c index 3a9ea94c3de3..6cc7c3910e09 100644 --- a/drivers/power/supply/cros_usbpd-charger.c +++ b/drivers/power/supply/cros_usbpd-charger.c | |||
@@ -5,9 +5,10 @@ | |||
5 | * Copyright (c) 2014 - 2018 Google, Inc | 5 | * Copyright (c) 2014 - 2018 Google, Inc |
6 | */ | 6 | */ |
7 | 7 | ||
8 | #include <linux/module.h> | ||
9 | #include <linux/mfd/cros_ec.h> | 8 | #include <linux/mfd/cros_ec.h> |
10 | #include <linux/mfd/cros_ec_commands.h> | 9 | #include <linux/module.h> |
10 | #include <linux/platform_data/cros_ec_commands.h> | ||
11 | #include <linux/platform_data/cros_ec_proto.h> | ||
11 | #include <linux/platform_device.h> | 12 | #include <linux/platform_device.h> |
12 | #include <linux/power_supply.h> | 13 | #include <linux/power_supply.h> |
13 | #include <linux/slab.h> | 14 | #include <linux/slab.h> |
diff --git a/drivers/pwm/pwm-cros-ec.c b/drivers/pwm/pwm-cros-ec.c index 98f6ac6cf6ab..85bea2d40b7d 100644 --- a/drivers/pwm/pwm-cros-ec.c +++ b/drivers/pwm/pwm-cros-ec.c | |||
@@ -6,8 +6,8 @@ | |||
6 | */ | 6 | */ |
7 | 7 | ||
8 | #include <linux/module.h> | 8 | #include <linux/module.h> |
9 | #include <linux/mfd/cros_ec.h> | 9 | #include <linux/platform_data/cros_ec_commands.h> |
10 | #include <linux/mfd/cros_ec_commands.h> | 10 | #include <linux/platform_data/cros_ec_proto.h> |
11 | #include <linux/platform_device.h> | 11 | #include <linux/platform_device.h> |
12 | #include <linux/pwm.h> | 12 | #include <linux/pwm.h> |
13 | #include <linux/slab.h> | 13 | #include <linux/slab.h> |
diff --git a/drivers/rtc/rtc-cros-ec.c b/drivers/rtc/rtc-cros-ec.c index 4d6bf9304ceb..6909e01936d9 100644 --- a/drivers/rtc/rtc-cros-ec.c +++ b/drivers/rtc/rtc-cros-ec.c | |||
@@ -6,8 +6,9 @@ | |||
6 | 6 | ||
7 | #include <linux/kernel.h> | 7 | #include <linux/kernel.h> |
8 | #include <linux/mfd/cros_ec.h> | 8 | #include <linux/mfd/cros_ec.h> |
9 | #include <linux/mfd/cros_ec_commands.h> | ||
10 | #include <linux/module.h> | 9 | #include <linux/module.h> |
10 | #include <linux/platform_data/cros_ec_commands.h> | ||
11 | #include <linux/platform_data/cros_ec_proto.h> | ||
11 | #include <linux/platform_device.h> | 12 | #include <linux/platform_device.h> |
12 | #include <linux/rtc.h> | 13 | #include <linux/rtc.h> |
13 | #include <linux/slab.h> | 14 | #include <linux/slab.h> |
diff --git a/include/Kbuild b/include/Kbuild index c38f0d46b267..b30824615814 100644 --- a/include/Kbuild +++ b/include/Kbuild | |||
@@ -310,7 +310,6 @@ header-test- += linux/mfd/adp5520.h | |||
310 | header-test- += linux/mfd/arizona/pdata.h | 310 | header-test- += linux/mfd/arizona/pdata.h |
311 | header-test- += linux/mfd/as3711.h | 311 | header-test- += linux/mfd/as3711.h |
312 | header-test- += linux/mfd/as3722.h | 312 | header-test- += linux/mfd/as3722.h |
313 | header-test- += linux/mfd/cros_ec_commands.h | ||
314 | header-test- += linux/mfd/da903x.h | 313 | header-test- += linux/mfd/da903x.h |
315 | header-test- += linux/mfd/da9055/pdata.h | 314 | header-test- += linux/mfd/da9055/pdata.h |
316 | header-test- += linux/mfd/da9063/pdata.h | 315 | header-test- += linux/mfd/da9063/pdata.h |
@@ -480,6 +479,7 @@ header-test- += linux/platform_data/ata-pxa.h | |||
480 | header-test- += linux/platform_data/atmel.h | 479 | header-test- += linux/platform_data/atmel.h |
481 | header-test- += linux/platform_data/bh1770glc.h | 480 | header-test- += linux/platform_data/bh1770glc.h |
482 | header-test- += linux/platform_data/brcmfmac.h | 481 | header-test- += linux/platform_data/brcmfmac.h |
482 | header-test- += linux/platform_data/cros_ec_commands.h | ||
483 | header-test- += linux/platform_data/clk-u300.h | 483 | header-test- += linux/platform_data/clk-u300.h |
484 | header-test- += linux/platform_data/cyttsp4.h | 484 | header-test- += linux/platform_data/cyttsp4.h |
485 | header-test- += linux/platform_data/dma-coh901318.h | 485 | header-test- += linux/platform_data/dma-coh901318.h |
diff --git a/include/linux/iio/common/cros_ec_sensors_core.h b/include/linux/iio/common/cros_ec_sensors_core.h index 0c636b9fe8d7..77a7d65746b6 100644 --- a/include/linux/iio/common/cros_ec_sensors_core.h +++ b/include/linux/iio/common/cros_ec_sensors_core.h | |||
@@ -10,7 +10,8 @@ | |||
10 | 10 | ||
11 | #include <linux/iio/iio.h> | 11 | #include <linux/iio/iio.h> |
12 | #include <linux/irqreturn.h> | 12 | #include <linux/irqreturn.h> |
13 | #include <linux/mfd/cros_ec.h> | 13 | #include <linux/platform_data/cros_ec_commands.h> |
14 | #include <linux/platform_data/cros_ec_proto.h> | ||
14 | 15 | ||
15 | enum { | 16 | enum { |
16 | CROS_EC_SENSOR_X, | 17 | CROS_EC_SENSOR_X, |
diff --git a/include/linux/mfd/cros_ec.h b/include/linux/mfd/cros_ec.h index 569428ad1cb1..61c2875c2a40 100644 --- a/include/linux/mfd/cros_ec.h +++ b/include/linux/mfd/cros_ec.h | |||
@@ -8,186 +8,7 @@ | |||
8 | #ifndef __LINUX_MFD_CROS_EC_H | 8 | #ifndef __LINUX_MFD_CROS_EC_H |
9 | #define __LINUX_MFD_CROS_EC_H | 9 | #define __LINUX_MFD_CROS_EC_H |
10 | 10 | ||
11 | #include <linux/cdev.h> | ||
12 | #include <linux/device.h> | 11 | #include <linux/device.h> |
13 | #include <linux/notifier.h> | ||
14 | #include <linux/mfd/cros_ec_commands.h> | ||
15 | #include <linux/mutex.h> | ||
16 | |||
17 | #define CROS_EC_DEV_NAME "cros_ec" | ||
18 | #define CROS_EC_DEV_FP_NAME "cros_fp" | ||
19 | #define CROS_EC_DEV_PD_NAME "cros_pd" | ||
20 | #define CROS_EC_DEV_TP_NAME "cros_tp" | ||
21 | #define CROS_EC_DEV_ISH_NAME "cros_ish" | ||
22 | #define CROS_EC_DEV_SCP_NAME "cros_scp" | ||
23 | |||
24 | /* | ||
25 | * The EC is unresponsive for a time after a reboot command. Add a | ||
26 | * simple delay to make sure that the bus stays locked. | ||
27 | */ | ||
28 | #define EC_REBOOT_DELAY_MS 50 | ||
29 | |||
30 | /* | ||
31 | * Max bus-specific overhead incurred by request/responses. | ||
32 | * I2C requires 1 additional byte for requests. | ||
33 | * I2C requires 2 additional bytes for responses. | ||
34 | * SPI requires up to 32 additional bytes for responses. | ||
35 | */ | ||
36 | #define EC_PROTO_VERSION_UNKNOWN 0 | ||
37 | #define EC_MAX_REQUEST_OVERHEAD 1 | ||
38 | #define EC_MAX_RESPONSE_OVERHEAD 32 | ||
39 | |||
40 | /* | ||
41 | * Command interface between EC and AP, for LPC, I2C and SPI interfaces. | ||
42 | */ | ||
43 | enum { | ||
44 | EC_MSG_TX_HEADER_BYTES = 3, | ||
45 | EC_MSG_TX_TRAILER_BYTES = 1, | ||
46 | EC_MSG_TX_PROTO_BYTES = EC_MSG_TX_HEADER_BYTES + | ||
47 | EC_MSG_TX_TRAILER_BYTES, | ||
48 | EC_MSG_RX_PROTO_BYTES = 3, | ||
49 | |||
50 | /* Max length of messages for proto 2*/ | ||
51 | EC_PROTO2_MSG_BYTES = EC_PROTO2_MAX_PARAM_SIZE + | ||
52 | EC_MSG_TX_PROTO_BYTES, | ||
53 | |||
54 | EC_MAX_MSG_BYTES = 64 * 1024, | ||
55 | }; | ||
56 | |||
57 | /** | ||
58 | * struct cros_ec_command - Information about a ChromeOS EC command. | ||
59 | * @version: Command version number (often 0). | ||
60 | * @command: Command to send (EC_CMD_...). | ||
61 | * @outsize: Outgoing length in bytes. | ||
62 | * @insize: Max number of bytes to accept from the EC. | ||
63 | * @result: EC's response to the command (separate from communication failure). | ||
64 | * @data: Where to put the incoming data from EC and outgoing data to EC. | ||
65 | */ | ||
66 | struct cros_ec_command { | ||
67 | uint32_t version; | ||
68 | uint32_t command; | ||
69 | uint32_t outsize; | ||
70 | uint32_t insize; | ||
71 | uint32_t result; | ||
72 | uint8_t data[0]; | ||
73 | }; | ||
74 | |||
75 | /** | ||
76 | * struct cros_ec_device - Information about a ChromeOS EC device. | ||
77 | * @phys_name: Name of physical comms layer (e.g. 'i2c-4'). | ||
78 | * @dev: Device pointer for physical comms device | ||
79 | * @was_wake_device: True if this device was set to wake the system from | ||
80 | * sleep at the last suspend. | ||
81 | * @cros_class: The class structure for this device. | ||
82 | * @cmd_readmem: Direct read of the EC memory-mapped region, if supported. | ||
83 | * @offset: Is within EC_LPC_ADDR_MEMMAP region. | ||
84 | * @bytes: Number of bytes to read. zero means "read a string" (including | ||
85 | * the trailing '\0'). At most only EC_MEMMAP_SIZE bytes can be | ||
86 | * read. Caller must ensure that the buffer is large enough for the | ||
87 | * result when reading a string. | ||
88 | * @max_request: Max size of message requested. | ||
89 | * @max_response: Max size of message response. | ||
90 | * @max_passthru: Max sice of passthru message. | ||
91 | * @proto_version: The protocol version used for this device. | ||
92 | * @priv: Private data. | ||
93 | * @irq: Interrupt to use. | ||
94 | * @id: Device id. | ||
95 | * @din: Input buffer (for data from EC). This buffer will always be | ||
96 | * dword-aligned and include enough space for up to 7 word-alignment | ||
97 | * bytes also, so we can ensure that the body of the message is always | ||
98 | * dword-aligned (64-bit). We use this alignment to keep ARM and x86 | ||
99 | * happy. Probably word alignment would be OK, there might be a small | ||
100 | * performance advantage to using dword. | ||
101 | * @dout: Output buffer (for data to EC). This buffer will always be | ||
102 | * dword-aligned and include enough space for up to 7 word-alignment | ||
103 | * bytes also, so we can ensure that the body of the message is always | ||
104 | * dword-aligned (64-bit). We use this alignment to keep ARM and x86 | ||
105 | * happy. Probably word alignment would be OK, there might be a small | ||
106 | * performance advantage to using dword. | ||
107 | * @din_size: Size of din buffer to allocate (zero to use static din). | ||
108 | * @dout_size: Size of dout buffer to allocate (zero to use static dout). | ||
109 | * @wake_enabled: True if this device can wake the system from sleep. | ||
110 | * @suspended: True if this device had been suspended. | ||
111 | * @cmd_xfer: Send command to EC and get response. | ||
112 | * Returns the number of bytes received if the communication | ||
113 | * succeeded, but that doesn't mean the EC was happy with the | ||
114 | * command. The caller should check msg.result for the EC's result | ||
115 | * code. | ||
116 | * @pkt_xfer: Send packet to EC and get response. | ||
117 | * @lock: One transaction at a time. | ||
118 | * @mkbp_event_supported: True if this EC supports the MKBP event protocol. | ||
119 | * @host_sleep_v1: True if this EC supports the sleep v1 command. | ||
120 | * @event_notifier: Interrupt event notifier for transport devices. | ||
121 | * @event_data: Raw payload transferred with the MKBP event. | ||
122 | * @event_size: Size in bytes of the event data. | ||
123 | * @host_event_wake_mask: Mask of host events that cause wake from suspend. | ||
124 | * @ec: The platform_device used by the mfd driver to interface with the | ||
125 | * main EC. | ||
126 | * @pd: The platform_device used by the mfd driver to interface with the | ||
127 | * PD behind an EC. | ||
128 | */ | ||
129 | struct cros_ec_device { | ||
130 | /* These are used by other drivers that want to talk to the EC */ | ||
131 | const char *phys_name; | ||
132 | struct device *dev; | ||
133 | bool was_wake_device; | ||
134 | struct class *cros_class; | ||
135 | int (*cmd_readmem)(struct cros_ec_device *ec, unsigned int offset, | ||
136 | unsigned int bytes, void *dest); | ||
137 | |||
138 | /* These are used to implement the platform-specific interface */ | ||
139 | u16 max_request; | ||
140 | u16 max_response; | ||
141 | u16 max_passthru; | ||
142 | u16 proto_version; | ||
143 | void *priv; | ||
144 | int irq; | ||
145 | u8 *din; | ||
146 | u8 *dout; | ||
147 | int din_size; | ||
148 | int dout_size; | ||
149 | bool wake_enabled; | ||
150 | bool suspended; | ||
151 | int (*cmd_xfer)(struct cros_ec_device *ec, | ||
152 | struct cros_ec_command *msg); | ||
153 | int (*pkt_xfer)(struct cros_ec_device *ec, | ||
154 | struct cros_ec_command *msg); | ||
155 | struct mutex lock; | ||
156 | bool mkbp_event_supported; | ||
157 | bool host_sleep_v1; | ||
158 | struct blocking_notifier_head event_notifier; | ||
159 | |||
160 | struct ec_response_get_next_event_v1 event_data; | ||
161 | int event_size; | ||
162 | u32 host_event_wake_mask; | ||
163 | u32 last_resume_result; | ||
164 | |||
165 | /* The platform devices used by the mfd driver */ | ||
166 | struct platform_device *ec; | ||
167 | struct platform_device *pd; | ||
168 | }; | ||
169 | |||
170 | /** | ||
171 | * struct cros_ec_sensor_platform - ChromeOS EC sensor platform information. | ||
172 | * @sensor_num: Id of the sensor, as reported by the EC. | ||
173 | */ | ||
174 | struct cros_ec_sensor_platform { | ||
175 | u8 sensor_num; | ||
176 | }; | ||
177 | |||
178 | /** | ||
179 | * struct cros_ec_platform - ChromeOS EC platform information. | ||
180 | * @ec_name: Name of EC device (e.g. 'cros-ec', 'cros-pd', ...) | ||
181 | * used in /dev/ and sysfs. | ||
182 | * @cmd_offset: Offset to apply for each command. Set when | ||
183 | * registering a device behind another one. | ||
184 | */ | ||
185 | struct cros_ec_platform { | ||
186 | const char *ec_name; | ||
187 | u16 cmd_offset; | ||
188 | }; | ||
189 | |||
190 | struct cros_ec_debugfs; | ||
191 | 12 | ||
192 | /** | 13 | /** |
193 | * struct cros_ec_dev - ChromeOS EC device entry point. | 14 | * struct cros_ec_dev - ChromeOS EC device entry point. |
@@ -211,133 +32,4 @@ struct cros_ec_dev { | |||
211 | 32 | ||
212 | #define to_cros_ec_dev(dev) container_of(dev, struct cros_ec_dev, class_dev) | 33 | #define to_cros_ec_dev(dev) container_of(dev, struct cros_ec_dev, class_dev) |
213 | 34 | ||
214 | /** | ||
215 | * cros_ec_suspend() - Handle a suspend operation for the ChromeOS EC device. | ||
216 | * @ec_dev: Device to suspend. | ||
217 | * | ||
218 | * This can be called by drivers to handle a suspend event. | ||
219 | * | ||
220 | * Return: 0 on success or negative error code. | ||
221 | */ | ||
222 | int cros_ec_suspend(struct cros_ec_device *ec_dev); | ||
223 | |||
224 | /** | ||
225 | * cros_ec_resume() - Handle a resume operation for the ChromeOS EC device. | ||
226 | * @ec_dev: Device to resume. | ||
227 | * | ||
228 | * This can be called by drivers to handle a resume event. | ||
229 | * | ||
230 | * Return: 0 on success or negative error code. | ||
231 | */ | ||
232 | int cros_ec_resume(struct cros_ec_device *ec_dev); | ||
233 | |||
234 | /** | ||
235 | * cros_ec_prepare_tx() - Prepare an outgoing message in the output buffer. | ||
236 | * @ec_dev: Device to register. | ||
237 | * @msg: Message to write. | ||
238 | * | ||
239 | * This is intended to be used by all ChromeOS EC drivers, but at present | ||
240 | * only SPI uses it. Once LPC uses the same protocol it can start using it. | ||
241 | * I2C could use it now, with a refactor of the existing code. | ||
242 | * | ||
243 | * Return: 0 on success or negative error code. | ||
244 | */ | ||
245 | int cros_ec_prepare_tx(struct cros_ec_device *ec_dev, | ||
246 | struct cros_ec_command *msg); | ||
247 | |||
248 | /** | ||
249 | * cros_ec_check_result() - Check ec_msg->result. | ||
250 | * @ec_dev: EC device. | ||
251 | * @msg: Message to check. | ||
252 | * | ||
253 | * This is used by ChromeOS EC drivers to check the ec_msg->result for | ||
254 | * errors and to warn about them. | ||
255 | * | ||
256 | * Return: 0 on success or negative error code. | ||
257 | */ | ||
258 | int cros_ec_check_result(struct cros_ec_device *ec_dev, | ||
259 | struct cros_ec_command *msg); | ||
260 | |||
261 | /** | ||
262 | * cros_ec_cmd_xfer() - Send a command to the ChromeOS EC. | ||
263 | * @ec_dev: EC device. | ||
264 | * @msg: Message to write. | ||
265 | * | ||
266 | * Call this to send a command to the ChromeOS EC. This should be used | ||
267 | * instead of calling the EC's cmd_xfer() callback directly. | ||
268 | * | ||
269 | * Return: 0 on success or negative error code. | ||
270 | */ | ||
271 | int cros_ec_cmd_xfer(struct cros_ec_device *ec_dev, | ||
272 | struct cros_ec_command *msg); | ||
273 | |||
274 | /** | ||
275 | * cros_ec_cmd_xfer_status() - Send a command to the ChromeOS EC. | ||
276 | * @ec_dev: EC device. | ||
277 | * @msg: Message to write. | ||
278 | * | ||
279 | * This function is identical to cros_ec_cmd_xfer, except it returns success | ||
280 | * status only if both the command was transmitted successfully and the EC | ||
281 | * replied with success status. It's not necessary to check msg->result when | ||
282 | * using this function. | ||
283 | * | ||
284 | * Return: The number of bytes transferred on success or negative error code. | ||
285 | */ | ||
286 | int cros_ec_cmd_xfer_status(struct cros_ec_device *ec_dev, | ||
287 | struct cros_ec_command *msg); | ||
288 | |||
289 | /** | ||
290 | * cros_ec_register() - Register a new ChromeOS EC, using the provided info. | ||
291 | * @ec_dev: Device to register. | ||
292 | * | ||
293 | * Before calling this, allocate a pointer to a new device and then fill | ||
294 | * in all the fields up to the --private-- marker. | ||
295 | * | ||
296 | * Return: 0 on success or negative error code. | ||
297 | */ | ||
298 | int cros_ec_register(struct cros_ec_device *ec_dev); | ||
299 | |||
300 | /** | ||
301 | * cros_ec_unregister() - Remove a ChromeOS EC. | ||
302 | * @ec_dev: Device to unregister. | ||
303 | * | ||
304 | * Call this to deregister a ChromeOS EC, then clean up any private data. | ||
305 | * | ||
306 | * Return: 0 on success or negative error code. | ||
307 | */ | ||
308 | int cros_ec_unregister(struct cros_ec_device *ec_dev); | ||
309 | |||
310 | /** | ||
311 | * cros_ec_query_all() - Query the protocol version supported by the | ||
312 | * ChromeOS EC. | ||
313 | * @ec_dev: Device to register. | ||
314 | * | ||
315 | * Return: 0 on success or negative error code. | ||
316 | */ | ||
317 | int cros_ec_query_all(struct cros_ec_device *ec_dev); | ||
318 | |||
319 | /** | ||
320 | * cros_ec_get_next_event() - Fetch next event from the ChromeOS EC. | ||
321 | * @ec_dev: Device to fetch event from. | ||
322 | * @wake_event: Pointer to a bool set to true upon return if the event might be | ||
323 | * treated as a wake event. Ignored if null. | ||
324 | * | ||
325 | * Return: negative error code on errors; 0 for no data; or else number of | ||
326 | * bytes received (i.e., an event was retrieved successfully). Event types are | ||
327 | * written out to @ec_dev->event_data.event_type on success. | ||
328 | */ | ||
329 | int cros_ec_get_next_event(struct cros_ec_device *ec_dev, bool *wake_event); | ||
330 | |||
331 | /** | ||
332 | * cros_ec_get_host_event() - Return a mask of event set by the ChromeOS EC. | ||
333 | * @ec_dev: Device to fetch event from. | ||
334 | * | ||
335 | * When MKBP is supported, when the EC raises an interrupt, we collect the | ||
336 | * events raised and call the functions in the ec notifier. This function | ||
337 | * is a helper to know which events are raised. | ||
338 | * | ||
339 | * Return: 0 on error or non-zero bitmask of one or more EC_HOST_EVENT_*. | ||
340 | */ | ||
341 | u32 cros_ec_get_host_event(struct cros_ec_device *ec_dev); | ||
342 | |||
343 | #endif /* __LINUX_MFD_CROS_EC_H */ | 35 | #endif /* __LINUX_MFD_CROS_EC_H */ |
diff --git a/include/linux/platform_data/cros_ec_chardev.h b/include/linux/platform_data/cros_ec_chardev.h index 6600b54f531c..973b2615aa02 100644 --- a/include/linux/platform_data/cros_ec_chardev.h +++ b/include/linux/platform_data/cros_ec_chardev.h | |||
@@ -12,7 +12,7 @@ | |||
12 | #include <linux/ioctl.h> | 12 | #include <linux/ioctl.h> |
13 | #include <linux/types.h> | 13 | #include <linux/types.h> |
14 | 14 | ||
15 | #include <linux/mfd/cros_ec.h> | 15 | #include <linux/platform_data/cros_ec_commands.h> |
16 | 16 | ||
17 | #define CROS_EC_DEV_VERSION "1.0.0" | 17 | #define CROS_EC_DEV_VERSION "1.0.0" |
18 | 18 | ||
diff --git a/include/linux/mfd/cros_ec_commands.h b/include/linux/platform_data/cros_ec_commands.h index 7ccb8757b79d..7ccb8757b79d 100644 --- a/include/linux/mfd/cros_ec_commands.h +++ b/include/linux/platform_data/cros_ec_commands.h | |||
diff --git a/include/linux/platform_data/cros_ec_proto.h b/include/linux/platform_data/cros_ec_proto.h new file mode 100644 index 000000000000..eab7036cda09 --- /dev/null +++ b/include/linux/platform_data/cros_ec_proto.h | |||
@@ -0,0 +1,319 @@ | |||
1 | /* SPDX-License-Identifier: GPL-2.0 */ | ||
2 | /* | ||
3 | * ChromeOS Embedded Controller protocol interface. | ||
4 | * | ||
5 | * Copyright (C) 2012 Google, Inc | ||
6 | */ | ||
7 | |||
8 | #ifndef __LINUX_CROS_EC_PROTO_H | ||
9 | #define __LINUX_CROS_EC_PROTO_H | ||
10 | |||
11 | #include <linux/device.h> | ||
12 | #include <linux/mutex.h> | ||
13 | #include <linux/notifier.h> | ||
14 | |||
15 | #include <linux/platform_data/cros_ec_commands.h> | ||
16 | |||
17 | #define CROS_EC_DEV_NAME "cros_ec" | ||
18 | #define CROS_EC_DEV_FP_NAME "cros_fp" | ||
19 | #define CROS_EC_DEV_ISH_NAME "cros_ish" | ||
20 | #define CROS_EC_DEV_PD_NAME "cros_pd" | ||
21 | #define CROS_EC_DEV_SCP_NAME "cros_scp" | ||
22 | #define CROS_EC_DEV_TP_NAME "cros_tp" | ||
23 | |||
24 | /* | ||
25 | * The EC is unresponsive for a time after a reboot command. Add a | ||
26 | * simple delay to make sure that the bus stays locked. | ||
27 | */ | ||
28 | #define EC_REBOOT_DELAY_MS 50 | ||
29 | |||
30 | /* | ||
31 | * Max bus-specific overhead incurred by request/responses. | ||
32 | * I2C requires 1 additional byte for requests. | ||
33 | * I2C requires 2 additional bytes for responses. | ||
34 | * SPI requires up to 32 additional bytes for responses. | ||
35 | */ | ||
36 | #define EC_PROTO_VERSION_UNKNOWN 0 | ||
37 | #define EC_MAX_REQUEST_OVERHEAD 1 | ||
38 | #define EC_MAX_RESPONSE_OVERHEAD 32 | ||
39 | |||
40 | /* | ||
41 | * Command interface between EC and AP, for LPC, I2C and SPI interfaces. | ||
42 | */ | ||
43 | enum { | ||
44 | EC_MSG_TX_HEADER_BYTES = 3, | ||
45 | EC_MSG_TX_TRAILER_BYTES = 1, | ||
46 | EC_MSG_TX_PROTO_BYTES = EC_MSG_TX_HEADER_BYTES + | ||
47 | EC_MSG_TX_TRAILER_BYTES, | ||
48 | EC_MSG_RX_PROTO_BYTES = 3, | ||
49 | |||
50 | /* Max length of messages for proto 2*/ | ||
51 | EC_PROTO2_MSG_BYTES = EC_PROTO2_MAX_PARAM_SIZE + | ||
52 | EC_MSG_TX_PROTO_BYTES, | ||
53 | |||
54 | EC_MAX_MSG_BYTES = 64 * 1024, | ||
55 | }; | ||
56 | |||
57 | /** | ||
58 | * struct cros_ec_command - Information about a ChromeOS EC command. | ||
59 | * @version: Command version number (often 0). | ||
60 | * @command: Command to send (EC_CMD_...). | ||
61 | * @outsize: Outgoing length in bytes. | ||
62 | * @insize: Max number of bytes to accept from the EC. | ||
63 | * @result: EC's response to the command (separate from communication failure). | ||
64 | * @data: Where to put the incoming data from EC and outgoing data to EC. | ||
65 | */ | ||
66 | struct cros_ec_command { | ||
67 | uint32_t version; | ||
68 | uint32_t command; | ||
69 | uint32_t outsize; | ||
70 | uint32_t insize; | ||
71 | uint32_t result; | ||
72 | uint8_t data[0]; | ||
73 | }; | ||
74 | |||
75 | /** | ||
76 | * struct cros_ec_device - Information about a ChromeOS EC device. | ||
77 | * @phys_name: Name of physical comms layer (e.g. 'i2c-4'). | ||
78 | * @dev: Device pointer for physical comms device | ||
79 | * @was_wake_device: True if this device was set to wake the system from | ||
80 | * sleep at the last suspend. | ||
81 | * @cros_class: The class structure for this device. | ||
82 | * @cmd_readmem: Direct read of the EC memory-mapped region, if supported. | ||
83 | * @offset: Is within EC_LPC_ADDR_MEMMAP region. | ||
84 | * @bytes: Number of bytes to read. zero means "read a string" (including | ||
85 | * the trailing '\0'). At most only EC_MEMMAP_SIZE bytes can be | ||
86 | * read. Caller must ensure that the buffer is large enough for the | ||
87 | * result when reading a string. | ||
88 | * @max_request: Max size of message requested. | ||
89 | * @max_response: Max size of message response. | ||
90 | * @max_passthru: Max sice of passthru message. | ||
91 | * @proto_version: The protocol version used for this device. | ||
92 | * @priv: Private data. | ||
93 | * @irq: Interrupt to use. | ||
94 | * @id: Device id. | ||
95 | * @din: Input buffer (for data from EC). This buffer will always be | ||
96 | * dword-aligned and include enough space for up to 7 word-alignment | ||
97 | * bytes also, so we can ensure that the body of the message is always | ||
98 | * dword-aligned (64-bit). We use this alignment to keep ARM and x86 | ||
99 | * happy. Probably word alignment would be OK, there might be a small | ||
100 | * performance advantage to using dword. | ||
101 | * @dout: Output buffer (for data to EC). This buffer will always be | ||
102 | * dword-aligned and include enough space for up to 7 word-alignment | ||
103 | * bytes also, so we can ensure that the body of the message is always | ||
104 | * dword-aligned (64-bit). We use this alignment to keep ARM and x86 | ||
105 | * happy. Probably word alignment would be OK, there might be a small | ||
106 | * performance advantage to using dword. | ||
107 | * @din_size: Size of din buffer to allocate (zero to use static din). | ||
108 | * @dout_size: Size of dout buffer to allocate (zero to use static dout). | ||
109 | * @wake_enabled: True if this device can wake the system from sleep. | ||
110 | * @suspended: True if this device had been suspended. | ||
111 | * @cmd_xfer: Send command to EC and get response. | ||
112 | * Returns the number of bytes received if the communication | ||
113 | * succeeded, but that doesn't mean the EC was happy with the | ||
114 | * command. The caller should check msg.result for the EC's result | ||
115 | * code. | ||
116 | * @pkt_xfer: Send packet to EC and get response. | ||
117 | * @lock: One transaction at a time. | ||
118 | * @mkbp_event_supported: True if this EC supports the MKBP event protocol. | ||
119 | * @host_sleep_v1: True if this EC supports the sleep v1 command. | ||
120 | * @event_notifier: Interrupt event notifier for transport devices. | ||
121 | * @event_data: Raw payload transferred with the MKBP event. | ||
122 | * @event_size: Size in bytes of the event data. | ||
123 | * @host_event_wake_mask: Mask of host events that cause wake from suspend. | ||
124 | * @ec: The platform_device used by the mfd driver to interface with the | ||
125 | * main EC. | ||
126 | * @pd: The platform_device used by the mfd driver to interface with the | ||
127 | * PD behind an EC. | ||
128 | */ | ||
129 | struct cros_ec_device { | ||
130 | /* These are used by other drivers that want to talk to the EC */ | ||
131 | const char *phys_name; | ||
132 | struct device *dev; | ||
133 | bool was_wake_device; | ||
134 | struct class *cros_class; | ||
135 | int (*cmd_readmem)(struct cros_ec_device *ec, unsigned int offset, | ||
136 | unsigned int bytes, void *dest); | ||
137 | |||
138 | /* These are used to implement the platform-specific interface */ | ||
139 | u16 max_request; | ||
140 | u16 max_response; | ||
141 | u16 max_passthru; | ||
142 | u16 proto_version; | ||
143 | void *priv; | ||
144 | int irq; | ||
145 | u8 *din; | ||
146 | u8 *dout; | ||
147 | int din_size; | ||
148 | int dout_size; | ||
149 | bool wake_enabled; | ||
150 | bool suspended; | ||
151 | int (*cmd_xfer)(struct cros_ec_device *ec, | ||
152 | struct cros_ec_command *msg); | ||
153 | int (*pkt_xfer)(struct cros_ec_device *ec, | ||
154 | struct cros_ec_command *msg); | ||
155 | struct mutex lock; | ||
156 | bool mkbp_event_supported; | ||
157 | bool host_sleep_v1; | ||
158 | struct blocking_notifier_head event_notifier; | ||
159 | |||
160 | struct ec_response_get_next_event_v1 event_data; | ||
161 | int event_size; | ||
162 | u32 host_event_wake_mask; | ||
163 | u32 last_resume_result; | ||
164 | |||
165 | /* The platform devices used by the mfd driver */ | ||
166 | struct platform_device *ec; | ||
167 | struct platform_device *pd; | ||
168 | }; | ||
169 | |||
170 | /** | ||
171 | * struct cros_ec_sensor_platform - ChromeOS EC sensor platform information. | ||
172 | * @sensor_num: Id of the sensor, as reported by the EC. | ||
173 | */ | ||
174 | struct cros_ec_sensor_platform { | ||
175 | u8 sensor_num; | ||
176 | }; | ||
177 | |||
178 | /** | ||
179 | * struct cros_ec_platform - ChromeOS EC platform information. | ||
180 | * @ec_name: Name of EC device (e.g. 'cros-ec', 'cros-pd', ...) | ||
181 | * used in /dev/ and sysfs. | ||
182 | * @cmd_offset: Offset to apply for each command. Set when | ||
183 | * registering a device behind another one. | ||
184 | */ | ||
185 | struct cros_ec_platform { | ||
186 | const char *ec_name; | ||
187 | u16 cmd_offset; | ||
188 | }; | ||
189 | |||
190 | /** | ||
191 | * cros_ec_suspend() - Handle a suspend operation for the ChromeOS EC device. | ||
192 | * @ec_dev: Device to suspend. | ||
193 | * | ||
194 | * This can be called by drivers to handle a suspend event. | ||
195 | * | ||
196 | * Return: 0 on success or negative error code. | ||
197 | */ | ||
198 | int cros_ec_suspend(struct cros_ec_device *ec_dev); | ||
199 | |||
200 | /** | ||
201 | * cros_ec_resume() - Handle a resume operation for the ChromeOS EC device. | ||
202 | * @ec_dev: Device to resume. | ||
203 | * | ||
204 | * This can be called by drivers to handle a resume event. | ||
205 | * | ||
206 | * Return: 0 on success or negative error code. | ||
207 | */ | ||
208 | int cros_ec_resume(struct cros_ec_device *ec_dev); | ||
209 | |||
210 | /** | ||
211 | * cros_ec_prepare_tx() - Prepare an outgoing message in the output buffer. | ||
212 | * @ec_dev: Device to register. | ||
213 | * @msg: Message to write. | ||
214 | * | ||
215 | * This is intended to be used by all ChromeOS EC drivers, but at present | ||
216 | * only SPI uses it. Once LPC uses the same protocol it can start using it. | ||
217 | * I2C could use it now, with a refactor of the existing code. | ||
218 | * | ||
219 | * Return: 0 on success or negative error code. | ||
220 | */ | ||
221 | int cros_ec_prepare_tx(struct cros_ec_device *ec_dev, | ||
222 | struct cros_ec_command *msg); | ||
223 | |||
224 | /** | ||
225 | * cros_ec_check_result() - Check ec_msg->result. | ||
226 | * @ec_dev: EC device. | ||
227 | * @msg: Message to check. | ||
228 | * | ||
229 | * This is used by ChromeOS EC drivers to check the ec_msg->result for | ||
230 | * errors and to warn about them. | ||
231 | * | ||
232 | * Return: 0 on success or negative error code. | ||
233 | */ | ||
234 | int cros_ec_check_result(struct cros_ec_device *ec_dev, | ||
235 | struct cros_ec_command *msg); | ||
236 | |||
237 | /** | ||
238 | * cros_ec_cmd_xfer() - Send a command to the ChromeOS EC. | ||
239 | * @ec_dev: EC device. | ||
240 | * @msg: Message to write. | ||
241 | * | ||
242 | * Call this to send a command to the ChromeOS EC. This should be used | ||
243 | * instead of calling the EC's cmd_xfer() callback directly. | ||
244 | * | ||
245 | * Return: 0 on success or negative error code. | ||
246 | */ | ||
247 | int cros_ec_cmd_xfer(struct cros_ec_device *ec_dev, | ||
248 | struct cros_ec_command *msg); | ||
249 | |||
250 | /** | ||
251 | * cros_ec_cmd_xfer_status() - Send a command to the ChromeOS EC. | ||
252 | * @ec_dev: EC device. | ||
253 | * @msg: Message to write. | ||
254 | * | ||
255 | * This function is identical to cros_ec_cmd_xfer, except it returns success | ||
256 | * status only if both the command was transmitted successfully and the EC | ||
257 | * replied with success status. It's not necessary to check msg->result when | ||
258 | * using this function. | ||
259 | * | ||
260 | * Return: The number of bytes transferred on success or negative error code. | ||
261 | */ | ||
262 | int cros_ec_cmd_xfer_status(struct cros_ec_device *ec_dev, | ||
263 | struct cros_ec_command *msg); | ||
264 | |||
265 | /** | ||
266 | * cros_ec_register() - Register a new ChromeOS EC, using the provided info. | ||
267 | * @ec_dev: Device to register. | ||
268 | * | ||
269 | * Before calling this, allocate a pointer to a new device and then fill | ||
270 | * in all the fields up to the --private-- marker. | ||
271 | * | ||
272 | * Return: 0 on success or negative error code. | ||
273 | */ | ||
274 | int cros_ec_register(struct cros_ec_device *ec_dev); | ||
275 | |||
276 | /** | ||
277 | * cros_ec_unregister() - Remove a ChromeOS EC. | ||
278 | * @ec_dev: Device to unregister. | ||
279 | * | ||
280 | * Call this to deregister a ChromeOS EC, then clean up any private data. | ||
281 | * | ||
282 | * Return: 0 on success or negative error code. | ||
283 | */ | ||
284 | int cros_ec_unregister(struct cros_ec_device *ec_dev); | ||
285 | |||
286 | /** | ||
287 | * cros_ec_query_all() - Query the protocol version supported by the | ||
288 | * ChromeOS EC. | ||
289 | * @ec_dev: Device to register. | ||
290 | * | ||
291 | * Return: 0 on success or negative error code. | ||
292 | */ | ||
293 | int cros_ec_query_all(struct cros_ec_device *ec_dev); | ||
294 | |||
295 | /** | ||
296 | * cros_ec_get_next_event() - Fetch next event from the ChromeOS EC. | ||
297 | * @ec_dev: Device to fetch event from. | ||
298 | * @wake_event: Pointer to a bool set to true upon return if the event might be | ||
299 | * treated as a wake event. Ignored if null. | ||
300 | * | ||
301 | * Return: negative error code on errors; 0 for no data; or else number of | ||
302 | * bytes received (i.e., an event was retrieved successfully). Event types are | ||
303 | * written out to @ec_dev->event_data.event_type on success. | ||
304 | */ | ||
305 | int cros_ec_get_next_event(struct cros_ec_device *ec_dev, bool *wake_event); | ||
306 | |||
307 | /** | ||
308 | * cros_ec_get_host_event() - Return a mask of event set by the ChromeOS EC. | ||
309 | * @ec_dev: Device to fetch event from. | ||
310 | * | ||
311 | * When MKBP is supported, when the EC raises an interrupt, we collect the | ||
312 | * events raised and call the functions in the ec notifier. This function | ||
313 | * is a helper to know which events are raised. | ||
314 | * | ||
315 | * Return: 0 on error or non-zero bitmask of one or more EC_HOST_EVENT_*. | ||
316 | */ | ||
317 | u32 cros_ec_get_host_event(struct cros_ec_device *ec_dev); | ||
318 | |||
319 | #endif /* __LINUX_CROS_EC_PROTO_H */ | ||
diff --git a/sound/soc/codecs/cros_ec_codec.c b/sound/soc/codecs/cros_ec_codec.c index 85beef265cc8..3c1bd24a1057 100644 --- a/sound/soc/codecs/cros_ec_codec.c +++ b/sound/soc/codecs/cros_ec_codec.c | |||
@@ -9,9 +9,9 @@ | |||
9 | #include <linux/delay.h> | 9 | #include <linux/delay.h> |
10 | #include <linux/device.h> | 10 | #include <linux/device.h> |
11 | #include <linux/kernel.h> | 11 | #include <linux/kernel.h> |
12 | #include <linux/mfd/cros_ec.h> | ||
13 | #include <linux/mfd/cros_ec_commands.h> | ||
14 | #include <linux/module.h> | 12 | #include <linux/module.h> |
13 | #include <linux/platform_data/cros_ec_commands.h> | ||
14 | #include <linux/platform_data/cros_ec_proto.h> | ||
15 | #include <linux/platform_device.h> | 15 | #include <linux/platform_device.h> |
16 | #include <sound/pcm.h> | 16 | #include <sound/pcm.h> |
17 | #include <sound/pcm_params.h> | 17 | #include <sound/pcm_params.h> |