Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit d591fdf8 authored by Danny Huang's avatar Danny Huang Committed by Stephen Warren
Browse files

ARM: tegra: expose chip ID and revision



Expose Tegra chip ID and revision in /sys/devices/soc for user mode
usage

Signed-off-by: default avatarDanny Huang <dahuang@nvidia.com>
Signed-off-by: default avatarStephen Warren <swarren@nvidia.com>
parent e562b865
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -675,6 +675,7 @@ config ARCH_TEGRA
	select HAVE_CLK
	select HAVE_SMP
	select MIGHT_HAVE_CACHE_L2X0
	select SOC_BUS
	select SPARSE_IRQ
	select USE_OF
	help
+28 −1
Original line number Diff line number Diff line
@@ -33,6 +33,8 @@
#include <linux/io.h>
#include <linux/i2c.h>
#include <linux/i2c-tegra.h>
#include <linux/slab.h>
#include <linux/sys_soc.h>
#include <linux/usb/tegra_usb_phy.h>

#include <asm/mach-types.h>
@@ -42,6 +44,7 @@

#include "board.h"
#include "common.h"
#include "fuse.h"
#include "iomap.h"

static struct tegra_ehci_platform_data tegra_ehci1_pdata = {
@@ -80,12 +83,36 @@ static struct of_dev_auxdata tegra20_auxdata_lookup[] __initdata = {

static void __init tegra_dt_init(void)
{
	struct soc_device_attribute *soc_dev_attr;
	struct soc_device *soc_dev;
	struct device *parent = NULL;

	soc_dev_attr = kzalloc(sizeof(*soc_dev_attr), GFP_KERNEL);
	if (!soc_dev_attr)
		goto out;

	soc_dev_attr->family = kasprintf(GFP_KERNEL, "Tegra");
	soc_dev_attr->revision = kasprintf(GFP_KERNEL, "%d", tegra_revision);
	soc_dev_attr->soc_id = kasprintf(GFP_KERNEL, "%d", tegra_chip_id);

	soc_dev = soc_device_register(soc_dev_attr);
	if (IS_ERR(soc_dev)) {
		kfree(soc_dev_attr->family);
		kfree(soc_dev_attr->revision);
		kfree(soc_dev_attr->soc_id);
		kfree(soc_dev_attr);
		goto out;
	}

	parent = soc_device_to_device(soc_dev);

	/*
	 * Finished with the static registrations now; fill in the missing
	 * devices
	 */
out:
	of_platform_populate(NULL, of_default_bus_match_table,
				tegra20_auxdata_lookup, NULL);
				tegra20_auxdata_lookup, parent);
}

static void __init trimslice_init(void)