Skip to content

Commit

Permalink
V4L/DVB (11350): Add camera (CSI) driver for MX1
Browse files Browse the repository at this point in the history
Add support for CMOS Sensor Interface on i.MX1 and i.MXL SoCs.

 create mode 100644 arch/arm/mach-mx1/ksym_mx1.c
 create mode 100644 arch/arm/mach-mx1/mx1_camera_fiq.S
 create mode 100644 arch/arm/plat-mxc/include/mach/mx1_camera.h
 create mode 100644 drivers/media/video/mx1_camera.c

Signed-off-by: Paulius Zaleckas <paulius.zaleckas@teltonika.lt>
Signed-off-by: Darius Augulis <augulis.darius@gmail.com>
Acked-by: Sascha Hauer <s.hauer@pengutronix.de>
Signed-off-by: Guennadi Liakhovetski <g.liakhovetski@gmx.de>
Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
  • Loading branch information
Paulius Zaleckas authored and Mauro Carvalho Chehab committed Apr 7, 2009
1 parent b71df97 commit 6acc81c
Show file tree
Hide file tree
Showing 9 changed files with 940 additions and 2 deletions.
3 changes: 3 additions & 0 deletions arch/arm/mach-mx1/Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,9 @@

obj-y += generic.o clock.o devices.o

# Support for CMOS sensor interface
obj-$(CONFIG_MX1_VIDEO) += ksym_mx1.o mx1_camera_fiq.o

# Specific board support
obj-$(CONFIG_ARCH_MX1ADS) += mx1ads.o
obj-$(CONFIG_MACH_SCB9328) += scb9328.o
2 changes: 1 addition & 1 deletion arch/arm/mach-mx1/devices.c
Original file line number Diff line number Diff line change
Expand Up @@ -44,7 +44,7 @@ static struct resource imx_csi_resources[] = {
static u64 imx_csi_dmamask = 0xffffffffUL;

struct platform_device imx_csi_device = {
.name = "imx-csi",
.name = "mx1-camera",
.id = 0, /* This is used to put cameras on this interface */
.dev = {
.dma_mask = &imx_csi_dmamask,
Expand Down
18 changes: 18 additions & 0 deletions arch/arm/mach-mx1/ksym_mx1.c
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
/*
* Exported ksyms of ARCH_MX1
*
* Copyright (C) 2008, Darius Augulis <augulis.darius@gmail.com>
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License version 2 as
* published by the Free Software Foundation.
*/

#include <linux/platform_device.h>
#include <linux/module.h>

#include <mach/mx1_camera.h>

/* IMX camera FIQ handler */
EXPORT_SYMBOL(mx1_camera_sof_fiq_start);
EXPORT_SYMBOL(mx1_camera_sof_fiq_end);
35 changes: 35 additions & 0 deletions arch/arm/mach-mx1/mx1_camera_fiq.S
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
/*
* Copyright (C) 2008 Paulius Zaleckas <paulius.zaleckas@teltonika.lt>
*
* Based on linux/arch/arm/lib/floppydma.S
* Copyright (C) 1995, 1996 Russell King
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License version 2 as
* published by the Free Software Foundation.
*/
#include <linux/linkage.h>
#include <asm/assembler.h>

.text
.global mx1_camera_sof_fiq_end
.global mx1_camera_sof_fiq_start
mx1_camera_sof_fiq_start:
@ enable dma
ldr r12, [r9]
orr r12, r12, #0x00000001
str r12, [r9]
@ unmask DMA interrupt
ldr r12, [r8]
bic r12, r12, r13
str r12, [r8]
@ disable SOF interrupt
ldr r12, [r10]
bic r12, r12, #0x00010000
str r12, [r10]
@ clear SOF flag
mov r12, #0x00010000
str r12, [r11]
@ return from FIQ
subs pc, lr, #4
mx1_camera_sof_fiq_end:
8 changes: 8 additions & 0 deletions arch/arm/plat-mxc/include/mach/memory.h
Original file line number Diff line number Diff line change
Expand Up @@ -24,4 +24,12 @@
#define PHYS_OFFSET UL(0x80000000)
#endif

#if defined(CONFIG_MX1_VIDEO)
/*
* Increase size of DMA-consistent memory region.
* This is required for i.MX camera driver to capture at least four VGA frames.
*/
#define CONSISTENT_DMA_SIZE SZ_4M
#endif /* CONFIG_MX1_VIDEO */

#endif /* __ASM_ARCH_MXC_MEMORY_H__ */
35 changes: 35 additions & 0 deletions arch/arm/plat-mxc/include/mach/mx1_camera.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
/*
* mx1_camera.h - i.MX1/i.MXL camera driver header file
*
* Copyright (c) 2008, Paulius Zaleckas <paulius.zaleckas@teltonika.lt>
* Copyright (C) 2009, Darius Augulis <augulis.darius@gmail.com>
*
* Based on PXA camera.h file:
* Copyright (C) 2003, Intel Corporation
* Copyright (C) 2008, Guennadi Liakhovetski <kernel@pengutronix.de>
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License version 2 as
* published by the Free Software Foundation.
*/

#ifndef __ASM_ARCH_CAMERA_H_
#define __ASM_ARCH_CAMERA_H_

#define MX1_CAMERA_DATA_HIGH 1
#define MX1_CAMERA_PCLK_RISING 2
#define MX1_CAMERA_VSYNC_HIGH 4

extern unsigned char mx1_camera_sof_fiq_start, mx1_camera_sof_fiq_end;

/**
* struct mx1_camera_pdata - i.MX1/i.MXL camera platform data
* @mclk_10khz: master clock frequency in 10kHz units
* @flags: MX1 camera platform flags
*/
struct mx1_camera_pdata {
unsigned long mclk_10khz;
unsigned long flags;
};

#endif /* __ASM_ARCH_CAMERA_H_ */
13 changes: 12 additions & 1 deletion drivers/media/video/Kconfig
Original file line number Diff line number Diff line change
Expand Up @@ -746,6 +746,18 @@ config SOC_CAMERA_OV772X
help
This is a ov772x camera driver

config MX1_VIDEO
bool

config VIDEO_MX1
tristate "i.MX1/i.MXL CMOS Sensor Interface driver"
depends on VIDEO_DEV && ARCH_MX1 && SOC_CAMERA
select FIQ
select VIDEOBUF_DMA_CONTIG
select MX1_VIDEO
---help---
This is a v4l2 driver for the i.MX1/i.MXL CMOS Sensor Interface

config VIDEO_MX3
tristate "i.MX3x Camera Sensor Interface driver"
depends on VIDEO_DEV && MX3_IPU && SOC_CAMERA
Expand Down Expand Up @@ -904,5 +916,4 @@ config USB_S2255
This driver can be compiled as a module, called s2255drv.

endif # V4L_USB_DRIVERS

endif # VIDEO_CAPTURE_DRIVERS
1 change: 1 addition & 0 deletions drivers/media/video/Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -133,6 +133,7 @@ obj-$(CONFIG_VIDEO_CX18) += cx18/
obj-$(CONFIG_VIDEO_VIVI) += vivi.o
obj-$(CONFIG_VIDEO_CX23885) += cx23885/

obj-$(CONFIG_VIDEO_MX1) += mx1_camera.o
obj-$(CONFIG_VIDEO_MX3) += mx3_camera.o
obj-$(CONFIG_VIDEO_PXA27x) += pxa_camera.o
obj-$(CONFIG_VIDEO_SH_MOBILE_CEU) += sh_mobile_ceu_camera.o
Expand Down
Loading

0 comments on commit 6acc81c

Please sign in to comment.