Merge branch 'master' of ssh://master.kernel.org/pub/scm/linux/kernel/git/linville...
[kernel.git] / arch / mips / powertv / asic / prealloc-zeus.c
1 /*
2  * Memory pre-allocations for Zeus 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:       Ken Eppinett
21  *               David Schleef <ds@schleef.org>
22  */
23
24 #include <linux/init.h>
25 #include <asm/mach-powertv/asic.h>
26
27 /*
28  * DVR_CAPABLE RESOURCES
29  */
30 struct resource dvr_zeus_resources[] __initdata =
31 {
32         /*
33          *
34          * VIDEO1 / LX1
35          *
36          */
37         {
38                 .name   = "ST231aImage",        /* Delta-Mu 1 image and ram */
39                 .start  = 0x20000000,
40                 .end    = 0x201FFFFF,           /* 2MiB */
41                 .flags  = IORESOURCE_IO,
42         },
43         {
44                 .name   = "ST231aMonitor",      /* 8KiB block ST231a monitor */
45                 .start  = 0x20200000,
46                 .end    = 0x20201FFF,
47                 .flags  = IORESOURCE_IO,
48         },
49         {
50                 .name   = "MediaMemory1",
51                 .start  = 0x20202000,
52                 .end    = 0x21FFFFFF, /*~29.9MiB (32MiB - (2MiB + 8KiB)) */
53                 .flags  = IORESOURCE_IO,
54         },
55         /*
56          *
57          * VIDEO2 / LX2
58          *
59          */
60         {
61                 .name   = "ST231bImage",        /* Delta-Mu 2 image and ram */
62                 .start  = 0x30000000,
63                 .end    = 0x301FFFFF,           /* 2MiB */
64                 .flags  = IORESOURCE_IO,
65         },
66         {
67                 .name   = "ST231bMonitor",      /* 8KiB block ST231b monitor */
68                 .start  = 0x30200000,
69                 .end    = 0x30201FFF,
70                 .flags  = IORESOURCE_IO,
71         },
72         {
73                 .name   = "MediaMemory2",
74                 .start  = 0x30202000,
75                 .end    = 0x31FFFFFF, /*~29.9MiB (32MiB - (2MiB + 8KiB)) */
76                 .flags  = IORESOURCE_IO,
77         },
78         /*
79          *
80          * Sysaudio Driver
81          *
82          * This driver requires:
83          *
84          * Arbitrary Based Buffers:
85          *  DSP_Image_Buff - DSP code and data images (1MB)
86          *  ADSC_CPU_PCM_Buff - ADSC CPU PCM buffer (40KB)
87          *  ADSC_AUX_Buff - ADSC AUX buffer (16KB)
88          *  ADSC_Main_Buff - ADSC Main buffer (16KB)
89          *
90          */
91         {
92                 .name   = "DSP_Image_Buff",
93                 .start  = 0x00000000,
94                 .end    = 0x000FFFFF,
95                 .flags  = IORESOURCE_MEM,
96         },
97         {
98                 .name   = "ADSC_CPU_PCM_Buff",
99                 .start  = 0x00000000,
100                 .end    = 0x00009FFF,
101                 .flags  = IORESOURCE_MEM,
102         },
103         {
104                 .name   = "ADSC_AUX_Buff",
105                 .start  = 0x00000000,
106                 .end    = 0x00003FFF,
107                 .flags  = IORESOURCE_MEM,
108         },
109         {
110                 .name   = "ADSC_Main_Buff",
111                 .start  = 0x00000000,
112                 .end    = 0x00003FFF,
113                 .flags  = IORESOURCE_MEM,
114         },
115         /*
116          *
117          * STAVEM driver/STAPI
118          *
119          * This driver requires:
120          *
121          * Arbitrary Based Buffers:
122          *  This memory area is used for allocating buffers for Video decoding
123          *  purposes.  Allocation/De-allocation within this buffer is managed
124          *  by the STAVMEM driver of the STAPI.  They could be Decimated
125          *  Picture Buffers, Intermediate Buffers, as deemed necessary for
126          *  video decoding purposes, for any video decoders on Zeus.
127          *
128          */
129         {
130                 .name   = "AVMEMPartition0",
131                 .start  = 0x00000000,
132                 .end    = 0x00c00000 - 1,       /* 12 MB total */
133                 .flags  = IORESOURCE_MEM,
134         },
135         /*
136          *
137          * DOCSIS Subsystem
138          *
139          * This driver requires:
140          *
141          * Arbitrary Based Buffers:
142          *  Docsis -
143          *
144          */
145         {
146                 .name   = "Docsis",
147                 .start  = 0x40100000,
148                 .end    = 0x407fffff,
149                 .flags  = IORESOURCE_MEM,
150         },
151         /*
152          *
153          * GHW HAL Driver
154          *
155          * This driver requires:
156          *
157          * Arbitrary Based Buffers:
158          *  GraphicsHeap - PowerTV Graphics Heap
159          *
160          */
161         {
162                 .name   = "GraphicsHeap",
163                 .start  = 0x46900000,
164                 .end    = 0x47700000 - 1,       /* 14 MB total */
165                 .flags  = IORESOURCE_MEM,
166         },
167         /*
168          *
169          * multi com buffer area
170          *
171          * This driver requires:
172          *
173          * Arbitrary Based Buffers:
174          *  Docsis -
175          *
176          */
177         {
178                 .name   = "MulticomSHM",
179                 .start  = 0x47900000,
180                 .end    = 0x47920000 - 1,
181                 .flags  = IORESOURCE_MEM,
182         },
183         /*
184          *
185          * DMA Ring buffer
186          *
187          * This driver requires:
188          *
189          * Arbitrary Based Buffers:
190          *  Docsis -
191          *
192          */
193         {
194                 .name   = "BMM_Buffer",
195                 .start  = 0x00000000,
196                 .end    = 0x00280000 - 1,
197                 .flags  = IORESOURCE_MEM,
198         },
199         /*
200          *
201          * Display bins buffer for unit0
202          *
203          * This driver requires:
204          *
205          * Arbitrary Based Buffers:
206          *  Display Bins for unit0
207          *
208          */
209         {
210                 .name   = "DisplayBins0",
211                 .start  = 0x00000000,
212                 .end    = 0x00000FFF,   /* 4 KB total */
213                 .flags  = IORESOURCE_MEM,
214         },
215         /*
216          *
217          * Display bins buffer
218          *
219          * This driver requires:
220          *
221          * Arbitrary Based Buffers:
222          *  Display Bins for unit1
223          *
224          */
225         {
226                 .name   = "DisplayBins1",
227                 .start  = 0x00000000,
228                 .end    = 0x00000FFF,   /* 4 KB total */
229                 .flags  = IORESOURCE_MEM,
230         },
231         /*
232          *
233          * ITFS
234          *
235          * This driver requires:
236          *
237          * Arbitrary Based Buffers:
238          *  Docsis -
239          *
240          */
241         {
242                 .name   = "ITFS",
243                 .start  = 0x00000000,
244                 /* 815,104 bytes each for 2 ITFS partitions. */
245                 .end    = 0x0018DFFF,
246                 .flags  = IORESOURCE_MEM,
247         },
248         /*
249          *
250          * AVFS
251          *
252          * This driver requires:
253          *
254          * Arbitrary Based Buffers:
255          *  Docsis -
256          *
257          */
258         {
259                 .name   = "AvfsDmaMem",
260                 .start  = 0x00000000,
261                 /* (945K * 8) = (128K * 3) 5 playbacks / 3 server */
262                 .end    = 0x007c2000 - 1,
263                 .flags  = IORESOURCE_MEM,
264         },
265         {
266                 .name   = "AvfsFileSys",
267                 .start  = 0x00000000,
268                 .end    = 0x00001000 - 1,  /* 4K */
269                 .flags  = IORESOURCE_MEM,
270         },
271         /*
272          *
273          * PMEM
274          *
275          * This driver requires:
276          *
277          * Arbitrary Based Buffers:
278          *  Persistent memory for diagnostics.
279          *
280          */
281         {
282                 .name   = "DiagPersistentMemory",
283                 .start  = 0x00000000,
284                 .end    = 0x10000 - 1,
285                 .flags  = IORESOURCE_MEM,
286         },
287         /*
288          *
289          * Smartcard
290          *
291          * This driver requires:
292          *
293          * Arbitrary Based Buffers:
294          *  Read and write buffers for Internal/External cards
295          *
296          */
297         {
298                 .name   = "SmartCardInfo",
299                 .start  = 0x00000000,
300                 .end    = 0x2800 - 1,
301                 .flags  = IORESOURCE_MEM,
302         },
303         /*
304          * Add other resources here
305          */
306         { },
307 };
308
309 /*
310  * NON_DVR_CAPABLE ZEUS RESOURCES
311  */
312 struct resource non_dvr_zeus_resources[] __initdata =
313 {
314         /*
315          * VIDEO1 / LX1
316          */
317         {
318                 .name   = "ST231aImage",        /* Delta-Mu 1 image and ram */
319                 .start  = 0x20000000,
320                 .end    = 0x201FFFFF,           /* 2MiB */
321                 .flags  = IORESOURCE_IO,
322         },
323         {
324                 .name   = "ST231aMonitor",      /* 8KiB block ST231a monitor */
325                 .start  = 0x20200000,
326                 .end    = 0x20201FFF,
327                 .flags  = IORESOURCE_IO,
328         },
329         {
330                 .name   = "MediaMemory1",
331                 .start  = 0x20202000,
332                 .end    = 0x21FFFFFF, /*~29.9MiB (32MiB - (2MiB + 8KiB)) */
333                 .flags  = IORESOURCE_IO,
334         },
335         /*
336          * Sysaudio Driver
337          */
338         {
339                 .name   = "DSP_Image_Buff",
340                 .start  = 0x00000000,
341                 .end    = 0x000FFFFF,
342                 .flags  = IORESOURCE_MEM,
343         },
344         {
345                 .name   = "ADSC_CPU_PCM_Buff",
346                 .start  = 0x00000000,
347                 .end    = 0x00009FFF,
348                 .flags  = IORESOURCE_MEM,
349         },
350         {
351                 .name   = "ADSC_AUX_Buff",
352                 .start  = 0x00000000,
353                 .end    = 0x00003FFF,
354                 .flags  = IORESOURCE_MEM,
355         },
356         {
357                 .name   = "ADSC_Main_Buff",
358                 .start  = 0x00000000,
359                 .end    = 0x00003FFF,
360                 .flags  = IORESOURCE_MEM,
361         },
362         /*
363          * STAVEM driver/STAPI
364          */
365         {
366                 .name   = "AVMEMPartition0",
367                 .start  = 0x00000000,
368                 .end    = 0x00600000 - 1,       /* 6 MB total */
369                 .flags  = IORESOURCE_MEM,
370         },
371         /*
372          * DOCSIS Subsystem
373          */
374         {
375                 .name   = "Docsis",
376                 .start  = 0x40100000,
377                 .end    = 0x407fffff,
378                 .flags  = IORESOURCE_MEM,
379         },
380         /*
381          * GHW HAL Driver
382          */
383         {
384                 .name   = "GraphicsHeap",
385                 .start  = 0x46900000,
386                 .end    = 0x47700000 - 1,       /* 14 MB total */
387                 .flags  = IORESOURCE_MEM,
388         },
389         /*
390          * multi com buffer area
391          */
392         {
393                 .name   = "MulticomSHM",
394                 .start  = 0x47900000,
395                 .end    = 0x47920000 - 1,
396                 .flags  = IORESOURCE_MEM,
397         },
398         /*
399          * DMA Ring buffer
400          */
401         {
402                 .name   = "BMM_Buffer",
403                 .start  = 0x00000000,
404                 .end    = 0x00280000 - 1,
405                 .flags  = IORESOURCE_MEM,
406         },
407         /*
408          * Display bins buffer for unit0
409          */
410         {
411                 .name   = "DisplayBins0",
412                 .start  = 0x00000000,
413                 .end    = 0x00000FFF,           /* 4 KB total */
414                 .flags  = IORESOURCE_MEM,
415         },
416         /*
417          *
418          * AVFS: player HAL memory
419          *
420          *
421          */
422         {
423                 .name   = "AvfsDmaMem",
424                 .start  = 0x00000000,
425                 .end    = 0x002c4c00 - 1,       /* 945K * 3 for playback */
426                 .flags  = IORESOURCE_MEM,
427         },
428         /*
429          * PMEM
430          */
431         {
432                 .name   = "DiagPersistentMemory",
433                 .start  = 0x00000000,
434                 .end    = 0x10000 - 1,
435                 .flags  = IORESOURCE_MEM,
436         },
437         /*
438          * Smartcard
439          */
440         {
441                 .name   = "SmartCardInfo",
442                 .start  = 0x00000000,
443                 .end    = 0x2800 - 1,
444                 .flags  = IORESOURCE_MEM,
445         },
446         /*
447          * NAND Flash
448          */
449         {
450                 .name   = "NandFlash",
451                 .start  = NAND_FLASH_BASE,
452                 .end    = NAND_FLASH_BASE + 0x400 - 1,
453                 .flags  = IORESOURCE_IO,
454         },
455         /*
456          * Add other resources here
457          */
458         { },
459 };