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