soc/tegra: fuse: Extract tegra_get_platform()
authorThierry Reding <treding@nvidia.com>
Thu, 17 Sep 2020 10:07:45 +0000 (12:07 +0200)
committerThierry Reding <treding@nvidia.com>
Fri, 18 Sep 2020 13:55:22 +0000 (15:55 +0200)
This function extracts the PRE_SI_PLATFORM field from the HIDREV
register and can be used to determine which platform the kernel runs on
(silicon, simulation, ...). Note that while only Tegra194 and later
define this field, it should be safe to call this on prior generations
as well since this field should read as 0, indicating silicon.

Reviewed-by: Jon Hunter <jonathanh@nvidia.com>
Signed-off-by: Thierry Reding <treding@nvidia.com>
drivers/soc/tegra/fuse/fuse-tegra.c
drivers/soc/tegra/fuse/tegra-apbmisc.c
include/soc/tegra/fuse.h

index d1f8dd0289e6cadd49c79b42888eeea8c6743f5b..7e6b6ee59120ff59ac36a90a3425e6d6e0e70f51 100644 (file)
@@ -336,7 +336,7 @@ static ssize_t platform_show(struct device *dev, struct device_attribute *attr,
         * platform type is silicon and all other non-zero values indicate
         * the type of simulation platform is being used.
         */
-       return sprintf(buf, "%d\n", (tegra_read_chipid() >> 20) & 0xf);
+       return sprintf(buf, "%d\n", tegra_get_platform());
 }
 
 static DEVICE_ATTR_RO(platform);
index 8e416ad91ee2cce7d2724703f7ec931b83e0b907..92a2d646c183be4e9ccd607bb8e217305b45075e 100644 (file)
@@ -47,6 +47,11 @@ u8 tegra_get_minor_rev(void)
        return (tegra_read_chipid() >> 16) & 0xf;
 }
 
+u8 tegra_get_platform(void)
+{
+       return (tegra_read_chipid() >> 20) & 0xf;
+}
+
 u32 tegra_read_straps(void)
 {
        WARN(!chipid, "Tegra ABP MISC not yet available\n");
index 1097feca41ed49d89239ecd09113d5ce3e4569b8..214908fc558184149a666cf5d189c35ab16b9571 100644 (file)
@@ -23,6 +23,7 @@
 
 u32 tegra_read_chipid(void);
 u8 tegra_get_chip_id(void);
+u8 tegra_get_platform(void);
 
 enum tegra_revision {
        TEGRA_REVISION_UNKNOWN = 0,