Commit 51f1336d4dbd0935d873761f7f267c3f5abc9bd6

Authored by David VomLehn
Committed by Ralf Baechle
1 parent 47a3486144

MIPS: PowerTV: Add Gaia platform definitions.

Define ASIC address, memory preallocations, and initialization code for the
Gaia platform.

Signed-off-by: David VomLehn <dvomlehn@cisco.com>
To: linux-mips@linux-mips.org
Patchwork: https://patchwork.linux-mips.org/patch/1519/
Signed-off-by: Ralf Baechle <ralf@linux-mips.org>

Showing 6 changed files with 708 additions and 11 deletions Side-by-side Diff

arch/mips/include/asm/mach-powertv/asic.h
... ... @@ -40,19 +40,23 @@
40 40 FAMILY_8600VZB,
41 41 FAMILY_1500VZE,
42 42 FAMILY_1500VZF,
  43 + FAMILY_8700,
43 44 FAMILIES
44 45 };
45 46  
46 47 /* Register maps for each ASIC */
47 48 extern const struct register_map calliope_register_map;
48 49 extern const struct register_map cronus_register_map;
  50 +extern const struct register_map gaia_register_map;
49 51 extern const struct register_map zeus_register_map;
50 52  
51 53 extern struct resource dvr_cronus_resources[];
  54 +extern struct resource dvr_gaia_resources[];
52 55 extern struct resource dvr_zeus_resources[];
53 56 extern struct resource non_dvr_calliope_resources[];
54 57 extern struct resource non_dvr_cronus_resources[];
55 58 extern struct resource non_dvr_cronuslite_resources[];
  59 +extern struct resource non_dvr_gaia_resources[];
56 60 extern struct resource non_dvr_vz_calliope_resources[];
57 61 extern struct resource non_dvr_vze_calliope_resources[];
58 62 extern struct resource non_dvr_vzf_calliope_resources[];
arch/mips/include/asm/mach-powertv/asic_regs.h
... ... @@ -27,7 +27,8 @@
27 27 ASIC_CALLIOPE,
28 28 ASIC_CRONUS,
29 29 ASIC_CRONUSLITE,
30   - ASICS
  30 + ASIC_GAIA,
  31 + ASICS /* Number of supported ASICs */
31 32 };
32 33  
33 34 /* hardcoded values read from Chip Version registers */
... ... @@ -37,6 +38,7 @@
37 38  
38 39 #define NAND_FLASH_BASE 0x03000000
39 40 #define CALLIOPE_IO_BASE 0x08000000
  41 +#define GAIA_IO_BASE 0x09000000
40 42 #define CRONUS_IO_BASE 0x09000000
41 43 #define ZEUS_IO_BASE 0x09000000
42 44  
arch/mips/powertv/asic/Makefile
... ... @@ -16,9 +16,9 @@
16 16 # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
17 17 #
18 18  
19   -obj-y += asic-calliope.o asic-cronus.o asic-zeus.o asic_devices.o asic_int.o \
20   - irq_asic.o prealloc-calliope.o prealloc-cronus.o \
21   - prealloc-cronuslite.o prealloc-zeus.o
  19 +obj-y += asic-calliope.o asic-cronus.o asic-gaia.o asic-zeus.o \
  20 + asic_devices.o asic_int.o irq_asic.o prealloc-calliope.o \
  21 + prealloc-cronus.o prealloc-cronuslite.o prealloc-gaia.o prealloc-zeus.o
22 22  
23 23 EXTRA_CFLAGS += -Wall -Werror
arch/mips/powertv/asic/asic-gaia.c
  1 +/*
  2 + * Locations of devices in the Gaia ASIC
  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 +const struct register_map gaia_register_map __initdata = {
  27 + .eic_slow0_strt_add = {.phys = GAIA_IO_BASE + 0x000000},
  28 + .eic_cfg_bits = {.phys = GAIA_IO_BASE + 0x000038},
  29 + .eic_ready_status = {.phys = GAIA_IO_BASE + 0x00004C},
  30 +
  31 + .chipver3 = {.phys = GAIA_IO_BASE + 0x2A0800},
  32 + .chipver2 = {.phys = GAIA_IO_BASE + 0x2A0804},
  33 + .chipver1 = {.phys = GAIA_IO_BASE + 0x2A0808},
  34 + .chipver0 = {.phys = GAIA_IO_BASE + 0x2A080C},
  35 +
  36 + /* The registers of IRBlaster */
  37 + .uart1_intstat = {.phys = GAIA_IO_BASE + 0x2A1800},
  38 + .uart1_inten = {.phys = GAIA_IO_BASE + 0x2A1804},
  39 + .uart1_config1 = {.phys = GAIA_IO_BASE + 0x2A1808},
  40 + .uart1_config2 = {.phys = GAIA_IO_BASE + 0x2A180C},
  41 + .uart1_divisorhi = {.phys = GAIA_IO_BASE + 0x2A1810},
  42 + .uart1_divisorlo = {.phys = GAIA_IO_BASE + 0x2A1814},
  43 + .uart1_data = {.phys = GAIA_IO_BASE + 0x2A1818},
  44 + .uart1_status = {.phys = GAIA_IO_BASE + 0x2A181C},
  45 +
  46 + .int_stat_3 = {.phys = GAIA_IO_BASE + 0x2A2800},
  47 + .int_stat_2 = {.phys = GAIA_IO_BASE + 0x2A2804},
  48 + .int_stat_1 = {.phys = GAIA_IO_BASE + 0x2A2808},
  49 + .int_stat_0 = {.phys = GAIA_IO_BASE + 0x2A280C},
  50 + .int_config = {.phys = GAIA_IO_BASE + 0x2A2810},
  51 + .int_int_scan = {.phys = GAIA_IO_BASE + 0x2A2818},
  52 + .ien_int_3 = {.phys = GAIA_IO_BASE + 0x2A2830},
  53 + .ien_int_2 = {.phys = GAIA_IO_BASE + 0x2A2834},
  54 + .ien_int_1 = {.phys = GAIA_IO_BASE + 0x2A2838},
  55 + .ien_int_0 = {.phys = GAIA_IO_BASE + 0x2A283C},
  56 + .int_level_3_3 = {.phys = GAIA_IO_BASE + 0x2A2880},
  57 + .int_level_3_2 = {.phys = GAIA_IO_BASE + 0x2A2884},
  58 + .int_level_3_1 = {.phys = GAIA_IO_BASE + 0x2A2888},
  59 + .int_level_3_0 = {.phys = GAIA_IO_BASE + 0x2A288C},
  60 + .int_level_2_3 = {.phys = GAIA_IO_BASE + 0x2A2890},
  61 + .int_level_2_2 = {.phys = GAIA_IO_BASE + 0x2A2894},
  62 + .int_level_2_1 = {.phys = GAIA_IO_BASE + 0x2A2898},
  63 + .int_level_2_0 = {.phys = GAIA_IO_BASE + 0x2A289C},
  64 + .int_level_1_3 = {.phys = GAIA_IO_BASE + 0x2A28A0},
  65 + .int_level_1_2 = {.phys = GAIA_IO_BASE + 0x2A28A4},
  66 + .int_level_1_1 = {.phys = GAIA_IO_BASE + 0x2A28A8},
  67 + .int_level_1_0 = {.phys = GAIA_IO_BASE + 0x2A28AC},
  68 + .int_level_0_3 = {.phys = GAIA_IO_BASE + 0x2A28B0},
  69 + .int_level_0_2 = {.phys = GAIA_IO_BASE + 0x2A28B4},
  70 + .int_level_0_1 = {.phys = GAIA_IO_BASE + 0x2A28B8},
  71 + .int_level_0_0 = {.phys = GAIA_IO_BASE + 0x2A28BC},
  72 + .int_docsis_en = {.phys = GAIA_IO_BASE + 0x2A28F4},
  73 +
  74 + .mips_pll_setup = {.phys = GAIA_IO_BASE + 0x1C0000},
  75 + .fs432x4b4_usb_ctl = {.phys = GAIA_IO_BASE + 0x1C0024},
  76 + .test_bus = {.phys = GAIA_IO_BASE + 0x1C00CC},
  77 + .crt_spare = {.phys = GAIA_IO_BASE + 0x1c0108},
  78 + .usb2_ohci_int_mask = {.phys = GAIA_IO_BASE + 0x20000C},
  79 + .usb2_strap = {.phys = GAIA_IO_BASE + 0x200014},
  80 + .ehci_hcapbase = {.phys = GAIA_IO_BASE + 0x21FE00},
  81 + .ohci_hc_revision = {.phys = GAIA_IO_BASE + 0x21fc00},
  82 + .bcm1_bs_lmi_steer = {.phys = GAIA_IO_BASE + 0x2E0004},
  83 + .usb2_control = {.phys = GAIA_IO_BASE + 0x2E004C},
  84 + .usb2_stbus_obc = {.phys = GAIA_IO_BASE + 0x21FF00},
  85 + .usb2_stbus_mess_size = {.phys = GAIA_IO_BASE + 0x21FF04},
  86 + .usb2_stbus_chunk_size = {.phys = GAIA_IO_BASE + 0x21FF08},
  87 +
  88 + .pcie_regs = {.phys = GAIA_IO_BASE + 0x220000},
  89 + .tim_ch = {.phys = GAIA_IO_BASE + 0x2A2C10},
  90 + .tim_cl = {.phys = GAIA_IO_BASE + 0x2A2C14},
  91 + .gpio_dout = {.phys = GAIA_IO_BASE + 0x2A2C20},
  92 + .gpio_din = {.phys = GAIA_IO_BASE + 0x2A2C24},
  93 + .gpio_dir = {.phys = GAIA_IO_BASE + 0x2A2C2C},
  94 + .watchdog = {.phys = GAIA_IO_BASE + 0x2A2C30},
  95 + .front_panel = {.phys = GAIA_IO_BASE + 0x2A3800},
  96 +};
arch/mips/powertv/asic/asic_devices.c
1 1 /*
2   - * ASIC Device List Intialization
3 2 *
4   - * Description: Defines the platform resources for the SA settop.
  3 + * Description: Defines the platform resources for Gaia-based settops.
5 4 *
6 5 * Copyright (C) 2005-2009 Scientific-Atlanta, Inc.
7 6 *
... ... @@ -19,11 +18,6 @@
19 18 * along with this program; if not, write to the Free Software
20 19 * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
21 20 *
22   - * Author: Ken Eppinett
23   - * David Schleef <ds@schleef.org>
24   - *
25   - * Description: Defines the platform resources for the SA settop.
26   - *
27 21 * NOTE: The bootloader allocates persistent memory at an address which is
28 22 * 16 MiB below the end of the highest address in KSEG0. All fixed
29 23 * address memory reservations must avoid this region.
... ... @@ -289,6 +283,9 @@
289 283 case BOOTLDRFAMILY('F', '1'):
290 284 platform_family = FAMILY_1500VZF;
291 285 break;
  286 + case BOOTLDRFAMILY('8', '7'):
  287 + platform_family = FAMILY_8700;
  288 + break;
292 289 default:
293 290 platform_family = -1;
294 291 }
... ... @@ -524,6 +521,15 @@
524 521  
525 522 pr_info("Platform: 8600/Vz Class B - CRONUS, "
526 523 "DVR_CAPABLE\n");
  524 + break;
  525 +
  526 + case FAMILY_8700:
  527 + platform_features = FFS_CAPABLE | PCIE_CAPABLE;
  528 + asic = ASIC_GAIA;
  529 + set_register_map(GAIA_IO_BASE, &gaia_register_map);
  530 + gp_resources = dvr_gaia_resources;
  531 +
  532 + pr_info("Platform: 8700 - GAIA, DVR_CAPABLE\n");
527 533 break;
528 534  
529 535 default:
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 +};