summaryrefslogtreecommitdiffstats
path: root/arch/arm/mach-imx
diff options
context:
space:
mode:
Diffstat (limited to 'arch/arm/mach-imx')
-rw-r--r--arch/arm/mach-imx/imx-bbu-external-nand.c9
-rw-r--r--arch/arm/mach-imx/xload-gpmi-nand.c7
2 files changed, 12 insertions, 4 deletions
diff --git a/arch/arm/mach-imx/imx-bbu-external-nand.c b/arch/arm/mach-imx/imx-bbu-external-nand.c
index e0a12fdb71..392497e434 100644
--- a/arch/arm/mach-imx/imx-bbu-external-nand.c
+++ b/arch/arm/mach-imx/imx-bbu-external-nand.c
@@ -31,7 +31,7 @@ static int imx_bbu_external_nand_update(struct bbu_handler *handler, struct bbu_
uint32_t num_bb = 0, bbt = 0;
loff_t offset = 0;
int block = 0, len, now, blocksize;
- void *image = data->image;
+ void *image = NULL;
ret = stat(data->devicefile, &s);
if (ret)
@@ -47,6 +47,12 @@ static int imx_bbu_external_nand_update(struct bbu_handler *handler, struct bbu_
if (ret)
goto out;
+ image = memdup(data->image, data->len);
+ if (!image) {
+ ret = -ENOMEM;
+ goto out;
+ }
+
blocksize = meminfo.erasesize;
size_need = data->len;
@@ -164,6 +170,7 @@ static int imx_bbu_external_nand_update(struct bbu_handler *handler, struct bbu_
out:
close(fd);
+ free(image);
return ret;
}
diff --git a/arch/arm/mach-imx/xload-gpmi-nand.c b/arch/arm/mach-imx/xload-gpmi-nand.c
index e6d19a7279..3a4f331ce6 100644
--- a/arch/arm/mach-imx/xload-gpmi-nand.c
+++ b/arch/arm/mach-imx/xload-gpmi-nand.c
@@ -102,14 +102,15 @@ static int mxs_dma_enable(struct mxs_dma_chan *pchan,
struct apbh_dma *apbh = pchan->apbh;
int channel_bit;
int channel = pchan->channel;
+ unsigned long pdesc32 = (unsigned long)pdesc;
if (apbh_dma_is_imx23(apbh)) {
- writel((uint32_t)pdesc,
+ writel(pdesc32,
apbh->regs + HW_APBHX_CHn_NXTCMDAR_MX23(channel));
writel(1, apbh->regs + HW_APBHX_CHn_SEMA_MX23(channel));
channel_bit = channel + BP_APBH_CTRL0_CLKGATE_CHANNEL;
} else {
- writel((uint32_t)pdesc,
+ writel(pdesc32,
apbh->regs + HW_APBHX_CHn_NXTCMDAR_MX28(channel));
writel(1, apbh->regs + HW_APBHX_CHn_SEMA_MX28(channel));
channel_bit = channel;
@@ -165,7 +166,7 @@ static int mxs_dma_run(struct mxs_dma_chan *pchan, struct mxs_dma_cmd *pdesc,
/* chain descriptors */
for (i = 0; i < num - 1; i++) {
- pdesc[i].next = (uint32_t)(&pdesc[i + 1]);
+ pdesc[i].next = (unsigned long)(&pdesc[i + 1]);
pdesc[i].data |= DMACMD_CHAIN;
}