[lkml]   [2019]   [Mar]   [21]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
Messages in this thread
Patch in this message
Subject[PATCH 1/3] platform/chrome: wilco_ec: Split core and mailbox into separate modules
It was bad design to lump the mailbox interface to the Wilco EC into the
same module as the code module, which loads all the subdrivers:
- This required the sub-drivers to depend on the core, which doesn't
really make sense, they should just depend on the mailbox interface.
- It caused problems with circular dependencies: An upcoming keyboard
backlight driver depends on the mailbox interface, which in the old
architecture makes it also depend on the core driver. However, the core
driver should be able to detect whether or not the keyboard
backlight is available, so the core module depends on the backlight
driver. This created a circular dependency.

By splitting up the mailbox interface and core driver into separate
modules, it fixes both of these problems.

Signed-off-by: Nick Crews <>
drivers/platform/chrome/wilco_ec/Makefile | 6 ++++--
drivers/platform/chrome/wilco_ec/core.c | 2 +-
drivers/platform/chrome/wilco_ec/mailbox.c | 6 ++++++
3 files changed, 11 insertions(+), 3 deletions(-)

diff --git a/drivers/platform/chrome/wilco_ec/Makefile b/drivers/platform/chrome/wilco_ec/Makefile
index 063e7fb4ea17..9706aeb20ccb 100644
--- a/drivers/platform/chrome/wilco_ec/Makefile
+++ b/drivers/platform/chrome/wilco_ec/Makefile
@@ -1,6 +1,8 @@
# SPDX-License-Identifier: GPL-2.0

-wilco_ec-objs := core.o mailbox.o
-obj-$(CONFIG_WILCO_EC) += wilco_ec.o
+wilco_ec_mailbox-objs := mailbox.o
+obj-$(CONFIG_WILCO_EC) += wilco_ec_mailbox.o
+wilco_ec_core-objs := core.o
+obj-$(CONFIG_WILCO_EC) += wilco_ec_core.o
wilco_ec_debugfs-objs := debugfs.o
obj-$(CONFIG_WILCO_EC_DEBUGFS) += wilco_ec_debugfs.o
diff --git a/drivers/platform/chrome/wilco_ec/core.c b/drivers/platform/chrome/wilco_ec/core.c
index 05e1e2be1c91..ece30874f35f 100644
--- a/drivers/platform/chrome/wilco_ec/core.c
+++ b/drivers/platform/chrome/wilco_ec/core.c
@@ -20,7 +20,7 @@

#include "../cros_ec_lpc_mec.h"

-#define DRV_NAME "wilco-ec"
+#define DRV_NAME "wilco-ec-core"

static struct resource *wilco_get_resource(struct platform_device *pdev,
int index)
diff --git a/drivers/platform/chrome/wilco_ec/mailbox.c b/drivers/platform/chrome/wilco_ec/mailbox.c
index 14355668ddfa..ca6b92ce7e6d 100644
--- a/drivers/platform/chrome/wilco_ec/mailbox.c
+++ b/drivers/platform/chrome/wilco_ec/mailbox.c
@@ -18,6 +18,7 @@
#include <linux/delay.h>
#include <linux/device.h>
#include <linux/io.h>
+#include <linux/module.h>
#include <linux/platform_data/wilco-ec.h>
#include <linux/platform_device.h>

@@ -235,3 +236,8 @@ int wilco_ec_mailbox(struct wilco_ec_device *ec, struct wilco_ec_message *msg)

+MODULE_AUTHOR("Nick Crews <>");
+MODULE_DESCRIPTION("ChromeOS Wilco Embedded Controller mailbox interface");
 \ /
  Last update: 2019-03-21 23:14    [W:0.094 / U:1.496 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site