summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRikard Olsson <rikard.p.olsson@stericsson.com>2012-01-11 15:55:40 +0100
committerPhilippe Langlais <philippe.langlais@stericsson.com>2012-06-05 10:40:24 +0200
commit29c578081d643f636c42cdc7ebfafa1fb953ae21 (patch)
treec5caeb00d9e77e6e48434ba75201a918eda629e8
parent33c2f9cd61e13fb826d0e4710e93fc7453953e02 (diff)
ARM: ux500: adds additional dump areas
Adds additional dump area information which contains information of fuses in db8500. ST-Ericsson Linux next: - ST-Ericsson ID: 404278 ST-Ericsson FOSS-OUT ID: Trivial Change-Id: If2aea9493c0942700acc676c40dc9b6e344ef891 Signed-off-by: Rikard Olsson <rikard.p.olsson@stericsson.com> Reviewed-on: http://gerrit.lud.stericsson.com/gerrit/45155 Reviewed-by: Srinidhi KASAGAR <srinidhi.kasagar@stericsson.com>
-rw-r--r--arch/arm/mach-ux500/mloader-db8500.c12
-rw-r--r--drivers/misc/dbx500-mloader.c19
-rw-r--r--include/linux/mloader.h1
3 files changed, 31 insertions, 1 deletions
diff --git a/arch/arm/mach-ux500/mloader-db8500.c b/arch/arm/mach-ux500/mloader-db8500.c
index b13652f55cb..8f08e6af969 100644
--- a/arch/arm/mach-ux500/mloader-db8500.c
+++ b/arch/arm/mach-ux500/mloader-db8500.c
@@ -12,6 +12,7 @@
#include <linux/platform_device.h>
#include <mach/mloader-dbx500.h>
+#include <mach/hardware.h>
static struct dbx500_ml_area modem_areas[] = {
{ .name = "modem_trace", .start = 0x6000000, .size = 0xf00000 },
@@ -31,13 +32,22 @@ static struct dbx500_mloader_pdata mloader_fw_data = {
.nr_areas = ARRAY_SIZE(modem_areas),
};
+static struct resource mloader_fw_rsrc[] = {
+ {
+ .start = (U8500_BACKUPRAM1_BASE + 0xF70),
+ .end = (U8500_BACKUPRAM1_BASE + 0xF7C),
+ .flags = IORESOURCE_MEM
+ }
+};
+
struct platform_device mloader_fw_device = {
.name = "dbx500_mloader_fw",
.id = -1,
.dev = {
.platform_data = &mloader_fw_data,
},
- .num_resources = 0,
+ .resource = mloader_fw_rsrc,
+ .num_resources = ARRAY_SIZE(mloader_fw_rsrc)
};
/* Default areas can be overloaded in cmdline */
diff --git a/drivers/misc/dbx500-mloader.c b/drivers/misc/dbx500-mloader.c
index c3ec8b67983..408d1a1a29e 100644
--- a/drivers/misc/dbx500-mloader.c
+++ b/drivers/misc/dbx500-mloader.c
@@ -22,6 +22,7 @@
#include <mach/mloader-dbx500.h>
#include <linux/mloader.h>
+#include <mach/hardware.h>
#define DEVICE_NAME "dbx500_mloader_fw"
@@ -30,6 +31,8 @@ struct mloader_priv {
struct dbx500_mloader_pdata *pdata;
struct miscdevice misc_dev;
u32 aeras_size;
+ void __iomem *uid_base;
+ u8 size;
};
static struct mloader_priv *mloader_priv;
@@ -165,6 +168,11 @@ static long mloader_fw_ioctl(struct file *filp, unsigned int cmd,
kfree(dump_images);
break;
}
+ case ML_GET_FUSEINFO: {
+ ret = copy_to_user(argp, (void *) mloader_priv->uid_base,
+ mloader_priv->size) ? -EFAULT : 0;
+ break;
+ }
default:
ret = -EPERM;
break;
@@ -183,6 +191,7 @@ static int __devinit mloader_fw_probe(struct platform_device *pdev)
{
int ret = 0;
int i;
+ struct resource *res = NULL;
mloader_priv = kzalloc(sizeof(*mloader_priv), GFP_ATOMIC);
if (!mloader_priv) {
@@ -196,6 +205,16 @@ static int __devinit mloader_fw_probe(struct platform_device *pdev)
mloader_priv->misc_dev.minor = MISC_DYNAMIC_MINOR;
mloader_priv->misc_dev.name = DEVICE_NAME;
mloader_priv->misc_dev.fops = &modem_fw_fops;
+
+ res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
+ mloader_priv->size = resource_size(res);
+ mloader_priv->uid_base = ioremap(res->start, mloader_priv->size);
+
+ if (!mloader_priv->uid_base) {
+ ret = -ENOMEM;
+ goto err_free_priv;
+ }
+
ret = misc_register(&mloader_priv->misc_dev);
if (ret < 0) {
dev_err(&pdev->dev, "can't misc_register\n");
diff --git a/include/linux/mloader.h b/include/linux/mloader.h
index ceca3245856..c339a7f7a36 100644
--- a/include/linux/mloader.h
+++ b/include/linux/mloader.h
@@ -13,6 +13,7 @@
#define ML_UPLOAD _IO(ML_IO_NUMBER, 1)
#define ML_GET_NBIMAGES _IOR(ML_IO_NUMBER, 2, int)
#define ML_GET_DUMPINFO _IOR(ML_IO_NUMBER, 3, struct dump_image*)
+#define ML_GET_FUSEINFO _IOR(ML_IO_NUMBER, 4, char*)
#define MAX_NAME 16