Thread (23 messages) 23 messages, 4 authors, 2018-07-31

Re: [PATCH v7 08/12] mfd: intel-peci-client: Add PECI client MFD driver

From: Jae Hyun Yoo <hidden>
Date: 2018-07-27 17:36:20
Also in: linux-arm-kernel, linux-aspeed, linux-doc, linux-hwmon, lkml, openbmc

Hi Lee,

On 7/27/2018 1:26 AM, Lee Jones wrote:
On Mon, 23 Jul 2018, Jae Hyun Yoo wrote:
quoted
This commit adds PECI client MFD driver.

Signed-off-by: Jae Hyun Yoo <redacted>
Cc: Lee Jones <redacted>
Cc: Rob Herring <robh+dt@kernel.org>
Cc: Andrew Jeffery <redacted>
Cc: James Feist <redacted>
Cc: Jason M Biils <redacted>
Cc: Joel Stanley <joel@jms.id.au>
Cc: Vernon Mauery <redacted>
---
  drivers/mfd/Kconfig                   |  14 ++
  drivers/mfd/Makefile                  |   1 +
  drivers/mfd/intel-peci-client.c       | 182 ++++++++++++++++++++++++++
  include/linux/mfd/intel-peci-client.h |  81 ++++++++++++
  4 files changed, 278 insertions(+)
  create mode 100644 drivers/mfd/intel-peci-client.c
  create mode 100644 include/linux/mfd/intel-peci-client.h
diff --git a/drivers/mfd/Kconfig b/drivers/mfd/Kconfig
index f3fa516011ec..e38b591479d4 100644
--- a/drivers/mfd/Kconfig
+++ b/drivers/mfd/Kconfig
@@ -595,6 +595,20 @@ config MFD_INTEL_MSIC
  	  Passage) chip. This chip embeds audio, battery, GPIO, etc.
  	  devices used in Intel Medfield platforms.
  
+config MFD_INTEL_PECI_CLIENT
+	bool "Intel PECI client"
+	depends on (PECI || COMPILE_TEST)
+	select MFD_CORE
+	help
+	  If you say yes to this option, support will be included for the
+	  multi-funtional Intel PECI (Platform Environment Control Interface)
+	  client. PECI is a one-wire bus interface that provides a communication
+	  channel from PECI clients in Intel processors and chipset components
+	  to external monitoring or control devices.
+
+	  Additional drivers must be enabled in order to use the functionality
+	  of the device.
+
  config MFD_IPAQ_MICRO
  	bool "Atmel Micro ASIC (iPAQ h3100/h3600/h3700) Support"
  	depends on SA1100_H3100 || SA1100_H3600
diff --git a/drivers/mfd/Makefile b/drivers/mfd/Makefile
index 2852a6042ecf..29e2cacc58bd 100644
--- a/drivers/mfd/Makefile
+++ b/drivers/mfd/Makefile
@@ -203,6 +203,7 @@ obj-$(CONFIG_MFD_INTEL_LPSS)	+= intel-lpss.o
  obj-$(CONFIG_MFD_INTEL_LPSS_PCI)	+= intel-lpss-pci.o
  obj-$(CONFIG_MFD_INTEL_LPSS_ACPI)	+= intel-lpss-acpi.o
  obj-$(CONFIG_MFD_INTEL_MSIC)	+= intel_msic.o
+obj-$(CONFIG_MFD_INTEL_PECI_CLIENT)	+= intel-peci-client.o
  obj-$(CONFIG_MFD_PALMAS)	+= palmas.o
  obj-$(CONFIG_MFD_VIPERBOARD)    += viperboard.o
  obj-$(CONFIG_MFD_RC5T583)	+= rc5t583.o rc5t583-irq.o
diff --git a/drivers/mfd/intel-peci-client.c b/drivers/mfd/intel-peci-client.c
new file mode 100644
index 000000000000..d7702cf1ea50
--- /dev/null
+++ b/drivers/mfd/intel-peci-client.c
@@ -0,0 +1,182 @@
+// SPDX-License-Identifier: GPL-2.0
+// Copyright (c) 2018 Intel Corporation
+
+#include <linux/bitfield.h>
+#include <linux/mfd/core.h>
+#include <linux/mfd/intel-peci-client.h>
+#include <linux/module.h>
+#include <linux/peci.h>
+#include <linux/of_device.h>
+
+enum cpu_gens {
+	CPU_GEN_HSX = 0, /* Haswell Xeon */
+	CPU_GEN_BRX,     /* Broadwell Xeon */
+	CPU_GEN_SKX,     /* Skylake Xeon */
+};
+
+static struct mfd_cell peci_functions[] = {
+	{
+		.name = "peci-cputemp",
+		.of_compatible = "intel,peci-cputemp",
+	},
+	{
+		.name = "peci-dimmtemp",
+		.of_compatible = "intel,peci-dimmtemp",
+	},
+};
The more I look at this driver, the less I think it fits into MFD.

What's stopping you from registering these devices directly from DT?
Because DT doesn't allow 2 nodes at the same address so Rob suggested
MFD for this case.

Thanks,

Jae
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help