Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 250035
b: refs/heads/master
c: 031e912
h: refs/heads/master
i:
  250033: 8178aae
  250031: c719a24
v: v3
  • Loading branch information
Uwe Kleine-König authored and Sascha Hauer committed May 19, 2011
1 parent 82a827c commit a81adc9
Show file tree
Hide file tree
Showing 2 changed files with 18 additions and 17 deletions.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: dca7c0b4293a06d1ed9387e729a4882896abccc2
refs/heads/master: 031e912741746e4350204bb0436590ca0e993a7d
33 changes: 17 additions & 16 deletions trunk/arch/arm/mach-mx3/mach-mx31moboard.c
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,7 @@
#include <linux/mfd/mc13783.h>
#include <linux/spi/spi.h>
#include <linux/types.h>
#include <linux/memblock.h>

#include <linux/usb/otg.h>
#include <linux/usb/ulpi.h>
Expand Down Expand Up @@ -472,27 +473,17 @@ static struct mx3_camera_pdata camera_pdata = {
.mclk_10khz = 4800,
};

#define CAMERA_BUF_SIZE (4*1024*1024)
static phys_addr_t mx3_camera_base __initdata;
#define MX3_CAMERA_BUF_SIZE SZ_4M

static int __init mx31moboard_cam_alloc_dma(const size_t buf_size)
static int __init mx31moboard_cam_alloc_dma(void)
{
dma_addr_t dma_handle;
void *buf;
int dma;

if (buf_size < 2 * 1024 * 1024)
return -EINVAL;

buf = dma_alloc_coherent(NULL, buf_size, &dma_handle, GFP_KERNEL);
if (!buf) {
pr_err("%s: cannot allocate camera buffer-memory\n", __func__);
return -ENOMEM;
}

memset(buf, 0, buf_size);

dma = dma_declare_coherent_memory(&mx3_camera.dev,
dma_handle, dma_handle, buf_size,
mx3_camera_base, mx3_camera_base,
MX3_CAMERA_BUF_SIZE,
DMA_MEMORY_MAP | DMA_MEMORY_EXCLUSIVE);

/* The way we call dma_declare_coherent_memory only a malloc can fail */
Expand Down Expand Up @@ -529,7 +520,7 @@ static void __init mx31moboard_init(void)
imx31_add_mxc_mmc(0, &sdhc1_pdata);

mxc_register_device(&mx3_ipu, &mx3_ipu_data);
if (!mx31moboard_cam_alloc_dma(CAMERA_BUF_SIZE))
if (!mx31moboard_cam_alloc_dma())
mxc_register_device(&mx3_camera, &camera_pdata);

usb_xcvr_reset();
Expand Down Expand Up @@ -564,9 +555,19 @@ struct sys_timer mx31moboard_timer = {
.init = mx31moboard_timer_init,
};

static void __init mx31moboard_reserve(void)
{
/* reserve 4 MiB for mx3-camera */
mx3_camera_base = memblock_alloc(MX3_CAMERA_BUF_SIZE,
MX3_CAMERA_BUF_SIZE);
memblock_free(mx3_camera_base, MX3_CAMERA_BUF_SIZE);
memblock_remove(mx3_camera_base, MX3_CAMERA_BUF_SIZE);
}

MACHINE_START(MX31MOBOARD, "EPFL Mobots mx31moboard")
/* Maintainer: Valentin Longchamp, EPFL Mobots group */
.boot_params = MX3x_PHYS_OFFSET + 0x100,
.reserve = mx31moboard_reserve,
.map_io = mx31_map_io,
.init_early = imx31_init_early,
.init_irq = mx31_init_irq,
Expand Down

0 comments on commit a81adc9

Please sign in to comment.