diff --git a/drivers/staging/qcache/fmem.c b/drivers/staging/qcache/fmem.c index 3b44a2c1621..d12c8e81f73 100644 --- a/drivers/staging/qcache/fmem.c +++ b/drivers/staging/qcache/fmem.c @@ -1,6 +1,6 @@ /* * - * Copyright (c) 2011, Code Aurora Forum. All rights reserved. + * Copyright (c) 2011-2012, Code Aurora Forum. All rights reserved. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License version 2 and @@ -51,12 +51,14 @@ static int fmem_probe(struct platform_device *pdev) { struct fmem_platform_data *pdata = pdev->dev.platform_data; - if (!pdata->size) + fmem_data.phys = pdata->phys + pdata->reserved_size; + fmem_data.size = pdata->size - pdata->reserved_size; + fmem_data.reserved_size = pdata->reserved_size; + + if (!fmem_data.size) return -ENODEV; - fmem_data.phys = pdata->phys; - fmem_data.size = pdata->size; - fmem_data.area = get_vm_area(pdata->size, VM_IOREMAP); + fmem_data.area = get_vm_area(fmem_data.size, VM_IOREMAP); if (!fmem_data.area) return -ENOMEM; diff --git a/include/linux/fmem.h b/include/linux/fmem.h index c9e36b56dda..aebeec4de65 100644 --- a/include/linux/fmem.h +++ b/include/linux/fmem.h @@ -1,6 +1,6 @@ /* * - * Copyright (c) 2011, Code Aurora Forum. All rights reserved. + * Copyright (c) 2011-2012, Code Aurora Forum. All rights reserved. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License version 2 and @@ -20,6 +20,7 @@ struct fmem_platform_data { unsigned long phys; unsigned long size; + unsigned long reserved_size; }; struct fmem_data { @@ -27,6 +28,7 @@ struct fmem_data { void *virt; struct vm_struct *area; unsigned long size; + unsigned long reserved_size; }; enum fmem_state {