From patchwork Mon Oct 12 14:51:09 2009 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Peter 'p2' De Schrijver X-Patchwork-Id: 53143 X-Patchwork-Delegate: khilman@deeprootsystems.com Received: from vger.kernel.org (vger.kernel.org [209.132.176.167]) by demeter.kernel.org (8.14.2/8.14.2) with ESMTP id n9CEu5XO016136 for ; Mon, 12 Oct 2009 14:56:07 GMT Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S932417AbZJLOxA (ORCPT ); Mon, 12 Oct 2009 10:53:00 -0400 Received: (majordomo@vger.kernel.org) by vger.kernel.org id S932416AbZJLOw7 (ORCPT ); Mon, 12 Oct 2009 10:52:59 -0400 Received: from smtp.nokia.com ([192.100.105.134]:30254 "EHLO mgw-mx09.nokia.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S932415AbZJLOw5 (ORCPT ); Mon, 12 Oct 2009 10:52:57 -0400 Received: from vaebh105.NOE.Nokia.com (vaebh105.europe.nokia.com [10.160.244.31]) by mgw-mx09.nokia.com (Switch-3.3.3/Switch-3.3.3) with ESMTP id n9CEpAjH028557 for ; Mon, 12 Oct 2009 09:51:30 -0500 Received: from vaebh104.NOE.Nokia.com ([10.160.244.30]) by vaebh105.NOE.Nokia.com with Microsoft SMTPSVC(6.0.3790.3959); Mon, 12 Oct 2009 17:51:15 +0300 Received: from mgw-sa01.ext.nokia.com ([147.243.1.47]) by vaebh104.NOE.Nokia.com over TLS secured channel with Microsoft SMTPSVC(6.0.3790.3959); Mon, 12 Oct 2009 17:51:14 +0300 Received: from localhost.localdomain (esdhcp041183.research.nokia.com [172.21.41.183]) by mgw-sa01.ext.nokia.com (Switch-3.3.3/Switch-3.3.3) with ESMTP id n9CEpDmw012930; Mon, 12 Oct 2009 17:51:13 +0300 From: "Peter 'p2' De Schrijver" To: linux-omap@vger.kernel.org Cc: "De-Schrijver Peter (Nokia-D/Helsinki)" , "Peter 'p2' De Schrijver" Subject: [PATCH] OMAP3 PM export chip IDCODE, Production ID and Die ID Date: Mon, 12 Oct 2009 17:51:09 +0300 Message-Id: <1255359069-9621-1-git-send-email-peter.de-schrijver@nokia.com> X-Mailer: git-send-email 1.6.2.4 X-OriginalArrivalTime: 12 Oct 2009 14:51:14.0762 (UTC) FILETIME=[726962A0:01CA4B4B] X-Nokia-AV: Clean Sender: linux-omap-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-omap@vger.kernel.org diff --git a/arch/arm/mach-omap2/id.c b/arch/arm/mach-omap2/id.c index 2c5e0a3..97670e2 100644 --- a/arch/arm/mach-omap2/id.c +++ b/arch/arm/mach-omap2/id.c @@ -70,6 +70,10 @@ EXPORT_SYMBOL(omap_type); /*----------------------------------------------------------------------------*/ #define OMAP_TAP_IDCODE 0x0204 +#define OMAP_TAP_PROD_ID_0 0x0208 +#define OMAP_TAP_PROD_ID_1 0x020c +#define OMAP_TAP_PROD_ID_2 0x0210 +#define OMAP_TAP_PROD_ID_3 0x0214 #define OMAP_TAP_DIE_ID_0 0x0218 #define OMAP_TAP_DIE_ID_1 0x021C #define OMAP_TAP_DIE_ID_2 0x0220 @@ -77,6 +81,10 @@ EXPORT_SYMBOL(omap_type); #define read_tap_reg(reg) __raw_readl(tap_base + (reg)) +static ssize_t idcode_show(struct kobject *, struct kobj_attribute *, char *); +static struct kobj_attribute idcode_attr = __ATTR(idcode, 0444, idcode_show, + NULL); + struct omap_id { u16 hawkeye; /* Silicon type (Hawkeye id) */ u8 dev; /* Device type from production_id reg */ @@ -96,6 +104,23 @@ static struct omap_id omap_ids[] __initdata = { static void __iomem *tap_base; static u16 tap_prod_id; +static ssize_t idcode_show(struct kobject *kobj, struct kobj_attribute *attr, + char *buf) +{ + return sprintf(buf, "IDCODE: %08x\nProduction ID: %08x %08x %08x %08x\n" + "Die ID: %08x %08x %08x %08x\n", + read_tap_reg(OMAP_TAP_IDCODE), + read_tap_reg(OMAP_TAP_PROD_ID_0), + read_tap_reg(OMAP_TAP_PROD_ID_1), + read_tap_reg(OMAP_TAP_PROD_ID_2), + read_tap_reg(OMAP_TAP_PROD_ID_3), + read_tap_reg(OMAP_TAP_DIE_ID_0), + read_tap_reg(OMAP_TAP_DIE_ID_1), + read_tap_reg(OMAP_TAP_DIE_ID_2), + read_tap_reg(OMAP_TAP_DIE_ID_3)); + +} + void __init omap24xx_check_revision(void) { int i, j; @@ -259,3 +284,14 @@ void __init omap2_set_globals_tap(struct omap_globals *omap2_globals) else tap_prod_id = 0x0208; } + +void __init export_omapid(void) +{ + int error; + + error = sysfs_create_file(power_kobj, &idcode_attr.attr); + if (error) + printk(KERN_ERR "sysfs_create_file failed: %d\n", error); +} + +late_initcall(export_omapid);