diff options
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.patch | 105 |
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 @@ | |||
1 | From e81c7627c3d90209271a0f1e7486d0f779f05289 Mon Sep 17 00:00:00 2001 | ||
2 | From: Dan Aizenstros <daizenstros@quicklogic.com> | ||
3 | Date: Thu, 12 Jul 2012 12:31:08 -0400 | ||
4 | Subject: [PATCH 76/79] beaglebone: improve GPMC bus timings for camera cape | ||
5 | |||
6 | Signed-off-by: Dan Aizenstros <daizenstros@quicklogic.com> | ||
7 | Signed-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 | |||
14 | diff --git a/arch/arm/mach-omap2/board-am335xevm.c b/arch/arm/mach-omap2/board-am335xevm.c | ||
15 | index 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 */ | ||
53 | diff --git a/drivers/media/video/cssp_camera/cssp_camera.c b/drivers/media/video/cssp_camera/cssp_camera.c | ||
54 | index 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 | |||
90 | diff --git a/drivers/media/video/cssp_camera/cssp_camera.h b/drivers/media/video/cssp_camera/cssp_camera.h | ||
91 | index 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 | -- | ||
104 | 1.7.10 | ||
105 | |||