From: Lee Jones <lee.jones@linaro.org>
To: Mika Westerberg <mika.westerberg@linux.intel.com>
Cc: Andy Shevchenko <andriy.shevchenko@linux.intel.com>,
Darren Hart <dvhart@infradead.org>,
Thomas Gleixner <tglx@linutronix.de>,
Ingo Molnar <mingo@redhat.com>, Borislav Petkov <bp@alien8.de>,
"H . Peter Anvin" <hpa@zytor.com>,
x86@kernel.org, Zha Qipeng <qipeng.zha@intel.com>,
"David E . Box" <david.e.box@linux.intel.com>,
Guenter Roeck <linux@roeck-us.net>,
Heikki Krogerus <heikki.krogerus@linux.intel.com>,
Greg Kroah-Hartman <gregkh@linuxfoundation.org>,
Wim Van Sebroeck <wim@linux-watchdog.org>,
Mark Brown <broonie@kernel.org>,
platform-driver-x86@vger.kernel.org,
linux-kernel@vger.kernel.org
Subject: Re: [PATCH v4 37/38] platform/x86: intel_pmc_ipc: Convert to MFD
Date: Wed, 22 Jan 2020 12:34:54 +0000 [thread overview]
Message-ID: <20200122123454.GL15507@dell> (raw)
In-Reply-To: <20200121160114.60007-38-mika.westerberg@linux.intel.com>
On Tue, 21 Jan 2020, Mika Westerberg wrote:
> This driver only creates a bunch of platform devices sharing resources
> belonging to the PMC device. This is pretty much what MFD subsystem is
> for so move the driver there, renaming it to intel_pmc_bxt.c which
> should be more clear what it is.
>
> MFD subsystem provides nice helper APIs for subdevice creation so
> convert the driver to use those. Unfortunately the ACPI device includes
> separate resources for most of the subdevices so we cannot simply call
> mfd_add_devices() to create all of them but instead we need to call it
> separately for each device.
>
> The new MFD driver continues to expose two sysfs attributes that allow
> userspace to send IPC commands to the PMC/SCU to avoid breaking any
> existing applications that may use these. Generally this is bad idea so
> document this in the ABI documentation.
>
> Signed-off-by: Mika Westerberg <mika.westerberg@linux.intel.com>
> ---
> .../ABI/obsolete/sysfs-driver-intel_pmc_bxt | 22 +
> arch/x86/include/asm/intel_pmc_ipc.h | 47 --
> arch/x86/include/asm/intel_telemetry.h | 1 +
> drivers/mfd/Kconfig | 16 +-
> drivers/mfd/Makefile | 1 +
> drivers/mfd/intel_pmc_bxt.c | 496 ++++++++++++++
> drivers/platform/x86/Kconfig | 16 +-
> drivers/platform/x86/Makefile | 1 -
> drivers/platform/x86/intel_pmc_ipc.c | 645 ------------------
> .../platform/x86/intel_telemetry_debugfs.c | 12 +-
> drivers/platform/x86/intel_telemetry_pltdrv.c | 2 +
> drivers/usb/typec/tcpm/Kconfig | 2 +-
> include/linux/mfd/intel_pmc_bxt.h | 21 +
> 13 files changed, 572 insertions(+), 710 deletions(-)
> create mode 100644 Documentation/ABI/obsolete/sysfs-driver-intel_pmc_bxt
> delete mode 100644 arch/x86/include/asm/intel_pmc_ipc.h
> create mode 100644 drivers/mfd/intel_pmc_bxt.c
> delete mode 100644 drivers/platform/x86/intel_pmc_ipc.c
> create mode 100644 include/linux/mfd/intel_pmc_bxt.h
[...]
> +static int intel_pmc_probe(struct platform_device *pdev)
> +{
> + struct intel_scu_ipc_pdata pdata = {};
> + struct intel_pmc_dev *pmc;
> + int ret;
> +
> + pmc = devm_kzalloc(&pdev->dev, sizeof(*pmc), GFP_KERNEL);
> + if (!pmc)
> + return -ENOMEM;
> +
> + pmc->dev = &pdev->dev;
> + spin_lock_init(&pmc->gcr_lock);
> +
> + ret = intel_pmc_get_resources(pdev, pmc, &pdata);
> + if (ret) {
> + dev_err(&pdev->dev, "Failed to request resources\n");
> + return ret;
> + }
> +
> + pmc->scu = devm_intel_scu_ipc_register(&pdev->dev, &pdata);
> + if (IS_ERR(pmc->scu))
> + return PTR_ERR(pmc->scu);
*_register is better than *_probe. If it was called that (or maybe
*_init) initially I may have missed the issue altogether ...
However, I still think it the SCU IPC *device* needs to be a device
driver and abide by the rules, ensuring it uses the device driver
model/API. As such, it should be registered and probed as a device.
If you require something from it you should call into it (perhaps
using a register function like above), but that should be done *after*
the device has been bound and probed.
> + platform_set_drvdata(pdev, pmc);
> +
> + ret = intel_pmc_create_devices(pmc);
> + if (ret)
> + dev_err(&pdev->dev, "Failed to create PMC devices\n");
> +
> + return ret;
> +}
--
Lee Jones [李琼斯]
Linaro Services Technical Lead
Linaro.org │ Open source software for ARM SoCs
Follow Linaro: Facebook | Twitter | Blog
next prev parent reply other threads:[~2020-01-22 12:34 UTC|newest]
Thread overview: 69+ messages / expand[flat|nested] mbox.gz Atom feed top
2020-01-21 16:00 [PATCH v4 00/38] platform/x86: Rework intel_scu_ipc and intel_pmc_ipc drivers Mika Westerberg
2020-01-21 16:00 ` [PATCH v4 01/38] platform/x86: intel_mid_powerbtn: Take a copy of ddata Mika Westerberg
2020-01-21 16:00 ` [PATCH v4 02/38] platform/x86: intel_scu_ipcutil: Remove default y from Kconfig Mika Westerberg
2020-01-21 16:00 ` [PATCH v4 03/38] platform/x86: intel_scu_ipc: Add constants for register offsets Mika Westerberg
2020-01-21 16:00 ` [PATCH v4 04/38] platform/x86: intel_scu_ipc: Remove Lincroft support Mika Westerberg
2020-01-21 16:00 ` [PATCH v4 05/38] platform/x86: intel_scu_ipc: Drop intel_scu_ipc_i2c_cntrl() Mika Westerberg
2020-01-21 16:00 ` [PATCH v4 06/38] platform/x86: intel_scu_ipc: Fix interrupt support Mika Westerberg
2020-01-22 13:34 ` Greg Kroah-Hartman
2020-01-22 14:30 ` Mika Westerberg
2020-01-21 16:00 ` [PATCH v4 07/38] platform/x86: intel_scu_ipc: Sleeping is fine when polling Mika Westerberg
2020-01-21 16:00 ` [PATCH v4 08/38] platform/x86: intel_scu_ipc: Drop unused prototype intel_scu_ipc_fw_update() Mika Westerberg
2020-01-21 16:00 ` [PATCH v4 09/38] platform/x86: intel_scu_ipc: Drop unused macros Mika Westerberg
2020-01-21 16:00 ` [PATCH v4 10/38] platform/x86: intel_scu_ipc: Drop intel_scu_ipc_io[read|write][8|16]() Mika Westerberg
2020-01-21 16:00 ` [PATCH v4 11/38] platform/x86: intel_scu_ipc: Drop intel_scu_ipc_raw_command() Mika Westerberg
2020-01-22 13:36 ` Greg Kroah-Hartman
2020-01-22 14:33 ` Mika Westerberg
2020-01-21 16:00 ` [PATCH v4 12/38] platform/x86: intel_scu_ipc: Split out SCU IPC functionality from the SCU driver Mika Westerberg
2020-01-22 13:40 ` Greg Kroah-Hartman
2020-01-22 14:35 ` Mika Westerberg
2020-01-21 16:00 ` [PATCH v4 13/38] platform/x86: intel_scu_ipc: Reformat kernel-doc comments of exported functions Mika Westerberg
2020-01-22 13:40 ` Greg Kroah-Hartman
2020-01-22 14:36 ` Mika Westerberg
2020-01-21 16:00 ` [PATCH v4 14/38] platform/x86: intel_scu_ipc: Introduce new SCU IPC API Mika Westerberg
2020-01-22 13:43 ` Greg Kroah-Hartman
2020-01-22 14:40 ` Mika Westerberg
2020-01-22 14:49 ` Greg Kroah-Hartman
2020-01-22 15:04 ` Mika Westerberg
2020-01-21 16:00 ` [PATCH v4 15/38] platform/x86: intel_mid_powerbtn: Convert to use " Mika Westerberg
2020-01-21 16:00 ` [PATCH v4 16/38] watchdog: intel-mid_wdt: " Mika Westerberg
2020-01-21 16:00 ` [PATCH v4 17/38] platform/x86: intel_scu_ipcutil: " Mika Westerberg
2020-01-21 16:00 ` [PATCH v4 18/38] platform/x86: intel_pmc_ipc: Make intel_pmc_gcr_update() static Mika Westerberg
2020-01-21 16:00 ` [PATCH v4 19/38] platform/x86: intel_pmc_ipc: Make intel_pmc_ipc_simple_command() static Mika Westerberg
2020-01-21 16:00 ` [PATCH v4 20/38] platform/x86: intel_pmc_ipc: Make intel_pmc_ipc_raw_cmd() static Mika Westerberg
2020-01-21 16:00 ` [PATCH v4 21/38] platform/x86: intel_pmc_ipc: Drop intel_pmc_gcr_read() and intel_pmc_gcr_write() Mika Westerberg
2020-01-21 16:00 ` [PATCH v4 22/38] platform/x86: intel_pmc_ipc: Drop ipc_data_readb() Mika Westerberg
2020-01-21 16:00 ` [PATCH v4 23/38] platform/x86: intel_pmc_ipc: Get rid of unnecessary includes Mika Westerberg
2020-01-21 16:01 ` [PATCH v4 24/38] platform/x86: intel_scu_ipc: Add managed function to register SCU IPC Mika Westerberg
2020-01-21 16:01 ` [PATCH v4 25/38] platform/x86: intel_pmc_ipc: Start using " Mika Westerberg
2020-01-21 16:01 ` [PATCH v4 26/38] mfd: intel_soc_pmic: Add SCU IPC member to struct intel_soc_pmic Mika Westerberg
2020-01-21 16:01 ` [PATCH v4 27/38] mfd: intel_soc_pmic_bxtwc: Convert to use new SCU IPC API Mika Westerberg
2020-01-22 13:46 ` Greg Kroah-Hartman
2020-01-22 14:41 ` Mika Westerberg
2020-01-21 16:01 ` [PATCH v4 28/38] mfd: intel_soc_pmic_mrfld: " Mika Westerberg
2020-01-21 16:01 ` [PATCH v4 29/38] platform/x86: intel_telemetry: " Mika Westerberg
2020-01-21 16:01 ` [PATCH v4 30/38] platform/x86: intel_pmc_ipc: Drop intel_pmc_ipc_command() Mika Westerberg
2020-01-21 16:01 ` [PATCH v4 31/38] x86/platform/intel-mid: Add empty stubs for intel_scu_devices_[create|destroy]() Mika Westerberg
2020-01-21 16:01 ` [PATCH v4 32/38] platform/x86: intel_pmc_ipc: Move PCI IDs to intel_scu_pcidrv.c Mika Westerberg
2020-01-21 16:01 ` [PATCH v4 33/38] platform/x86: intel_pmc_ipc: Use octal permissions in sysfs attributes Mika Westerberg
2020-01-21 16:01 ` [PATCH v4 34/38] platform/x86: intel_pmc_ipc: Propagate error from kstrtoul() Mika Westerberg
2020-01-21 17:51 ` Andy Shevchenko
2020-01-21 16:01 ` [PATCH v4 35/38] platform/x86: intel_pmc_ipc: Switch to use driver->dev_groups Mika Westerberg
2020-01-21 16:01 ` [PATCH v4 36/38] platform/x86: intel_telemetry: Add telemetry_get_pltdata() Mika Westerberg
2020-01-21 18:00 ` Andy Shevchenko
2020-01-21 16:01 ` [PATCH v4 37/38] platform/x86: intel_pmc_ipc: Convert to MFD Mika Westerberg
2020-01-21 18:26 ` Andy Shevchenko
2020-01-22 10:55 ` Mika Westerberg
2020-01-22 12:34 ` Lee Jones [this message]
2020-01-22 12:53 ` Mika Westerberg
2020-01-22 13:27 ` Lee Jones
2020-01-22 14:45 ` Mika Westerberg
2020-01-23 8:01 ` Lee Jones
2020-01-23 8:56 ` Mika Westerberg
2020-01-21 16:01 ` [PATCH v4 38/38] MAINTAINERS: Update entry for Intel Broxton PMC driver Mika Westerberg
2020-01-21 16:21 ` [PATCH v4 00/38] platform/x86: Rework intel_scu_ipc and intel_pmc_ipc drivers Mark Brown
2020-01-21 16:33 ` Mika Westerberg
2020-01-21 16:45 ` Mark Brown
2020-01-21 17:00 ` Mika Westerberg
2020-01-21 17:06 ` Mark Brown
2020-01-21 17:21 ` Mika Westerberg
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=20200122123454.GL15507@dell \
--to=lee.jones@linaro.org \
--cc=andriy.shevchenko@linux.intel.com \
--cc=bp@alien8.de \
--cc=broonie@kernel.org \
--cc=david.e.box@linux.intel.com \
--cc=dvhart@infradead.org \
--cc=gregkh@linuxfoundation.org \
--cc=heikki.krogerus@linux.intel.com \
--cc=hpa@zytor.com \
--cc=linux-kernel@vger.kernel.org \
--cc=linux@roeck-us.net \
--cc=mika.westerberg@linux.intel.com \
--cc=mingo@redhat.com \
--cc=platform-driver-x86@vger.kernel.org \
--cc=qipeng.zha@intel.com \
--cc=tglx@linutronix.de \
--cc=wim@linux-watchdog.org \
--cc=x86@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.