linux-arm-kernel.lists.infradead.org archive mirror
 help / color / mirror / Atom feed
* [PATCH] mfd: Add Freescale i.MX8qxp Control and Status Registers (CSR) module driver
@ 2022-08-14  8:04 Liu Ying
  2022-10-06  3:21 ` Liu Ying
  0 siblings, 1 reply; 2+ messages in thread
From: Liu Ying @ 2022-08-14  8:04 UTC (permalink / raw)
  To: linux-kernel, linux-arm-kernel
  Cc: lee.jones, shawnguo, s.hauer, kernel, festevam, linux-imx

Freescale i.MX8qxp Control and Status Registers (CSR) module is a system
controller. It represents a set of miscellaneous registers of a specific
subsystem. It may provide control and/or status report interfaces to a
mix of standalone hardware devices within that subsystem.

The CSR module in i.MX8qm/qxp SoCs is a child node of a simple power-managed
bus(i.MX8qxp pixel link MSI bus). To propagate power management operations
of the CSR module's child devices to that simple power-managed bus, add a
dedicated driver for the CSR module. Also, the driver would populate the CSR
module's child devices.

Signed-off-by: Liu Ying <victor.liu@nxp.com>
---
The Freescale i.MX8qxp CSR DT bindings is at
Documentation/devicetree/bindings/mfd/fsl,imx8qxp-csr.yaml.

 drivers/mfd/Kconfig           | 10 +++++++
 drivers/mfd/Makefile          |  1 +
 drivers/mfd/fsl-imx8qxp-csr.c | 53 +++++++++++++++++++++++++++++++++++
 3 files changed, 64 insertions(+)
 create mode 100644 drivers/mfd/fsl-imx8qxp-csr.c

diff --git a/drivers/mfd/Kconfig b/drivers/mfd/Kconfig
index 3b59456f5545..45af4a98c02f 100644
--- a/drivers/mfd/Kconfig
+++ b/drivers/mfd/Kconfig
@@ -499,6 +499,16 @@ config MFD_MX25_TSADC
 	  i.MX25 processors. They consist of a conversion queue for general
 	  purpose ADC and a queue for Touchscreens.
 
+config MFD_MX8QXP_CSR
+	tristate "Freescale i.MX8qxp Control and Status Registers (CSR) Module"
+	depends on (ARCH_MXC && OF) || COMPILE_TEST
+	help
+	  Enable support for Freescale i.MX8qm/qxp Control and Status Registers
+	  (CSR) Module. As a system controller, CSR represents a set of
+	  miscellaneous registers of a specific subsystem. It may provide
+	  control and/or status report interfaces to a mix of standalone
+	  hardware devices within that subsystem.
+
 config MFD_HI6421_PMIC
 	tristate "HiSilicon Hi6421 PMU/Codec IC"
 	depends on OF
diff --git a/drivers/mfd/Makefile b/drivers/mfd/Makefile
index 858cacf659d6..c792abe24906 100644
--- a/drivers/mfd/Makefile
+++ b/drivers/mfd/Makefile
@@ -113,6 +113,7 @@ obj-$(CONFIG_MFD_TWL4030_AUDIO)	+= twl4030-audio.o
 obj-$(CONFIG_TWL6040_CORE)	+= twl6040.o
 
 obj-$(CONFIG_MFD_MX25_TSADC)	+= fsl-imx25-tsadc.o
+obj-$(CONFIG_MFD_MX8QXP_CSR)	+= fsl-imx8qxp-csr.o
 
 obj-$(CONFIG_MFD_MC13XXX)	+= mc13xxx-core.o
 obj-$(CONFIG_MFD_MC13XXX_SPI)	+= mc13xxx-spi.o
diff --git a/drivers/mfd/fsl-imx8qxp-csr.c b/drivers/mfd/fsl-imx8qxp-csr.c
new file mode 100644
index 000000000000..3915d3d6ca65
--- /dev/null
+++ b/drivers/mfd/fsl-imx8qxp-csr.c
@@ -0,0 +1,53 @@
+// SPDX-License-Identifier: GPL-2.0+
+
+/*
+ * Copyright 2022 NXP
+ */
+
+#include <linux/module.h>
+#include <linux/of_platform.h>
+#include <linux/platform_device.h>
+#include <linux/pm_runtime.h>
+
+static int imx8qxp_csr_probe(struct platform_device *pdev)
+{
+	int ret;
+
+	pm_runtime_enable(&pdev->dev);
+
+	ret = devm_of_platform_populate(&pdev->dev);
+	if (ret < 0) {
+		dev_err(&pdev->dev, "failed to populate sub-devices: %d\n", ret);
+		pm_runtime_disable(&pdev->dev);
+	}
+
+	return ret;
+}
+
+static int imx8qxp_csr_remove(struct platform_device *pdev)
+{
+	pm_runtime_disable(&pdev->dev);
+	return 0;
+}
+
+static const struct of_device_id imx8qxp_csr_of_match[] = {
+	{ .compatible = "fsl,imx8qxp-mipi-lvds-csr", },
+	{ .compatible = "fsl,imx8qm-lvds-csr", },
+	{ /* sentinel */ }
+};
+MODULE_DEVICE_TABLE(of, imx8qxp_csr_of_match);
+
+static struct platform_driver imx8qxp_csr_driver = {
+	.probe = imx8qxp_csr_probe,
+	.remove = imx8qxp_csr_remove,
+	.driver = {
+		.name = "imx8qxp-csr",
+		.of_match_table = imx8qxp_csr_of_match,
+	},
+};
+
+module_platform_driver(imx8qxp_csr_driver);
+
+MODULE_DESCRIPTION("Freescale i.MX8qm/qxp Control and Status Registers Module Driver");
+MODULE_AUTHOR("Liu Ying <victor.liu@nxp.com>");
+MODULE_LICENSE("GPL v2");
-- 
2.37.1


_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

^ permalink raw reply related	[flat|nested] 2+ messages in thread

* Re: [PATCH] mfd: Add Freescale i.MX8qxp Control and Status Registers (CSR) module driver
  2022-08-14  8:04 [PATCH] mfd: Add Freescale i.MX8qxp Control and Status Registers (CSR) module driver Liu Ying
@ 2022-10-06  3:21 ` Liu Ying
  0 siblings, 0 replies; 2+ messages in thread
From: Liu Ying @ 2022-10-06  3:21 UTC (permalink / raw)
  To: linux-kernel, linux-arm-kernel
  Cc: lee.jones, shawnguo, s.hauer, kernel, festevam, linux-imx

On Sun, 2022-08-14 at 16:04 +0800, Liu Ying wrote:
> Freescale i.MX8qxp Control and Status Registers (CSR) module is a
> system
> controller. It represents a set of miscellaneous registers of a
> specific
> subsystem. It may provide control and/or status report interfaces to
> a
> mix of standalone hardware devices within that subsystem.
> 
> The CSR module in i.MX8qm/qxp SoCs is a child node of a simple power-
> managed
> bus(i.MX8qxp pixel link MSI bus). To propagate power management
> operations
> of the CSR module's child devices to that simple power-managed bus,
> add a
> dedicated driver for the CSR module. Also, the driver would populate
> the CSR
> module's child devices.
> 
> Signed-off-by: Liu Ying <victor.liu@nxp.com>
> ---
> The Freescale i.MX8qxp CSR DT bindings is at
> Documentation/devicetree/bindings/mfd/fsl,imx8qxp-csr.yaml.
> 
>  drivers/mfd/Kconfig           | 10 +++++++
>  drivers/mfd/Makefile          |  1 +
>  drivers/mfd/fsl-imx8qxp-csr.c | 53
> +++++++++++++++++++++++++++++++++++
>  3 files changed, 64 insertions(+)
>  create mode 100644 drivers/mfd/fsl-imx8qxp-csr.c
> 

Gentle ping...

Regards,
Liu Ying


_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

^ permalink raw reply	[flat|nested] 2+ messages in thread

end of thread, other threads:[~2022-10-06  3:24 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2022-08-14  8:04 [PATCH] mfd: Add Freescale i.MX8qxp Control and Status Registers (CSR) module driver Liu Ying
2022-10-06  3:21 ` Liu Ying

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).