summaryrefslogtreecommitdiffstats
path: root/recipes-kernel/linux/linux-ti33x-psp-3.2/beaglebone/0076-beaglebone-improve-GPMC-bus-timings-for-camera-cape.patch
diff options
context:
space:
mode:
Diffstat (limited to 'recipes-kernel/linux/linux-ti33x-psp-3.2/beaglebone/0076-beaglebone-improve-GPMC-bus-timings-for-camera-cape.patch')
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/beaglebone/0076-beaglebone-improve-GPMC-bus-timings-for-camera-cape.patch105
1 files changed, 105 insertions, 0 deletions
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/beaglebone/0076-beaglebone-improve-GPMC-bus-timings-for-camera-cape.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/beaglebone/0076-beaglebone-improve-GPMC-bus-timings-for-camera-cape.patch
new file mode 100644
index 00000000..5997367f
--- /dev/null
+++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/beaglebone/0076-beaglebone-improve-GPMC-bus-timings-for-camera-cape.patch
@@ -0,0 +1,105 @@
1From e81c7627c3d90209271a0f1e7486d0f779f05289 Mon Sep 17 00:00:00 2001
2From: Dan Aizenstros <daizenstros@quicklogic.com>
3Date: Thu, 12 Jul 2012 12:31:08 -0400
4Subject: [PATCH 76/79] beaglebone: improve GPMC bus timings for camera cape
5
6Signed-off-by: Dan Aizenstros <daizenstros@quicklogic.com>
7Signed-off-by: Koen Kooi <koen@dominion.thruhere.net>
8---
9 arch/arm/mach-omap2/board-am335xevm.c | 13 +++++++------
10 drivers/media/video/cssp_camera/cssp_camera.c | 5 +----
11 drivers/media/video/cssp_camera/cssp_camera.h | 2 +-
12 3 files changed, 9 insertions(+), 11 deletions(-)
13
14diff --git a/arch/arm/mach-omap2/board-am335xevm.c b/arch/arm/mach-omap2/board-am335xevm.c
15index 6b4539e..82020fc 100644
16--- a/arch/arm/mach-omap2/board-am335xevm.c
17+++ b/arch/arm/mach-omap2/board-am335xevm.c
18@@ -1895,9 +1895,10 @@ static struct gpmc_timings cssp_timings = {
19 /* Minimum clock period for synchronous mode (in picoseconds) */
20 .sync_clk = 10000,
21
22+ /* CS signal timings corresponding to GPMC_CONFIG2 */
23 .cs_on = 0,
24- .cs_rd_off = 23 * 10, /* Read deassertion time */
25- .cs_wr_off = 23 * 10, /* Write deassertion time */
26+ .cs_rd_off = 8 * 10, /* Read deassertion time */
27+ .cs_wr_off = 20 * 10, /* Write deassertion time */
28
29 /* ADV signal timings corresponding to GPMC_CONFIG3 */
30 .adv_on = 0, /* Assertion time */
31@@ -1906,17 +1907,17 @@ static struct gpmc_timings cssp_timings = {
32
33 /* WE signals timings corresponding to GPMC_CONFIG4 */
34 .we_on = 3 * 10, /* WE assertion time */
35- .we_off = 23 * 10, /* WE deassertion time */
36+ .we_off = 8 * 10, /* WE deassertion time */
37
38 /* OE signals timings corresponding to GPMC_CONFIG4 */
39 .oe_on = 3 * 10, /* OE assertion time */
40- .oe_off = 23 * 10, /* OE deassertion time */
41+ .oe_off = 8 * 10, /* OE deassertion time */
42
43 /* Access time and cycle time timings corresponding to GPMC_CONFIG5 */
44 .page_burst_access = 1 * 10, /* Multiple access word delay */
45 .access = 7 * 10, /* Start-cycle to first data valid delay */
46- .rd_cycle = 23 * 10, /* Total read cycle time */
47- .wr_cycle = 23 * 10, /* Total write cycle time */
48+ .rd_cycle = 8 * 10, /* Total read cycle time */
49+ .wr_cycle = 20 * 10, /* Total write cycle time */
50
51 /* The following are only on OMAP3430 */
52 .wr_access = 7 * 10, /* WRACCESSTIME */
53diff --git a/drivers/media/video/cssp_camera/cssp_camera.c b/drivers/media/video/cssp_camera/cssp_camera.c
54index 39aa003..34a36d7 100644
55--- a/drivers/media/video/cssp_camera/cssp_camera.c
56+++ b/drivers/media/video/cssp_camera/cssp_camera.c
57@@ -147,7 +147,6 @@ static int trigger_dma_transfer_to_buf(struct cssp_cam_dev *dev, struct vb2_buff
58 // Enable data capture
59 dev->mode |= ENABLE;
60 writew(dev->mode, dev->reg_base_virt + REG_MODE);
61- readw(dev->reg_base_virt + REG_MODE);
62
63 dev->current_vb = vb;
64
65@@ -182,7 +181,6 @@ static void dma_callback(unsigned lch, u16 ch_status, void *data)
66 // Disable data capture
67 dev->mode &= ~ENABLE;
68 writew(dev->mode, dev->reg_base_virt + REG_MODE);
69- readw(dev->reg_base_virt + REG_MODE);
70
71 if (ch_status == DMA_COMPLETE) {
72 struct vb2_buffer *vb = dev->current_vb;
73@@ -223,7 +221,7 @@ static int configure_edma(struct cssp_cam_dev *cam)
74 return -1;
75 }
76
77- cam->dma_ch = edma_alloc_channel(dma_channel, dma_callback, cam, EVENTQ_1);
78+ cam->dma_ch = edma_alloc_channel(dma_channel, dma_callback, cam, EVENTQ_0);
79 if (cam->dma_ch < 0) {
80 printk(KERN_ERR "[%s]: allocating channel for DMA failed\n", pdev->name);
81 return -EBUSY;
82@@ -526,7 +524,6 @@ static int stop_streaming(struct vb2_queue *vq)
83 // Disable data capture
84 dev->mode &= ~ENABLE;
85 writew(dev->mode, dev->reg_base_virt + REG_MODE);
86- readw(dev->reg_base_virt + REG_MODE);
87
88 stop_camera_sensor(dev);
89
90diff --git a/drivers/media/video/cssp_camera/cssp_camera.h b/drivers/media/video/cssp_camera/cssp_camera.h
91index d018ca1..8eb5f83 100644
92--- a/drivers/media/video/cssp_camera/cssp_camera.h
93+++ b/drivers/media/video/cssp_camera/cssp_camera.h
94@@ -28,7 +28,7 @@ static unsigned debug;
95 module_param(debug, uint, 0644);
96 MODULE_PARM_DESC(debug, "activates debug info");
97
98-static unsigned int vid_limit = 1;
99+static unsigned int vid_limit = 6;
100 module_param(vid_limit, uint, 0644);
101 MODULE_PARM_DESC(vid_limit, "capture memory limit in megabytes");
102
103--
1041.7.10
105