All of lore.kernel.org
 help / color / mirror / Atom feed
From: Lee Jones <lee.jones@linaro.org>
To: Jae Hyun Yoo <jae.hyun.yoo@linux.intel.com>
Cc: "Rob Herring" <robh+dt@kernel.org>,
	"Jean Delvare" <jdelvare@suse.com>,
	"Guenter Roeck" <linux@roeck-us.net>,
	"Mark Rutland" <mark.rutland@arm.com>,
	"Joel Stanley" <joel@jms.id.au>,
	"Andrew Jeffery" <andrew@aj.id.au>,
	"Jonathan Corbet" <corbet@lwn.net>,
	"Greg Kroah-Hartman" <gregkh@linuxfoundation.org>,
	"Gustavo Pimentel" <gustavo.pimentel@synopsys.com>,
	"Kishon Vijay Abraham I" <kishon@ti.com>,
	"Lorenzo Pieralisi" <lorenzo.pieralisi@arm.com>,
	darrick.wong@oracle.com, sandeen@redhat.com,
	"Arnd Bergmann" <arnd@arndb.de>, "Wu Hao" <hao.wu@intel.com>,
	kusumi.tomohiro@gmail.com, bryantly@linux.vnet.ibm.com,
	fbarrat@linux.vnet.ibm.com, "David Miller" <davem@davemloft.net>,
	"Mauro Carvalho Chehab" <mchehab+samsung@kernel.org>,
	"Andrew Morton" <akpm@linux-foundation.org>,
	"Randy Dunlap" <rdunlap@infradead.org>,
	"Philippe Ombredanne" <pombredanne@nexb.com>,
	Vinod <vkoul@kernel.org>, "Stephen Boyd" <sboyd@codeaurora.org>,
	david.kershner@unisys.com,
	"Uwe Kleine-König" <u.kleine-koenig@pengutronix.de>,
	"Sagar Dharia" <sdharia@codeaurora.org>,
	"Johan Hovold" <johan@kernel.org>,
	"Thomas Gleixner" <tglx@linutronix.de>,
	jgross@suse.com, "Cyrille Pitchen" <cyrille.pitchen@wedev4u.fr>,
	"Linux HWMON List" <linux-hwmon@vger.kernel.org>,
	devicetree@vger.kernel.org,
	"linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>,
	"moderated list:ARM/FREESCALE IMX / MXC ARM ARCHITECTURE"
	<linux-arm-kernel@lists.infradead.org>,
	linux-aspeed@lists.ozlabs.org,
	"Linux Doc Mailing List" <linux-doc@vger.kernel.org>,
	"OpenBMC Maillist" <openbmc@lists.ozlabs.org>,
	"James Feist" <james.feist@linux.intel.com>,
	"Jason M Biils" <jason.m.bills@linux.intel.com>,
	"Vernon Mauery" <vernon.mauery@linux.intel.com>
Subject: Re: [PATCH v7 08/12] mfd: intel-peci-client: Add PECI client MFD driver
Date: Tue, 31 Jul 2018 08:01:17 +0100	[thread overview]
Message-ID: <20180731070117.GE4662@dell> (raw)
In-Reply-To: <7ab43253-1154-6e2f-b216-69b0d44b470a@linux.intel.com>

On Mon, 30 Jul 2018, Jae Hyun Yoo wrote:

> Hi Rob,
> 
> On 7/30/2018 3:10 PM, Rob Herring wrote:
> > On Fri, Jul 27, 2018 at 11:36 AM Jae Hyun Yoo
> > <jae.hyun.yoo@linux.intel.com> wrote:
> > > 
> > > Hi Lee,
> > > 
> > > On 7/27/2018 1:26 AM, Lee Jones wrote:
> > > > On Mon, 23 Jul 2018, Jae Hyun Yoo wrote:
> > > > 
> > > > > This commit adds PECI client MFD driver.
> > > > > 
> > > > > Signed-off-by: Jae Hyun Yoo <jae.hyun.yoo@linux.intel.com>
> > > > > Cc: Lee Jones <lee.jones@linaro.org>
> > > > > Cc: Rob Herring <robh+dt@kernel.org>
> > > > > Cc: Andrew Jeffery <andrew@aj.id.au>
> > > > > Cc: James Feist <james.feist@linux.intel.com>
> > > > > Cc: Jason M Biils <jason.m.bills@linux.intel.com>
> > > > > Cc: Joel Stanley <joel@jms.id.au>
> > > > > Cc: Vernon Mauery <vernon.mauery@linux.intel.com>
> > > > > ---
> > > > >    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.
> > 
> > Only after I first suggested you create cpu and dimm sensors from a
> > single hwmon driver. Perhaps you should figure out how to fix the
> > problem with delayed registration. Perhaps you can register the
> > sensor, but just delay returning actual data until it is ready.
> > 
> 
> The actual reason why I divided the single hwmon driver into two is for
> using recommended hwmon API set which doesn't allow incremental
> creation of sysfs attributes at run time - using of
> 'devm_hwmon_device_register_with_info' is suggested by Guenter instead
> of using other deprecated APIs.
> 
> The reason why the delayed registration is needed is, BMC kernel cannot
> know how many DIMM are installed in remote machine before the machine
> completing memory training and testing in POST. So dimm temp driver
> cannot create hwmon attributes in advance.
> 
> My thought is, this way is the best to address these requirements.

As I've previously explained, I do not think this is a good fit for
MFD.  Since this whole PECI piece is a bit, let's say 'niche', perhaps
it's better to contain the client within the PECI subsystem too.  You
can then use the platform_device_add() API to register devices as and
when required.

-- 
Lee Jones [李琼斯]
Linaro Services Technical Lead
Linaro.org │ Open source software for ARM SoCs
Follow Linaro: Facebook | Twitter | Blog

WARNING: multiple messages have this Message-ID (diff)
From: Lee Jones <lee.jones@linaro.org>
To: Jae Hyun Yoo <jae.hyun.yoo@linux.intel.com>
Cc: Rob Herring <robh+dt@kernel.org>,
	Jean Delvare <jdelvare@suse.com>,
	Guenter Roeck <linux@roeck-us.net>,
	Mark Rutland <mark.rutland@arm.com>,
	Joel Stanley <joel@jms.id.au>, Andrew Jeffery <andrew@aj.id.au>,
	Jonathan Corbet <corbet@lwn.net>,
	Greg Kroah-Hartman <gregkh@linuxfoundation.org>,
	Gustavo Pimentel <gustavo.pimentel@synopsys.com>,
	Kishon Vijay Abraham I <kishon@ti.com>,
	Lorenzo Pieralisi <lorenzo.pieralisi@arm.com>,
	darrick.wong@oracle.com, sandeen@redhat.com,
	Arnd Bergmann <arnd@arndb.de>, Wu Hao <hao.wu@intel.com>,
	kusumi.tomohiro@gmail.com, bryantly@linux.vnet.ibm.com,
	fbarrat@linux.vnet.ibm.com, David Miller <davem@davemloft.net>,
	Mauro Carvalho Chehab <mchehab+samsung@kernel.org>,
	Andrew Morton <akpm@linux-foundation.org>,
	Randy Dunlap <rdunlap@in>
Subject: Re: [PATCH v7 08/12] mfd: intel-peci-client: Add PECI client MFD driver
Date: Tue, 31 Jul 2018 08:01:17 +0100	[thread overview]
Message-ID: <20180731070117.GE4662@dell> (raw)
In-Reply-To: <7ab43253-1154-6e2f-b216-69b0d44b470a@linux.intel.com>

On Mon, 30 Jul 2018, Jae Hyun Yoo wrote:

> Hi Rob,
> 
> On 7/30/2018 3:10 PM, Rob Herring wrote:
> > On Fri, Jul 27, 2018 at 11:36 AM Jae Hyun Yoo
> > <jae.hyun.yoo@linux.intel.com> wrote:
> > > 
> > > Hi Lee,
> > > 
> > > On 7/27/2018 1:26 AM, Lee Jones wrote:
> > > > On Mon, 23 Jul 2018, Jae Hyun Yoo wrote:
> > > > 
> > > > > This commit adds PECI client MFD driver.
> > > > > 
> > > > > Signed-off-by: Jae Hyun Yoo <jae.hyun.yoo@linux.intel.com>
> > > > > Cc: Lee Jones <lee.jones@linaro.org>
> > > > > Cc: Rob Herring <robh+dt@kernel.org>
> > > > > Cc: Andrew Jeffery <andrew@aj.id.au>
> > > > > Cc: James Feist <james.feist@linux.intel.com>
> > > > > Cc: Jason M Biils <jason.m.bills@linux.intel.com>
> > > > > Cc: Joel Stanley <joel@jms.id.au>
> > > > > Cc: Vernon Mauery <vernon.mauery@linux.intel.com>
> > > > > ---
> > > > >    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.
> > 
> > Only after I first suggested you create cpu and dimm sensors from a
> > single hwmon driver. Perhaps you should figure out how to fix the
> > problem with delayed registration. Perhaps you can register the
> > sensor, but just delay returning actual data until it is ready.
> > 
> 
> The actual reason why I divided the single hwmon driver into two is for
> using recommended hwmon API set which doesn't allow incremental
> creation of sysfs attributes at run time - using of
> 'devm_hwmon_device_register_with_info' is suggested by Guenter instead
> of using other deprecated APIs.
> 
> The reason why the delayed registration is needed is, BMC kernel cannot
> know how many DIMM are installed in remote machine before the machine
> completing memory training and testing in POST. So dimm temp driver
> cannot create hwmon attributes in advance.
> 
> My thought is, this way is the best to address these requirements.

As I've previously explained, I do not think this is a good fit for
MFD.  Since this whole PECI piece is a bit, let's say 'niche', perhaps
it's better to contain the client within the PECI subsystem too.  You
can then use the platform_device_add() API to register devices as and
when required.

-- 
Lee Jones [李琼斯]
Linaro Services Technical Lead
Linaro.org │ Open source software for ARM SoCs
Follow Linaro: Facebook | Twitter | Blog

WARNING: multiple messages have this Message-ID (diff)
From: Lee Jones <lee.jones@linaro.org>
To: Jae Hyun Yoo <jae.hyun.yoo@linux.intel.com>
Cc: "Rob Herring" <robh+dt@kernel.org>,
	"Jean Delvare" <jdelvare@suse.com>,
	"Guenter Roeck" <linux@roeck-us.net>,
	"Mark Rutland" <mark.rutland@arm.com>,
	"Joel Stanley" <joel@jms.id.au>,
	"Andrew Jeffery" <andrew@aj.id.au>,
	"Jonathan Corbet" <corbet@lwn.net>,
	"Greg Kroah-Hartman" <gregkh@linuxfoundation.org>,
	"Gustavo Pimentel" <gustavo.pimentel@synopsys.com>,
	"Kishon Vijay Abraham I" <kishon@ti.com>,
	"Lorenzo Pieralisi" <lorenzo.pieralisi@arm.com>,
	darrick.wong@oracle.com, sandeen@redhat.com,
	"Arnd Bergmann" <arnd@arndb.de>, "Wu Hao" <hao.wu@intel.com>,
	kusumi.tomohiro@gmail.com, bryantly@linux.vnet.ibm.com,
	fbarrat@linux.vnet.ibm.com, "David Miller" <davem@davemloft.net>,
	"Mauro Carvalho Chehab" <mchehab+samsung@kernel.org>,
	"Andrew Morton" <akpm@linux-foundation.org>,
	"Randy Dunlap" <rdunlap@infradead.org>,
	"Philippe Ombredanne" <pombredanne@nexb.com>,
	Vinod <vkoul@kernel.org>, "Stephen Boyd" <sboyd@codeaurora.org>,
	david.kershner@unisys.com,
	"Uwe Kleine-König" <u.kleine-koenig@pengutronix.de>,
	"Sagar Dharia" <sdharia@codeaurora.org>,
	"Johan Hovold" <johan@kernel.org>,
	"Thomas Gleixner" <tglx@linutronix.de>,
	jgross@suse.com, "Cyrille Pitchen" <cyrille.pitchen@wedev4u.fr>,
	"Linux HWMON List" <linux-hwmon@vger.kernel.org>,
	devicetree@vger.kernel.org,
	"linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>,
	"moderated list:ARM/FREESCALE IMX / MXC ARM ARCHITECTURE"
	<linux-arm-kernel@lists.infradead.org>,
	linux-aspeed@lists.ozlabs.org,
	"Linux Doc Mailing List" <linux-doc@vger.kernel.org>,
	"OpenBMC Maillist" <openbmc@lists.ozlabs.org>,
	"James Feist" <james.feist@linux.intel.com>,
	"Jason M Biils" <jason.m.bills@linux.intel.com>,
	"Vernon Mauery" <vernon.mauery@linux.intel.com>
Subject: Re: [PATCH v7 08/12] mfd: intel-peci-client: Add PECI client MFD driver
Date: Tue, 31 Jul 2018 08:01:17 +0100	[thread overview]
Message-ID: <20180731070117.GE4662@dell> (raw)
In-Reply-To: <7ab43253-1154-6e2f-b216-69b0d44b470a@linux.intel.com>

On Mon, 30 Jul 2018, Jae Hyun Yoo wrote:

> Hi Rob,
> 
> On 7/30/2018 3:10 PM, Rob Herring wrote:
> > On Fri, Jul 27, 2018 at 11:36 AM Jae Hyun Yoo
> > <jae.hyun.yoo@linux.intel.com> wrote:
> > > 
> > > Hi Lee,
> > > 
> > > On 7/27/2018 1:26 AM, Lee Jones wrote:
> > > > On Mon, 23 Jul 2018, Jae Hyun Yoo wrote:
> > > > 
> > > > > This commit adds PECI client MFD driver.
> > > > > 
> > > > > Signed-off-by: Jae Hyun Yoo <jae.hyun.yoo@linux.intel.com>
> > > > > Cc: Lee Jones <lee.jones@linaro.org>
> > > > > Cc: Rob Herring <robh+dt@kernel.org>
> > > > > Cc: Andrew Jeffery <andrew@aj.id.au>
> > > > > Cc: James Feist <james.feist@linux.intel.com>
> > > > > Cc: Jason M Biils <jason.m.bills@linux.intel.com>
> > > > > Cc: Joel Stanley <joel@jms.id.au>
> > > > > Cc: Vernon Mauery <vernon.mauery@linux.intel.com>
> > > > > ---
> > > > >    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.
> > 
> > Only after I first suggested you create cpu and dimm sensors from a
> > single hwmon driver. Perhaps you should figure out how to fix the
> > problem with delayed registration. Perhaps you can register the
> > sensor, but just delay returning actual data until it is ready.
> > 
> 
> The actual reason why I divided the single hwmon driver into two is for
> using recommended hwmon API set which doesn't allow incremental
> creation of sysfs attributes at run time - using of
> 'devm_hwmon_device_register_with_info' is suggested by Guenter instead
> of using other deprecated APIs.
> 
> The reason why the delayed registration is needed is, BMC kernel cannot
> know how many DIMM are installed in remote machine before the machine
> completing memory training and testing in POST. So dimm temp driver
> cannot create hwmon attributes in advance.
> 
> My thought is, this way is the best to address these requirements.

As I've previously explained, I do not think this is a good fit for
MFD.  Since this whole PECI piece is a bit, let's say 'niche', perhaps
it's better to contain the client within the PECI subsystem too.  You
can then use the platform_device_add() API to register devices as and
when required.

-- 
Lee Jones [李琼斯]
Linaro Services Technical Lead
Linaro.org │ Open source software for ARM SoCs
Follow Linaro: Facebook | Twitter | Blog
--
To unsubscribe from this list: send the line "unsubscribe linux-doc" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

WARNING: multiple messages have this Message-ID (diff)
From: lee.jones@linaro.org (Lee Jones)
To: linux-arm-kernel@lists.infradead.org
Subject: [PATCH v7 08/12] mfd: intel-peci-client: Add PECI client MFD driver
Date: Tue, 31 Jul 2018 08:01:17 +0100	[thread overview]
Message-ID: <20180731070117.GE4662@dell> (raw)
In-Reply-To: <7ab43253-1154-6e2f-b216-69b0d44b470a@linux.intel.com>

On Mon, 30 Jul 2018, Jae Hyun Yoo wrote:

> Hi Rob,
> 
> On 7/30/2018 3:10 PM, Rob Herring wrote:
> > On Fri, Jul 27, 2018 at 11:36 AM Jae Hyun Yoo
> > <jae.hyun.yoo@linux.intel.com> wrote:
> > > 
> > > Hi Lee,
> > > 
> > > On 7/27/2018 1:26 AM, Lee Jones wrote:
> > > > On Mon, 23 Jul 2018, Jae Hyun Yoo wrote:
> > > > 
> > > > > This commit adds PECI client MFD driver.
> > > > > 
> > > > > Signed-off-by: Jae Hyun Yoo <jae.hyun.yoo@linux.intel.com>
> > > > > Cc: Lee Jones <lee.jones@linaro.org>
> > > > > Cc: Rob Herring <robh+dt@kernel.org>
> > > > > Cc: Andrew Jeffery <andrew@aj.id.au>
> > > > > Cc: James Feist <james.feist@linux.intel.com>
> > > > > Cc: Jason M Biils <jason.m.bills@linux.intel.com>
> > > > > Cc: Joel Stanley <joel@jms.id.au>
> > > > > Cc: Vernon Mauery <vernon.mauery@linux.intel.com>
> > > > > ---
> > > > >    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.
> > 
> > Only after I first suggested you create cpu and dimm sensors from a
> > single hwmon driver. Perhaps you should figure out how to fix the
> > problem with delayed registration. Perhaps you can register the
> > sensor, but just delay returning actual data until it is ready.
> > 
> 
> The actual reason why I divided the single hwmon driver into two is for
> using recommended hwmon API set which doesn't allow incremental
> creation of sysfs attributes at run time - using of
> 'devm_hwmon_device_register_with_info' is suggested by Guenter instead
> of using other deprecated APIs.
> 
> The reason why the delayed registration is needed is, BMC kernel cannot
> know how many DIMM are installed in remote machine before the machine
> completing memory training and testing in POST. So dimm temp driver
> cannot create hwmon attributes in advance.
> 
> My thought is, this way is the best to address these requirements.

As I've previously explained, I do not think this is a good fit for
MFD.  Since this whole PECI piece is a bit, let's say 'niche', perhaps
it's better to contain the client within the PECI subsystem too.  You
can then use the platform_device_add() API to register devices as and
when required.

-- 
Lee Jones [???]
Linaro Services Technical Lead
Linaro.org ? Open source software for ARM SoCs
Follow Linaro: Facebook | Twitter | Blog

  reply	other threads:[~2018-07-31  8:40 UTC|newest]

Thread overview: 89+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2018-07-23 21:47 [PATCH v7 00/12] PECI device driver introduction Jae Hyun Yoo
2018-07-23 21:47 ` Jae Hyun Yoo
2018-07-23 21:47 ` Jae Hyun Yoo
2018-07-23 21:47 ` Jae Hyun Yoo
2018-07-23 21:47 ` [PATCH v7 01/12] dt-bindings: Add a document of PECI subsystem Jae Hyun Yoo
2018-07-23 21:47   ` Jae Hyun Yoo
2018-07-23 21:47   ` Jae Hyun Yoo
2018-07-23 21:47   ` Jae Hyun Yoo
2018-07-23 21:47 ` [PATCH v7 02/12] Documentation: ioctl: Add ioctl numbers for " Jae Hyun Yoo
2018-07-23 21:47   ` Jae Hyun Yoo
2018-07-23 21:47   ` Jae Hyun Yoo
2018-07-23 21:47   ` Jae Hyun Yoo
2018-07-23 21:47 ` [PATCH v7 03/12] peci: Add support for PECI bus driver core Jae Hyun Yoo
2018-07-23 21:47   ` Jae Hyun Yoo
2018-07-23 21:47   ` Jae Hyun Yoo
2018-07-23 21:47 ` [PATCH v7 04/12] dt-bindings: Add a document of PECI adapter driver for ASPEED AST24xx/25xx SoCs Jae Hyun Yoo
2018-07-23 21:47   ` Jae Hyun Yoo
2018-07-23 21:47   ` Jae Hyun Yoo
2018-07-23 21:47   ` Jae Hyun Yoo
2018-07-23 21:47 ` [PATCH v7 05/12] ARM: dts: aspeed: peci: Add PECI node Jae Hyun Yoo
2018-07-23 21:47   ` Jae Hyun Yoo
2018-07-23 21:47   ` Jae Hyun Yoo
2018-07-23 21:47   ` Jae Hyun Yoo
2018-07-23 21:47 ` [PATCH v7 06/12] peci: Add a PECI adapter driver for Aspeed AST24xx/AST25xx Jae Hyun Yoo
2018-07-23 21:47   ` Jae Hyun Yoo
2018-07-23 21:47   ` Jae Hyun Yoo
2018-07-23 21:47   ` Jae Hyun Yoo
2018-07-23 21:47 ` [PATCH v7 07/12] dt-bindings: mfd: Add a document for PECI client MFD Jae Hyun Yoo
2018-07-23 21:47   ` Jae Hyun Yoo
2018-07-23 21:47   ` Jae Hyun Yoo
2018-07-23 21:47   ` Jae Hyun Yoo
2018-07-23 21:47 ` [PATCH v7 08/12] mfd: intel-peci-client: Add PECI client MFD driver Jae Hyun Yoo
2018-07-23 21:47   ` Jae Hyun Yoo
2018-07-23 21:47   ` Jae Hyun Yoo
2018-07-23 21:47   ` Jae Hyun Yoo
2018-07-23 22:21   ` Randy Dunlap
2018-07-23 22:21     ` Randy Dunlap
2018-07-23 22:21     ` Randy Dunlap
2018-07-23 22:21     ` Randy Dunlap
2018-07-23 22:36     ` Jae Hyun Yoo
2018-07-23 22:36       ` Jae Hyun Yoo
2018-07-23 22:36       ` Jae Hyun Yoo
2018-07-23 22:36       ` Jae Hyun Yoo
2018-07-27  8:26   ` Lee Jones
2018-07-27  8:26     ` Lee Jones
2018-07-27  8:26     ` Lee Jones
2018-07-27  8:26     ` Lee Jones
2018-07-27 17:36     ` Jae Hyun Yoo
2018-07-27 17:36       ` Jae Hyun Yoo
2018-07-27 17:36       ` Jae Hyun Yoo
2018-07-27 17:36       ` Jae Hyun Yoo
2018-07-30 22:10       ` Rob Herring
2018-07-30 22:10         ` Rob Herring
2018-07-30 22:10         ` Rob Herring
2018-07-30 22:10         ` Rob Herring
2018-07-30 23:15         ` Jae Hyun Yoo
2018-07-30 23:15           ` Jae Hyun Yoo
2018-07-30 23:15           ` Jae Hyun Yoo
2018-07-30 23:15           ` Jae Hyun Yoo
2018-07-31  7:01           ` Lee Jones [this message]
2018-07-31  7:01             ` Lee Jones
2018-07-31  7:01             ` Lee Jones
2018-07-31  7:01             ` Lee Jones
2018-07-31 18:56             ` Jae Hyun Yoo
2018-07-31 18:56               ` Jae Hyun Yoo
2018-07-31 18:56               ` Jae Hyun Yoo
2018-07-31 18:56               ` Jae Hyun Yoo
2018-07-23 21:47 ` [PATCH v7 09/12] Documentation: hwmon: Add documents for PECI hwmon client drivers Jae Hyun Yoo
2018-07-23 21:47   ` Jae Hyun Yoo
2018-07-23 21:47   ` Jae Hyun Yoo
2018-07-23 21:47   ` Jae Hyun Yoo
2018-07-23 21:47 ` [PATCH v7 10/12] hwmon: Add PECI cputemp driver Jae Hyun Yoo
2018-07-23 21:47   ` Jae Hyun Yoo
2018-07-23 21:47   ` Jae Hyun Yoo
2018-07-23 21:47   ` Jae Hyun Yoo
2018-07-23 21:47 ` [PATCH v7 11/12] hwmon: Add PECI dimmtemp driver Jae Hyun Yoo
2018-07-23 21:47   ` Jae Hyun Yoo
2018-07-23 21:47   ` Jae Hyun Yoo
2018-07-23 21:47   ` Jae Hyun Yoo
2018-07-30 22:06   ` Rob Herring
2018-07-30 22:06     ` Rob Herring
2018-07-30 22:06     ` Rob Herring
2018-07-30 22:45     ` Jae Hyun Yoo
2018-07-30 22:45       ` Jae Hyun Yoo
2018-07-30 22:45       ` Jae Hyun Yoo
2018-07-23 21:47 ` [PATCH v7 12/12] Add maintainers for the PECI subsystem Jae Hyun Yoo
2018-07-23 21:47   ` Jae Hyun Yoo
2018-07-23 21:47   ` Jae Hyun Yoo
2018-07-23 21:47   ` Jae Hyun Yoo

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20180731070117.GE4662@dell \
    --to=lee.jones@linaro.org \
    --cc=akpm@linux-foundation.org \
    --cc=andrew@aj.id.au \
    --cc=arnd@arndb.de \
    --cc=bryantly@linux.vnet.ibm.com \
    --cc=corbet@lwn.net \
    --cc=cyrille.pitchen@wedev4u.fr \
    --cc=darrick.wong@oracle.com \
    --cc=davem@davemloft.net \
    --cc=david.kershner@unisys.com \
    --cc=devicetree@vger.kernel.org \
    --cc=fbarrat@linux.vnet.ibm.com \
    --cc=gregkh@linuxfoundation.org \
    --cc=gustavo.pimentel@synopsys.com \
    --cc=hao.wu@intel.com \
    --cc=jae.hyun.yoo@linux.intel.com \
    --cc=james.feist@linux.intel.com \
    --cc=jason.m.bills@linux.intel.com \
    --cc=jdelvare@suse.com \
    --cc=jgross@suse.com \
    --cc=joel@jms.id.au \
    --cc=johan@kernel.org \
    --cc=kishon@ti.com \
    --cc=kusumi.tomohiro@gmail.com \
    --cc=linux-arm-kernel@lists.infradead.org \
    --cc=linux-aspeed@lists.ozlabs.org \
    --cc=linux-doc@vger.kernel.org \
    --cc=linux-hwmon@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux@roeck-us.net \
    --cc=lorenzo.pieralisi@arm.com \
    --cc=mark.rutland@arm.com \
    --cc=mchehab+samsung@kernel.org \
    --cc=openbmc@lists.ozlabs.org \
    --cc=pombredanne@nexb.com \
    --cc=rdunlap@infradead.org \
    --cc=robh+dt@kernel.org \
    --cc=sandeen@redhat.com \
    --cc=sboyd@codeaurora.org \
    --cc=sdharia@codeaurora.org \
    --cc=tglx@linutronix.de \
    --cc=u.kleine-koenig@pengutronix.de \
    --cc=vernon.mauery@linux.intel.com \
    --cc=vkoul@kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.