aboutsummaryrefslogtreecommitdiffstats
path: root/arch/arm/mach-davinci/devices-da8xx.c
diff options
context:
space:
mode:
authorSekhar Nori <nsekhar@ti.com>2010-06-29 02:05:12 -0400
committerKevin Hilman <khilman@deeprootsystems.com>2010-08-05 12:58:24 -0400
commitbc3ac9f31642fb4697b313c2eb575c5286f35c2a (patch)
treeabeeaa649da9d69713bf876575b5ba95befb1731 /arch/arm/mach-davinci/devices-da8xx.c
parentf027512db7410ed149422262b07d2c78f0a36282 (diff)
davinci: edma: provide ability to detect insufficient CC info data
This patch modifies the EDMA driver to expect the channel controller (CC) infomation passed on by the platform as a fixed size (EDMA_MAX_CC) array of pointers to structures. Doing so helps catch errors of the sort where the resource structure has information for more channel controllers than the number channel controller info structures defined. Such insufficient platform data would lead to illegal memory accesses. Signed-off-by: Sekhar Nori <nsekhar@ti.com> Signed-off-by: Kevin Hilman <khilman@deeprootsystems.com>
Diffstat (limited to 'arch/arm/mach-davinci/devices-da8xx.c')
-rw-r--r--arch/arm/mach-davinci/devices-da8xx.c29
1 files changed, 18 insertions, 11 deletions
diff --git a/arch/arm/mach-davinci/devices-da8xx.c b/arch/arm/mach-davinci/devices-da8xx.c
index 8cda729be27..1d956bfa9cf 100644
--- a/arch/arm/mach-davinci/devices-da8xx.c
+++ b/arch/arm/mach-davinci/devices-da8xx.c
@@ -111,19 +111,21 @@ static const s8 da850_queue_priority_mapping[][2] = {
111 {-1, -1} 111 {-1, -1}
112}; 112};
113 113
114static struct edma_soc_info da830_edma_info[] = { 114static struct edma_soc_info da830_edma_cc0_info = {
115 { 115 .n_channel = 32,
116 .n_channel = 32, 116 .n_region = 4,
117 .n_region = 4, 117 .n_slot = 128,
118 .n_slot = 128, 118 .n_tc = 2,
119 .n_tc = 2, 119 .n_cc = 1,
120 .n_cc = 1, 120 .queue_tc_mapping = da8xx_queue_tc_mapping,
121 .queue_tc_mapping = da8xx_queue_tc_mapping, 121 .queue_priority_mapping = da8xx_queue_priority_mapping,
122 .queue_priority_mapping = da8xx_queue_priority_mapping, 122};
123 }, 123
124static struct edma_soc_info *da830_edma_info[EDMA_MAX_CC] = {
125 &da830_edma_cc0_info,
124}; 126};
125 127
126static struct edma_soc_info da850_edma_info[] = { 128static struct edma_soc_info da850_edma_cc_info[] = {
127 { 129 {
128 .n_channel = 32, 130 .n_channel = 32,
129 .n_region = 4, 131 .n_region = 4,
@@ -144,6 +146,11 @@ static struct edma_soc_info da850_edma_info[] = {
144 }, 146 },
145}; 147};
146 148
149static struct edma_soc_info *da850_edma_info[EDMA_MAX_CC] = {
150 &da850_edma_cc_info[0],
151 &da850_edma_cc_info[1],
152};
153
147static struct resource da830_edma_resources[] = { 154static struct resource da830_edma_resources[] = {
148 { 155 {
149 .name = "edma_cc0", 156 .name = "edma_cc0",