From 56901d70aba9419702cd3f076124ed0ee261c053 Mon Sep 17 00:00:00 2001 From: Dr-Noob Date: Sat, 31 Aug 2024 18:40:35 +0100 Subject: [PATCH] [v1.06][ARM] Add more NXP SoCs --- src/arm/soc.c | 15 +++++++++++---- src/arm/socs.h | 9 ++++++++- 2 files changed, 19 insertions(+), 5 deletions(-) diff --git a/src/arm/soc.c b/src/arm/soc.c index 30e0f98..1da2046 100644 --- a/src/arm/soc.c +++ b/src/arm/soc.c @@ -947,6 +947,7 @@ bool match_dt(struct system_on_chip* soc, char* dt, int filelen, char* expected_ // substring. // TODO: Implement this by going trough NULL-separated fields rather than // using strstr. +// https://trac.gateworks.com/wiki/linux/devicetree struct system_on_chip* guess_soc_from_devtree(struct system_on_chip* soc) { int len; char* dt = get_devtree_compatible(&len); @@ -970,10 +971,16 @@ struct system_on_chip* guess_soc_from_devtree(struct system_on_chip* soc) { DT_EQ(dt, len, soc, "apple,t6030", "M3 Pro", SOC_APPLE_M3_PRO, 3) DT_EQ(dt, len, soc, "apple,t6031", "M3 Max", SOC_APPLE_M3_MAX, 3) DT_EQ(dt, len, soc, "apple,t6034", "M3 Max", SOC_APPLE_M3_MAX, 3) - // TODO: Add more NXP SoCs: https://elixir.bootlin.com/linux/v6.10.6/source/arch/arm64/boot/dts/freescale - // https://github.com/Dr-Noob/cpufetch/issues/261 - // https://www.nxp.com/docs/en/fact-sheet/IMX8MPLUSFS.pdf - DT_EQ(dt, len, soc, "imx8mp-nitrogen8mp", "i.MX 8M Plus", SOC_NXP_IMX8MP, 14) + // grep -oR -h --color -E '"fsl,.*' *.dtsi | sort | uniq | cut -d ',' -f1-2 | grep -v '-' + // https://elixir.bootlin.com/linux/v6.10.6/source/arch/arm64/boot/dts/freescale + DT_EQ(dt, len, soc, "fsl,imx8qm", "i.MX 8QuadMax", SOC_NXP_IMX8QM, 28) // https://www.nxp.com/docs/en/fact-sheet/IMX8FAMFS.pdf + DT_EQ(dt, len, soc, "fsl,imx8qp", "i.MX 8QuadPlus", SOC_NXP_IMX8QP, 28) // Actually not in dtsi, compatible string is just a guess + DT_EQ(dt, len, soc, "fsl,imx8mp", "i.MX 8M Plus", SOC_NXP_IMX8MP, 14) // https://www.nxp.com/docs/en/fact-sheet/IMX8MPLUSFS.pdf https://github.com/Dr-Noob/cpufetch/issues/261 + DT_EQ(dt, len, soc, "fsl,imx8mn", "i.MX 8M Nano", SOC_NXP_IMX8MN, NA) + DT_EQ(dt, len, soc, "fsl,imx8mm", "i.MX 8M Mini", SOC_NXP_IMX8MM, NA) // https://www.nxp.com/docs/en/fact-sheet/IMX8MMINIFS.pdf + DT_EQ(dt, len, soc, "fsl,imx8dxp", "i.MX 8DualXPlus", SOC_NXP_IMX8DXP, NA) + DT_EQ(dt, len, soc, "fsl,imx8qxp", "i.MX 8QuadXPlus", SOC_NXP_IMX8QXP, NA) + DT_EQ(dt, len, soc, "fsl,imx93", "i.MX 93", SOC_NXP_IMX93, NA) // TODO: Add more Amlogic SoCs: https://elixir.bootlin.com/linux/v6.10.6/source/arch/arm64/boot/dts/amlogic // https://github.com/Dr-Noob/cpufetch/issues/268 // https://www.amlogic.com/#Products/393/index.html diff --git a/src/arm/socs.h b/src/arm/socs.h index 0b55c21..2f2acc6 100644 --- a/src/arm/socs.h +++ b/src/arm/socs.h @@ -383,7 +383,14 @@ enum { // ALTRA SOC_AMPERE_ALTRA, // NXP + SOC_NXP_IMX8QM, + SOC_NXP_IMX8QP, SOC_NXP_IMX8MP, + SOC_NXP_IMX8MN, + SOC_NXP_IMX8MM, + SOC_NXP_IMX8DXP, + SOC_NXP_IMX8QXP, + SOC_NXP_IMX93, // AMLOGIC SOC_AMLOGIC_A311D, // UNKNOWN @@ -403,7 +410,7 @@ inline static VENDOR get_soc_vendor_from_soc(SOC soc) { else if(soc >= SOC_GOOGLE_TENSOR && soc <= SOC_GOOGLE_TENSOR_G3) return SOC_VENDOR_GOOGLE; else if(soc >= SOC_TEGRA_X1 && soc <= SOC_TEGRA_X1) return SOC_VENDOR_NVIDIA; else if(soc >= SOC_AMPERE_ALTRA && soc <= SOC_AMPERE_ALTRA) return SOC_VENDOR_AMPERE; - else if(soc >= SOC_NXP_IMX8MP && soc <= SOC_NXP_IMX8MP) return SOC_VENDOR_NXP; + else if(soc >= SOC_NXP_IMX8QM && soc <= SOC_NXP_IMX93) return SOC_VENDOR_NXP; else if(soc >= SOC_AMLOGIC_A311D && soc <= SOC_AMLOGIC_A311D) return SOC_VENDOR_AMLOGIC; return SOC_VENDOR_UNKNOWN; }