summaryrefslogtreecommitdiff
path: root/arch/arm/mach-tegra/tegra_odm_fuses.c
diff options
context:
space:
mode:
authorLaxman Dewangan <ldewangan@nvidia.com>2012-09-02 14:25:37 +0530
committerSimone Willett <swillett@nvidia.com>2012-09-06 16:30:21 -0700
commit4489c67eb0c0858cc723b26151578868f6dfbda3 (patch)
treebb52b1106a8c7ea6a2d29da215ecdef2dc7ce46e /arch/arm/mach-tegra/tegra_odm_fuses.c
parent6b74ce596c3439f65bfd3432bb6bcca65717f8ed (diff)
ARM: tegra: fuse: rename regulator name as per chip pin name
The pin name for fuse supply for different chip have different name as follows: - Tegra20 has the name as vdd_fuse. - Tegra30 and later have the name as vpp_fuse. Correcting name of the regulator supply and implementing same in odm driver. Change-Id: Ic7a49f365fa30aa71b198ba588dcc4bfc36dcc98 Signed-off-by: Laxman Dewangan <ldewangan@nvidia.com> Reviewed-on: http://git-master/r/130144 Reviewed-by: Simone Willett <swillett@nvidia.com> Tested-by: Simone Willett <swillett@nvidia.com>
Diffstat (limited to 'arch/arm/mach-tegra/tegra_odm_fuses.c')
-rw-r--r--arch/arm/mach-tegra/tegra_odm_fuses.c36
1 files changed, 22 insertions, 14 deletions
diff --git a/arch/arm/mach-tegra/tegra_odm_fuses.c b/arch/arm/mach-tegra/tegra_odm_fuses.c
index 11bc3ef79ef9..2abf7e93b62e 100644
--- a/arch/arm/mach-tegra/tegra_odm_fuses.c
+++ b/arch/arm/mach-tegra/tegra_odm_fuses.c
@@ -109,8 +109,14 @@ static u32 tmp_fuse_pgm_data[NFUSES / 2];
DEFINE_MUTEX(fuse_lock);
+#ifdef CONFIG_ARCH_TEGRA_2x_SOC
+#define TEGRA_FUSE_SUPPLY "vdd_fuse"
+#else
+#define TEGRA_FUSE_SUPPLY "vpp_fuse"
+#endif
+
static struct fuse_data fuse_info;
-struct regulator *vdd_fuse;
+struct regulator *fuse_regulator;
struct clk *clk_fuse;
#define FUSE_NAME_LEN 30
@@ -687,7 +693,7 @@ int tegra_fuse_program(struct fuse_data *pgm_data, u32 flags)
}
if (IS_ERR_OR_NULL(clk_fuse) ||
- (!tegra_fuse_regulator_en && IS_ERR_OR_NULL(vdd_fuse))) {
+ (!tegra_fuse_regulator_en && IS_ERR_OR_NULL(fuse_regulator))) {
pr_err("fuse write disabled");
return -ENODEV;
}
@@ -729,7 +735,7 @@ int tegra_fuse_program(struct fuse_data *pgm_data, u32 flags)
if (tegra_fuse_regulator_en)
ret = tegra_fuse_regulator_en(1);
else
- ret = regulator_enable(vdd_fuse);
+ ret = regulator_enable(fuse_regulator);
if (ret)
BUG_ON("regulator enable fail\n");
@@ -753,7 +759,7 @@ int tegra_fuse_program(struct fuse_data *pgm_data, u32 flags)
if (tegra_fuse_regulator_en)
tegra_fuse_regulator_en(0);
else
- regulator_disable(vdd_fuse);
+ regulator_disable(fuse_regulator);
#endif
mutex_unlock(&fuse_lock);
@@ -928,21 +934,23 @@ static ssize_t fuse_show(struct kobject *kobj, struct kobj_attribute *attr, char
return strlen(buf);
}
+
static int __init tegra_fuse_program_init(void)
{
if (!tegra_fuse_regulator_en) {
- /* get vdd_fuse regulator */
- vdd_fuse = regulator_get(NULL, "vdd_fuse");
- if (IS_ERR_OR_NULL(vdd_fuse))
- pr_err("%s: no vdd_fuse. fuse write disabled\n", __func__);
+ /* get fuse_regulator regulator */
+ fuse_regulator = regulator_get(NULL, TEGRA_FUSE_SUPPLY);
+ if (IS_ERR_OR_NULL(fuse_regulator))
+ pr_err("%s: no fuse_regulator. fuse write disabled\n",
+ __func__);
}
clk_fuse = clk_get_sys("fuse-tegra", "fuse_burn");
if (IS_ERR_OR_NULL(clk_fuse)) {
pr_err("%s: no clk_fuse. fuse read/write disabled\n", __func__);
- if (!IS_ERR_OR_NULL(vdd_fuse)) {
- regulator_put(vdd_fuse);
- vdd_fuse = NULL;
+ if (!IS_ERR_OR_NULL(fuse_regulator)) {
+ regulator_put(fuse_regulator);
+ fuse_regulator = NULL;
}
return -ENODEV;
}
@@ -950,7 +958,7 @@ static int __init tegra_fuse_program_init(void)
fuse_kobj = kobject_create_and_add("fuse", firmware_kobj);
if (!fuse_kobj) {
pr_err("%s: fuse_kobj create fail\n", __func__);
- regulator_put(vdd_fuse);
+ regulator_put(fuse_regulator);
clk_put(clk_fuse);
return -ENODEV;
}
@@ -989,8 +997,8 @@ static void __exit tegra_fuse_program_exit(void)
fuse_power_disable();
- if (!IS_ERR_OR_NULL(vdd_fuse))
- regulator_put(vdd_fuse);
+ if (!IS_ERR_OR_NULL(fuse_regulator))
+ regulator_put(fuse_regulator);
if (!IS_ERR_OR_NULL(clk_fuse))
clk_put(clk_fuse);