diff mbox series

soc/imx: Read imx8mm soc revision from anatop

Message ID 8a13e322830af83b1fca13178c3fb74d762d3538.1556113858.git.leonard.crestez@nxp.com (mailing list archive)
State Superseded
Headers show
Series soc/imx: Read imx8mm soc revision from anatop | expand

Commit Message

Leonard Crestez April 24, 2019, 1:53 p.m. UTC
Like on imx6/7 we can read version information from a register in
anatop, and in the same format.

Signed-off-by: Leonard Crestez <leonard.crestez@nxp.com>
---
 drivers/soc/imx/soc-imx8.c | 29 +++++++++++++++++++++++++++++
 1 file changed, 29 insertions(+)

Based on ATF code.

Comments

Fabio Estevam April 24, 2019, 1:57 p.m. UTC | #1
On Wed, Apr 24, 2019 at 10:53 AM Leonard Crestez
<leonard.crestez@nxp.com> wrote:

> +static u32 __init imx8mm_soc_revision(void)
> +{
> +       struct device_node *np;
> +       void __iomem *anatop_base;
> +       u32 rev = 0;

Just a nit, but no need to initialize rev to 0.

Reviewed-by: Fabio Estevam <festevam@gmail.com>
diff mbox series

Patch

diff --git a/drivers/soc/imx/soc-imx8.c b/drivers/soc/imx/soc-imx8.c
index fc6429f9170a..9ca43c231aa1 100644
--- a/drivers/soc/imx/soc-imx8.c
+++ b/drivers/soc/imx/soc-imx8.c
@@ -14,10 +14,13 @@ 
 #define REV_B1				0x21
 
 #define IMX8MQ_SW_INFO_B1		0x40
 #define IMX8MQ_SW_MAGIC_B1		0xff0055aa
 
+/* Same as ANADIG_DIGPROG_IMX7D */
+#define ANADIG_DIGPROG_IMX8MM	0x800
+
 struct imx8_soc_data {
 	char *name;
 	u32 (*soc_revision)(void);
 };
 
@@ -44,17 +47,43 @@  static u32 __init imx8mq_soc_revision(void)
 out:
 	of_node_put(np);
 	return rev;
 }
 
+static u32 __init imx8mm_soc_revision(void)
+{
+	struct device_node *np;
+	void __iomem *anatop_base;
+	u32 rev = 0;
+
+	np = of_find_compatible_node(NULL, NULL, "fsl,imx8mm-anatop");
+	if (!np)
+		return 0;
+
+	anatop_base = of_iomap(np, 0);
+	WARN_ON(!anatop_base);
+
+	rev = readl_relaxed(anatop_base + ANADIG_DIGPROG_IMX8MM);
+
+	iounmap(anatop_base);
+	of_node_put(np);
+	return rev;
+}
+
 static const struct imx8_soc_data imx8mq_soc_data = {
 	.name = "i.MX8MQ",
 	.soc_revision = imx8mq_soc_revision,
 };
 
+static const struct imx8_soc_data imx8mm_soc_data = {
+	.name = "i.MX8MM",
+	.soc_revision = imx8mm_soc_revision,
+};
+
 static const struct of_device_id imx8_soc_match[] = {
 	{ .compatible = "fsl,imx8mq", .data = &imx8mq_soc_data, },
+	{ .compatible = "fsl,imx8mm", .data = &imx8mm_soc_data, },
 	{ }
 };
 
 #define imx8_revision(soc_rev) \
 	soc_rev ? \