On Wed, Jan 08, 2020 at 02:41:25PM +0300, Mika Westerberg wrote: > Hi, > > Currently both intel_scu_ipc.c and intel_pmc_ipc.c implement the same SCU > IPC communications with minor differences. This duplication does not make > much sense so this series reworks the two drivers so that there is only a > single implementation of the SCU IPC. In addition to that the API will be > updated to take SCU instance pointer as an argument, and most of the > callers will be converted to this new API. The old API is left there but > the plan is to get rid the callers and then the old API as well (this is > something we are working with Andy Shevchenko). > > The intel_pmc_ipc.c is then moved under MFD which suits better for this > kind of a driver that pretty much sets up the SCU IPC and then creates a > bunch of platform devices for the things sitting behind the PMC. The driver > is renamed to intel_pmc_bxt.c which should follow the existing conventions > under drivers/mfd (and it is only meant for Intel Broxton derivatives). > > Previous version of the series: > > https://www.spinics.net/lists/platform-driver-x86/msg20359.html > > Changes from the previous version: > > * Update changelog of patch 16 according to what the patch actually does. > * Add kernel-doc for struct intel_soc_pmic. > * Move octal permission patch to be before MFD conversion. > * Convert the intel_pmc_bxt.c to MFD APIs whilst it is being moved under > drivers/mfd. Hmm... I didn't see you appended Lee's ACKs. > > I'm including all x86 maintainers just to be sure they are aware of this as > I'm not sure if x86@xxxxxxxxxx reaches them all. Let me know if you have > issues with this series. > > I would prefer this to be merged through platform/x86 or MFD trees assuming > there are no objections. I'm almost reviewed it (few patches left which I plan to do soon), I'm fine if it goes via other tree. > > I have tested this on Intel Edison (Merrifield) and Joule (Broxton-M). > > Mika Westerberg (36): > platform/x86: intel_mid_powerbtn: Take a copy of ddata > platform/x86: intel_scu_ipcutil: Remove default y from Kconfig > platform/x86: intel_scu_ipc: Add constants for register offsets > platform/x86: intel_scu_ipc: Remove Lincroft support > platform/x86: intel_scu_ipc: Drop intel_scu_ipc_i2c_cntrl() > platform/x86: intel_scu_ipc: Fix interrupt support > platform/x86: intel_scu_ipc: Sleeping is fine when polling > platform/x86: intel_scu_ipc: Drop unused prototype intel_scu_ipc_fw_update() > platform/x86: intel_scu_ipc: Drop unused macros > platform/x86: intel_scu_ipc: Drop intel_scu_ipc_io[read|write][8|16]() > platform/x86: intel_scu_ipc: Drop intel_scu_ipc_raw_command() > platform/x86: intel_scu_ipc: Split out SCU IPC functionality from the SCU driver > platform/x86: intel_scu_ipc: Reformat kernel-doc comments of exported functions > platform/x86: intel_scu_ipc: Introduce new SCU IPC API > platform/x86: intel_mid_powerbtn: Convert to use new SCU IPC API > watchdog: intel-mid_wdt: Convert to use new SCU IPC API > platform/x86: intel_scu_ipcutil: Convert to use new SCU IPC API > platform/x86: intel_pmc_ipc: Make intel_pmc_gcr_update() static > platform/x86: intel_pmc_ipc: Make intel_pmc_ipc_simple_command() static > platform/x86: intel_pmc_ipc: Make intel_pmc_ipc_raw_cmd() static > platform/x86: intel_pmc_ipc: Drop intel_pmc_gcr_read() and intel_pmc_gcr_write() > platform/x86: intel_pmc_ipc: Drop ipc_data_readb() > platform/x86: intel_pmc_ipc: Get rid of unnecessary includes > platform/x86: intel_scu_ipc: Add function to remove SCU IPC > platform/x86: intel_pmc_ipc: Start using SCU IPC > mfd: intel_soc_pmic: Add SCU IPC member to struct intel_soc_pmic > mfd: intel_soc_pmic_bxtwc: Convert to use new SCU IPC API > mfd: intel_soc_pmic_mrfld: Convert to use new SCU IPC API > platform/x86: intel_telemetry: Convert to use new SCU IPC API > platform/x86: intel_pmc_ipc: Drop intel_pmc_ipc_command() > x86/platform/intel-mid: Add empty stubs for intel_scu_devices_[create|destroy]() > platform/x86: intel_pmc_ipc: Move PCI IDs to intel_scu_pcidrv.c > platform/x86: intel_pmc_ipc: Use octal permissions in sysfs attributes > platform/x86: intel_pmc_ipc: Convert to MFD > mfd: intel_pmc_bxt: Switch to use driver->dev_groups > MAINTAINERS: Update entry for Intel Broxton PMC driver > > MAINTAINERS | 13 +- > arch/x86/Kconfig | 2 +- > arch/x86/include/asm/intel-mid.h | 9 +- > arch/x86/include/asm/intel_pmc_ipc.h | 91 -- > arch/x86/include/asm/intel_scu_ipc.h | 104 +- > arch/x86/include/asm/intel_scu_ipc_legacy.h | 76 ++ > arch/x86/include/asm/intel_telemetry.h | 3 + > drivers/mfd/Kconfig | 18 +- > drivers/mfd/Makefile | 1 + > drivers/mfd/intel_pmc_bxt.c | 539 +++++++++ > drivers/mfd/intel_soc_pmic_bxtwc.c | 22 +- > drivers/mfd/intel_soc_pmic_mrfld.c | 10 +- > drivers/platform/x86/Kconfig | 49 +- > drivers/platform/x86/Makefile | 2 +- > drivers/platform/x86/intel_mid_powerbtn.c | 20 +- > drivers/platform/x86/intel_pmc_ipc.c | 1031 ----------------- > drivers/platform/x86/intel_scu_ipc.c | 681 +++++------ > drivers/platform/x86/intel_scu_ipcutil.c | 43 +- > drivers/platform/x86/intel_scu_pcidrv.c | 75 ++ > .../platform/x86/intel_telemetry_debugfs.c | 2 +- > drivers/platform/x86/intel_telemetry_pltdrv.c | 101 +- > drivers/usb/typec/tcpm/Kconfig | 2 +- > drivers/watchdog/intel-mid_wdt.c | 53 +- > include/linux/mfd/intel_pmc_bxt.h | 50 + > include/linux/mfd/intel_soc_pmic.h | 15 + > 25 files changed, 1319 insertions(+), 1693 deletions(-) > delete mode 100644 arch/x86/include/asm/intel_pmc_ipc.h > create mode 100644 arch/x86/include/asm/intel_scu_ipc_legacy.h > create mode 100644 drivers/mfd/intel_pmc_bxt.c > delete mode 100644 drivers/platform/x86/intel_pmc_ipc.c > create mode 100644 drivers/platform/x86/intel_scu_pcidrv.c > create mode 100644 include/linux/mfd/intel_pmc_bxt.h > > -- > 2.24.1 > -- With Best Regards, Andy Shevchenko