Linux Kernel  3.7.1
 All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Macros Groups Pages
prealloc-gaia.c
Go to the documentation of this file.
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  */
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 };