[PATCH] soc/tegra: fuse: Expose Tegra production status

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



From: Bitan Biswas <bbiswas@xxxxxxxxxx>

For Tegra194 and Tegra234 devices there is a production fuse register
that indicates if the device is a production device. Expose the
production status of the chip via the sysfs for Tegra194 and Tegra234
devices. Note that '0' implies not production or unknown and '1'
indicates the device is a production device.

Signed-off-by: Bitan Biswas <bbiswas@xxxxxxxxxx>
[ Re-worked for upstream submission by Jon Hunter <jonathanh@xxxxxxxxxx> ]
Signed-off-by: Jon Hunter <jonathanh@xxxxxxxxxx>
---
 drivers/soc/tegra/fuse/fuse-tegra.c | 15 +++++++++++++++
 include/soc/tegra/fuse.h            |  1 +
 2 files changed, 16 insertions(+)

diff --git a/drivers/soc/tegra/fuse/fuse-tegra.c b/drivers/soc/tegra/fuse/fuse-tegra.c
index b0a8405dbdb1..276b22144ff5 100644
--- a/drivers/soc/tegra/fuse/fuse-tegra.c
+++ b/drivers/soc/tegra/fuse/fuse-tegra.c
@@ -426,6 +426,20 @@ static ssize_t minor_show(struct device *dev, struct device_attribute *attr,
 
 static DEVICE_ATTR_RO(minor);
 
+static ssize_t production_show(struct device *dev,
+			       struct device_attribute *attr, char *buf)
+{
+	u32 reg = 0;
+
+	if (tegra_is_silicon())
+		if (tegra_fuse_readl(TEGRA_FUSE_PRODUCTION_MODE, &reg))
+			dev_err(dev, "failed to read production fuse!\n");
+
+	return sprintf(buf, "%d\n", reg);
+}
+
+static DEVICE_ATTR_RO(production);
+
 static struct attribute *tegra_soc_attr[] = {
 	&dev_attr_major.attr,
 	&dev_attr_minor.attr,
@@ -456,6 +470,7 @@ static struct attribute *tegra194_soc_attr[] = {
 	&dev_attr_major.attr,
 	&dev_attr_minor.attr,
 	&dev_attr_platform.attr,
+	&dev_attr_production.attr,
 	NULL,
 };
 
diff --git a/include/soc/tegra/fuse.h b/include/soc/tegra/fuse.h
index 67d2bc856fbc..d035e04cb869 100644
--- a/include/soc/tegra/fuse.h
+++ b/include/soc/tegra/fuse.h
@@ -18,6 +18,7 @@
 #define TEGRA194	0x19
 #define TEGRA234	0x23
 
+#define TEGRA_FUSE_PRODUCTION_MODE 0x0
 #define TEGRA_FUSE_SKU_CALIB_0	0xf0
 #define TEGRA30_FUSE_SATA_CALIB	0x124
 #define TEGRA_FUSE_USB_CALIB_EXT_0 0x250
-- 
2.25.1




[Index of Archives]     [ARM Kernel]     [Linux ARM]     [Linux ARM MSM]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux