• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Memory pre-allocations for Gaia boxes.
3  *
4  * Copyright (C) 2005-2009 Scientific-Atlanta, Inc.
5  *
6  * This program is free software; you can redistribute it and/or modify
7  * it under the terms of the GNU General Public License as published by
8  * the Free Software Foundation; either version 2 of the License, or
9  * (at your option) any later version.
10  *
11  * This program is distributed in the hope that it will be useful,
12  * but WITHOUT ANY WARRANTY; without even the implied warranty of
13  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14  * GNU General Public License for more details.
15  *
16  * You should have received a copy of the GNU General Public License
17  * along with this program; if not, write to the Free Software
18  * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
19  *
20  * Author:       David VomLehn
21  */
22 
23 #include <linux/init.h>
24 #include <asm/mach-powertv/asic.h>
25 
26 /*
27  * DVR_CAPABLE GAIA RESOURCES
28  */
29 struct resource dvr_gaia_resources[] __initdata = {
30 	/*
31 	 *
32 	 * VIDEO1 / LX1
33 	 *
34 	 */
35 	{
36 		.name   = "ST231aImage",	/* Delta-Mu 1 image and ram */
37 		.start  = 0x24000000,
38 		.end    = 0x241FFFFF,		/* 2MiB */
39 		.flags  = IORESOURCE_MEM,
40 	},
41 	{
42 		.name   = "ST231aMonitor",	/* 8KiB block ST231a monitor */
43 		.start  = 0x24200000,
44 		.end    = 0x24201FFF,
45 		.flags  = IORESOURCE_MEM,
46 	},
47 	{
48 		.name   = "MediaMemory1",
49 		.start  = 0x24202000,
50 		.end    = 0x25FFFFFF, /*~29.9MiB (32MiB - (2MiB + 8KiB)) */
51 		.flags  = IORESOURCE_MEM,
52 	},
53 	/*
54 	 *
55 	 * VIDEO2 / LX2
56 	 *
57 	 */
58 	{
59 		.name   = "ST231bImage",	/* Delta-Mu 2 image and ram */
60 		.start  = 0x60000000,
61 		.end    = 0x601FFFFF,		/* 2MiB */
62 		.flags  = IORESOURCE_IO,
63 	},
64 	{
65 		.name   = "ST231bMonitor",	/* 8KiB block ST231b monitor */
66 		.start  = 0x60200000,
67 		.end    = 0x60201FFF,
68 		.flags  = IORESOURCE_IO,
69 	},
70 	{
71 		.name   = "MediaMemory2",
72 		.start  = 0x60202000,
73 		.end    = 0x61FFFFFF, /*~29.9MiB (32MiB - (2MiB + 8KiB)) */
74 		.flags  = IORESOURCE_IO,
75 	},
76 	/*
77 	 *
78 	 * Sysaudio Driver
79 	 *
80 	 * This driver requires:
81 	 *
82 	 * Arbitrary Based Buffers:
83 	 *  DSP_Image_Buff - DSP code and data images (1MB)
84 	 *  ADSC_CPU_PCM_Buff - ADSC CPU PCM buffer (40KB)
85 	 *  ADSC_AUX_Buff - ADSC AUX buffer (16KB)
86 	 *  ADSC_Main_Buff - ADSC Main buffer (16KB)
87 	 *
88 	 */
89 	{
90 		.name   = "DSP_Image_Buff",
91 		.start  = 0x00000000,
92 		.end    = 0x000FFFFF,
93 		.flags  = IORESOURCE_MEM,
94 	},
95 	{
96 		.name   = "ADSC_CPU_PCM_Buff",
97 		.start  = 0x00000000,
98 		.end    = 0x00009FFF,
99 		.flags  = IORESOURCE_MEM,
100 	},
101 	{
102 		.name   = "ADSC_AUX_Buff",
103 		.start  = 0x00000000,
104 		.end    = 0x00003FFF,
105 		.flags  = IORESOURCE_MEM,
106 	},
107 	{
108 		.name   = "ADSC_Main_Buff",
109 		.start  = 0x00000000,
110 		.end    = 0x00003FFF,
111 		.flags  = IORESOURCE_MEM,
112 	},
113 	/*
114 	 *
115 	 * STAVEM driver/STAPI
116 	 *
117 	 * This driver requires:
118 	 *
119 	 * Arbitrary Based Buffers:
120 	 *  This memory area is used for allocating buffers for Video decoding
121 	 *  purposes.  Allocation/De-allocation within this buffer is managed
122 	 *  by the STAVMEM driver of the STAPI.  They could be Decimated
123 	 *  Picture Buffers, Intermediate Buffers, as deemed necessary for
124 	 *  video decoding purposes, for any video decoders on Zeus.
125 	 *
126 	 */
127 	{
128 		.name   = "AVMEMPartition0",
129 		.start  = 0x63580000,
130 		.end    = 0x64180000 - 1,  /* 12 MB total */
131 		.flags  = IORESOURCE_IO,
132 	},
133 	/*
134 	 *
135 	 * DOCSIS Subsystem
136 	 *
137 	 * This driver requires:
138 	 *
139 	 * Arbitrary Based Buffers:
140 	 *  Docsis -
141 	 *
142 	 */
143 	{
144 		.name   = "Docsis",
145 		.start  = 0x62000000,
146 		.end    = 0x62700000 - 1,	/* 7 MB total */
147 		.flags  = IORESOURCE_IO,
148 	},
149 	/*
150 	 *
151 	 * GHW HAL Driver
152 	 *
153 	 * This driver requires:
154 	 *
155 	 * Arbitrary Based Buffers:
156 	 *  GraphicsHeap - PowerTV Graphics Heap
157 	 *
158 	 */
159 	{
160 		.name   = "GraphicsHeap",
161 		.start  = 0x62700000,
162 		.end    = 0x63500000 - 1,	/* 14 MB total */
163 		.flags  = IORESOURCE_IO,
164 	},
165 	/*
166 	 *
167 	 * multi com buffer area
168 	 *
169 	 * This driver requires:
170 	 *
171 	 * Arbitrary Based Buffers:
172 	 *  Docsis -
173 	 *
174 	 */
175 	{
176 		.name   = "MulticomSHM",
177 		.start  = 0x26000000,
178 		.end    = 0x26020000 - 1,
179 		.flags  = IORESOURCE_MEM,
180 	},
181 	/*
182 	 *
183 	 * DMA Ring buffer
184 	 *
185 	 * This driver requires:
186 	 *
187 	 * Arbitrary Based Buffers:
188 	 *  Docsis -
189 	 *
190 	 */
191 	{
192 		.name   = "BMM_Buffer",
193 		.start  = 0x00000000,
194 		.end    = 0x00280000 - 1,
195 		.flags  = IORESOURCE_MEM,
196 	},
197 	/*
198 	 *
199 	 * Display bins buffer for unit0
200 	 *
201 	 * This driver requires:
202 	 *
203 	 * Arbitrary Based Buffers:
204 	 *  Display Bins for unit0
205 	 *
206 	 */
207 	{
208 		.name   = "DisplayBins0",
209 		.start  = 0x00000000,
210 		.end    = 0x00000FFF,		/* 4 KB total */
211 		.flags  = IORESOURCE_MEM,
212 	},
213 	/*
214 	 *
215 	 * Display bins buffer
216 	 *
217 	 * This driver requires:
218 	 *
219 	 * Arbitrary Based Buffers:
220 	 *  Display Bins for unit1
221 	 *
222 	 */
223 	{
224 		.name   = "DisplayBins1",
225 		.start  = 0x64AD4000,
226 		.end    = 0x64AD5000 - 1,  /* 4 KB total */
227 		.flags  = IORESOURCE_IO,
228 	},
229 	/*
230 	 *
231 	 * ITFS
232 	 *
233 	 * This driver requires:
234 	 *
235 	 * Arbitrary Based Buffers:
236 	 *  Docsis -
237 	 *
238 	 */
239 	{
240 		.name   = "ITFS",
241 		.start  = 0x64180000,
242 		/* 815,104 bytes each for 2 ITFS partitions. */
243 		.end    = 0x6430DFFF,
244 		.flags  = IORESOURCE_IO,
245 	},
246 	/*
247 	 *
248 	 * AVFS
249 	 *
250 	 * This driver requires:
251 	 *
252 	 * Arbitrary Based Buffers:
253 	 *  Docsis -
254 	 *
255 	 */
256 	{
257 		.name   = "AvfsDmaMem",
258 		.start  = 0x6430E000,
259 		/* (945K * 8) = (128K *3) 5 playbacks / 3 server */
260 		.end    = 0x64AD0000 - 1,
261 		.flags  = IORESOURCE_IO,
262 	},
263 	{
264 		.name   = "AvfsFileSys",
265 		.start  = 0x64AD0000,
266 		.end    = 0x64AD1000 - 1,  /* 4K */
267 		.flags  = IORESOURCE_IO,
268 	},
269 	/*
270 	 *
271 	 * Smartcard
272 	 *
273 	 * This driver requires:
274 	 *
275 	 * Arbitrary Based Buffers:
276 	 *  Read and write buffers for Internal/External cards
277 	 *
278 	 */
279 	{
280 		.name   = "SmartCardInfo",
281 		.start  = 0x64AD1000,
282 		.end    = 0x64AD3800 - 1,
283 		.flags  = IORESOURCE_IO,
284 	},
285 	/*
286 	 *
287 	 * KAVNET
288 	 *    NP Reset Vector - must be of the form xxCxxxxx
289 	 *	   NP Image - must be video bank 1
290 	 *	   NP IPC - must be video bank 2
291 	 */
292 	{
293 		.name   = "NP_Reset_Vector",
294 		.start  = 0x27c00000,
295 		.end    = 0x27c01000 - 1,
296 		.flags  = IORESOURCE_MEM,
297 	},
298 	{
299 		.name   = "NP_Image",
300 		.start  = 0x27020000,
301 		.end    = 0x27060000 - 1,
302 		.flags  = IORESOURCE_MEM,
303 	},
304 	{
305 		.name   = "NP_IPC",
306 		.start  = 0x63500000,
307 		.end    = 0x63580000 - 1,
308 		.flags  = IORESOURCE_IO,
309 	},
310 	/*
311 	 * Add other resources here
312 	 */
313 	{ },
314 };
315 
316 /*
317  * NON_DVR_CAPABLE GAIA RESOURCES
318  */
319 struct resource non_dvr_gaia_resources[] __initdata = {
320 	/*
321 	 *
322 	 * VIDEO1 / LX1
323 	 *
324 	 */
325 	{
326 		.name   = "ST231aImage",	/* Delta-Mu 1 image and ram */
327 		.start  = 0x24000000,
328 		.end    = 0x241FFFFF,		/* 2MiB */
329 		.flags  = IORESOURCE_MEM,
330 	},
331 	{
332 		.name   = "ST231aMonitor",	/* 8KiB block ST231a monitor */
333 		.start  = 0x24200000,
334 		.end    = 0x24201FFF,
335 		.flags  = IORESOURCE_MEM,
336 	},
337 	{
338 		.name   = "MediaMemory1",
339 		.start  = 0x24202000,
340 		.end    = 0x25FFFFFF, /*~29.9MiB (32MiB - (2MiB + 8KiB)) */
341 		.flags  = IORESOURCE_MEM,
342 	},
343 	/*
344 	 *
345 	 * VIDEO2 / LX2
346 	 *
347 	 */
348 	{
349 		.name   = "ST231bImage",	/* Delta-Mu 2 image and ram */
350 		.start  = 0x60000000,
351 		.end    = 0x601FFFFF,		/* 2MiB */
352 		.flags  = IORESOURCE_IO,
353 	},
354 	{
355 		.name   = "ST231bMonitor",	/* 8KiB block ST231b monitor */
356 		.start  = 0x60200000,
357 		.end    = 0x60201FFF,
358 		.flags  = IORESOURCE_IO,
359 	},
360 	{
361 		.name   = "MediaMemory2",
362 		.start  = 0x60202000,
363 		.end    = 0x61FFFFFF, /*~29.9MiB (32MiB - (2MiB + 8KiB)) */
364 		.flags  = IORESOURCE_IO,
365 	},
366 	/*
367 	 *
368 	 * Sysaudio Driver
369 	 *
370 	 * This driver requires:
371 	 *
372 	 * Arbitrary Based Buffers:
373 	 *  DSP_Image_Buff - DSP code and data images (1MB)
374 	 *  ADSC_CPU_PCM_Buff - ADSC CPU PCM buffer (40KB)
375 	 *  ADSC_AUX_Buff - ADSC AUX buffer (16KB)
376 	 *  ADSC_Main_Buff - ADSC Main buffer (16KB)
377 	 *
378 	 */
379 	{
380 		.name   = "DSP_Image_Buff",
381 		.start  = 0x00000000,
382 		.end    = 0x000FFFFF,
383 		.flags  = IORESOURCE_MEM,
384 	},
385 	{
386 		.name   = "ADSC_CPU_PCM_Buff",
387 		.start  = 0x00000000,
388 		.end    = 0x00009FFF,
389 		.flags  = IORESOURCE_MEM,
390 	},
391 	{
392 		.name   = "ADSC_AUX_Buff",
393 		.start  = 0x00000000,
394 		.end    = 0x00003FFF,
395 		.flags  = IORESOURCE_MEM,
396 	},
397 	{
398 		.name   = "ADSC_Main_Buff",
399 		.start  = 0x00000000,
400 		.end    = 0x00003FFF,
401 		.flags  = IORESOURCE_MEM,
402 	},
403 	/*
404 	 *
405 	 * STAVEM driver/STAPI
406 	 *
407 	 * This driver requires:
408 	 *
409 	 * Arbitrary Based Buffers:
410 	 *  This memory area is used for allocating buffers for Video decoding
411 	 *  purposes.  Allocation/De-allocation within this buffer is managed
412 	 *  by the STAVMEM driver of the STAPI.  They could be Decimated
413 	 *  Picture Buffers, Intermediate Buffers, as deemed necessary for
414 	 *  video decoding purposes, for any video decoders on Zeus.
415 	 *
416 	 */
417 	{
418 		.name   = "AVMEMPartition0",
419 		.start  = 0x63580000,
420 		.end    = 0x64180000 - 1,  /* 12 MB total */
421 		.flags  = IORESOURCE_IO,
422 	},
423 	/*
424 	 *
425 	 * DOCSIS Subsystem
426 	 *
427 	 * This driver requires:
428 	 *
429 	 * Arbitrary Based Buffers:
430 	 *  Docsis -
431 	 *
432 	 */
433 	{
434 		.name   = "Docsis",
435 		.start  = 0x62000000,
436 		.end    = 0x62700000 - 1,	/* 7 MB total */
437 		.flags  = IORESOURCE_IO,
438 	},
439 	/*
440 	 *
441 	 * GHW HAL Driver
442 	 *
443 	 * This driver requires:
444 	 *
445 	 * Arbitrary Based Buffers:
446 	 *  GraphicsHeap - PowerTV Graphics Heap
447 	 *
448 	 */
449 	{
450 		.name   = "GraphicsHeap",
451 		.start  = 0x62700000,
452 		.end    = 0x63500000 - 1,	/* 14 MB total */
453 		.flags  = IORESOURCE_IO,
454 	},
455 	/*
456 	 *
457 	 * multi com buffer area
458 	 *
459 	 * This driver requires:
460 	 *
461 	 * Arbitrary Based Buffers:
462 	 *  Docsis -
463 	 *
464 	 */
465 	{
466 		.name   = "MulticomSHM",
467 		.start  = 0x26000000,
468 		.end    = 0x26020000 - 1,
469 		.flags  = IORESOURCE_MEM,
470 	},
471 	/*
472 	 *
473 	 * DMA Ring buffer
474 	 *
475 	 * This driver requires:
476 	 *
477 	 * Arbitrary Based Buffers:
478 	 *  Docsis -
479 	 *
480 	 */
481 	{
482 		.name   = "BMM_Buffer",
483 		.start  = 0x00000000,
484 		.end    = 0x000AA000 - 1,
485 		.flags  = IORESOURCE_MEM,
486 	},
487 	/*
488 	 *
489 	 * Display bins buffer for unit0
490 	 *
491 	 * This driver requires:
492 	 *
493 	 * Arbitrary Based Buffers:
494 	 *  Display Bins for unit0
495 	 *
496 	 */
497 	{
498 		.name   = "DisplayBins0",
499 		.start  = 0x00000000,
500 		.end    = 0x00000FFF,		/* 4 KB total */
501 		.flags  = IORESOURCE_MEM,
502 	},
503 	/*
504 	 *
505 	 * Display bins buffer
506 	 *
507 	 * This driver requires:
508 	 *
509 	 * Arbitrary Based Buffers:
510 	 *  Display Bins for unit1
511 	 *
512 	 */
513 	{
514 		.name   = "DisplayBins1",
515 		.start  = 0x64AD4000,
516 		.end    = 0x64AD5000 - 1,  /* 4 KB total */
517 		.flags  = IORESOURCE_IO,
518 	},
519 	/*
520 	 *
521 	 * AVFS: player HAL memory
522 	 *
523 	 *
524 	 */
525 	{
526 		.name   = "AvfsDmaMem",
527 		.start  = 0x6430E000,
528 		.end    = 0x645D2C00 - 1,  /* 945K * 3 for playback */
529 		.flags  = IORESOURCE_IO,
530 	},
531 	/*
532 	 *
533 	 * PMEM
534 	 *
535 	 * This driver requires:
536 	 *
537 	 * Arbitrary Based Buffers:
538 	 *  Persistent memory for diagnostics.
539 	 *
540 	 */
541 	{
542 		.name   = "DiagPersistentMemory",
543 		.start  = 0x00000000,
544 		.end    = 0x10000 - 1,
545 		.flags  = IORESOURCE_MEM,
546 	},
547 	/*
548 	 *
549 	 * Smartcard
550 	 *
551 	 * This driver requires:
552 	 *
553 	 * Arbitrary Based Buffers:
554 	 *  Read and write buffers for Internal/External cards
555 	 *
556 	 */
557 	{
558 		.name   = "SmartCardInfo",
559 		.start  = 0x64AD1000,
560 		.end    = 0x64AD3800 - 1,
561 		.flags  = IORESOURCE_IO,
562 	},
563 	/*
564 	 *
565 	 * KAVNET
566 	 *    NP Reset Vector - must be of the form xxCxxxxx
567 	 *	   NP Image - must be video bank 1
568 	 *	   NP IPC - must be video bank 2
569 	 */
570 	{
571 		.name   = "NP_Reset_Vector",
572 		.start  = 0x27c00000,
573 		.end    = 0x27c01000 - 1,
574 		.flags  = IORESOURCE_MEM,
575 	},
576 	{
577 		.name   = "NP_Image",
578 		.start  = 0x27020000,
579 		.end    = 0x27060000 - 1,
580 		.flags  = IORESOURCE_MEM,
581 	},
582 	{
583 		.name   = "NP_IPC",
584 		.start  = 0x63500000,
585 		.end    = 0x63580000 - 1,
586 		.flags  = IORESOURCE_IO,
587 	},
588 	{ },
589 };
590