diff options
author | Chris Johnson <cwj@nvidia.com> | 2012-03-09 17:52:50 -0800 |
---|---|---|
committer | Simone Willett <swillett@nvidia.com> | 2012-03-20 14:02:55 -0700 |
commit | b309bc41bd5e461bbd2064cf90d77e55bf18cdaa (patch) | |
tree | f5e5cad6dbe9ee2e7a8dfbbb175cda5e2e5e0252 | |
parent | bda291df6347efb06cf15de0bbc09ce18ef757bb (diff) |
arm: tegra: fuse: let ODM production mode be world readable
Also, fixup some of the bit offsets that were leading to incorrect
values being returned from get_fuse() on T20/T30.
Bug 912862
Signed-off-by: Chris Johnson <cwj@nvidia.com>
Reviewed-on: http://git-master/r/89283
(cherry picked from commit f6323c7f32017b51202d478671cbf366beb0b0f5)
Change-Id: Ieb9f92e36760cbc470d63257d26c09388cec7e1e
Reviewed-on: http://git-master/r/90762
Reviewed-by: Automatic_Commit_Validation_User
Reviewed-by: Chris Johnson <cwj@nvidia.com>
Tested-by: Chris Johnson <cwj@nvidia.com>
Reviewed-by: Yu-Huan Hsu <yhsu@nvidia.com>
-rw-r--r-- | arch/arm/mach-tegra/tegra_odm_fuses.c | 65 |
1 files changed, 41 insertions, 24 deletions
diff --git a/arch/arm/mach-tegra/tegra_odm_fuses.c b/arch/arm/mach-tegra/tegra_odm_fuses.c index dc052ac3021c..5dcf24e497b2 100644 --- a/arch/arm/mach-tegra/tegra_odm_fuses.c +++ b/arch/arm/mach-tegra/tegra_odm_fuses.c @@ -81,7 +81,7 @@ static struct kobj_attribute jtagdis_attr = __ATTR(jtag_disable, 0440, fuse_show, fuse_store); static struct kobj_attribute odm_prod_mode_attr = - __ATTR(odm_production_mode, 0440, fuse_show, fuse_store); + __ATTR(odm_production_mode, 0444, fuse_show, fuse_store); static struct kobj_attribute sec_boot_dev_cfg_attr = __ATTR(sec_boot_dev_cfg, 0440, fuse_show, fuse_store); @@ -125,61 +125,79 @@ struct param_info { #if defined(CONFIG_ARCH_TEGRA_2x_SOC) +/* private_key4 */ #define DEVKEY_START_OFFSET 0x12 -#define DEVKEY_START_BIT 0x08 +#define DEVKEY_START_BIT 8 +/* arm_debug_dis */ #define JTAG_START_OFFSET 0x0 -#define JTAG_START_BIT 0x24 +#define JTAG_START_BIT 24 +/* security_mode */ #define ODM_PROD_START_OFFSET 0x0 -#define ODM_PROD_START_BIT 0x23 +#define ODM_PROD_START_BIT 23 +/* boot_device_info */ #define SB_DEVCFG_START_OFFSET 0x14 -#define SB_DEVCFG_START_BIT 0x08 +#define SB_DEVCFG_START_BIT 8 +/* reserved_sw[2:0] */ #define SB_DEVSEL_START_OFFSET 0x14 -#define SB_DEVSEL_START_BIT 0x24 +#define SB_DEVSEL_START_BIT 24 +/* private_key0 -> private_key3 */ #define SBK_START_OFFSET 0x0A -#define SBK_START_BIT 0x08 +#define SBK_START_BIT 8 +/* reserved_sw[7:4] */ #define SW_RESERVED_START_OFFSET 0x14 -#define SW_RESERVED_START_BIT 0x28 +#define SW_RESERVED_START_BIT 28 +/* reserved_sw[3] */ #define IGNORE_DEVSEL_START_OFFSET 0x14 -#define IGNORE_DEVSEL_START_BIT 0x27 +#define IGNORE_DEVSEL_START_BIT 27 -#define ODM_RESERVED_DEVSEL_START_OFFSET 0X16 -#define ODM_RESERVED_START_BIT 0X4 +/* reserved_odm0 -> reserved_odm7 */ +#define ODM_RESERVED_DEVSEL_START_OFFSET 0x16 +#define ODM_RESERVED_START_BIT 4 #elif defined(CONFIG_ARCH_TEGRA_3x_SOC) -#define DEVKEY_START_OFFSET 0x14 -#define DEVKEY_START_BIT 0x22 +/* private_key4 */ +#define DEVKEY_START_OFFSET 0x16 +#define DEVKEY_START_BIT 22 +/* arm_debug_dis */ #define JTAG_START_OFFSET 0x0 -#define JTAG_START_BIT 0x24 +#define JTAG_START_BIT 24 +/* security_mode */ #define ODM_PROD_START_OFFSET 0x0 -#define ODM_PROD_START_BIT 0x23 +#define ODM_PROD_START_BIT 23 +/* boot_device_info */ #define SB_DEVCFG_START_OFFSET 0x18 -#define SB_DEVCFG_START_BIT 0x22 +#define SB_DEVCFG_START_BIT 22 +/* reserved_sw[2:0] */ #define SB_DEVSEL_START_OFFSET 0x1A -#define SB_DEVSEL_START_BIT 0x06 +#define SB_DEVSEL_START_BIT 6 +/* private_key0 -> private_key3 */ #define SBK_START_OFFSET 0x0E -#define SBK_START_BIT 0x22 +#define SBK_START_BIT 22 +/* reserved_sw[7:4] */ #define SW_RESERVED_START_OFFSET 0x1A -#define SW_RESERVED_START_BIT 0x10 +#define SW_RESERVED_START_BIT 10 +/* reserved_sw[3] */ #define IGNORE_DEVSEL_START_OFFSET 0x1A -#define IGNORE_DEVSEL_START_BIT 0x09 +#define IGNORE_DEVSEL_START_BIT 9 -#define ODM_RESERVED_DEVSEL_START_OFFSET 0X1A -#define ODM_RESERVED_START_BIT 0X14 +/* reserved_odm0 -> reserved_odm7 */ +#define ODM_RESERVED_DEVSEL_START_OFFSET 0x1A +#define ODM_RESERVED_START_BIT 14 #else @@ -931,14 +949,13 @@ static int __init tegra_fuse_program_init(void) { devkey_attr.attr.mode = 0640; jtagdis_attr.attr.mode = 0640; - odm_prod_mode_attr.attr.mode = 0640; sec_boot_dev_cfg_attr.attr.mode = 0640; sec_boot_dev_sel_attr.attr.mode = 0640; sbk_attr.attr.mode = 0640; sw_rsvd_attr.attr.mode = 0640; ignore_dev_sel_straps_attr.attr.mode = 0640; odm_rsvd_attr.attr.mode = 0640; - odm_prod_mode_attr.attr.mode = 0640; + odm_prod_mode_attr.attr.mode = 0644; } CHK_ERR(sysfs_create_file(fuse_kobj, &odm_prod_mode_attr.attr)); |