MIPS: PowerTV: Add Gaia platform definitions.
[linux-2.6.git] / arch / mips / powertv / asic / prealloc-gaia.c
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 };