You've already forked linux-apfs
mirror of
https://github.com/linux-apfs/linux-apfs.git
synced 2026-05-01 15:00:59 -07:00
V4L/DVB (11350): Add camera (CSI) driver for MX1
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>
This commit is contained in:
committed by
Mauro Carvalho Chehab
parent
b71df97a3f
commit
6acc81c394
@@ -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
|
||||
@@ -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,
|
||||
|
||||
@@ -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);
|
||||
@@ -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:
|
||||
@@ -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__ */
|
||||
|
||||
@@ -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_ */
|
||||
@@ -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
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
Reference in New Issue
Block a user