14f1e099582c119cf73d6a873b53e8edaa773d065David VomLehn/*
24f1e099582c119cf73d6a873b53e8edaa773d065David VomLehn * Definitions for memory preallocations
34f1e099582c119cf73d6a873b53e8edaa773d065David VomLehn *
44f1e099582c119cf73d6a873b53e8edaa773d065David VomLehn * Copyright (C) 2005-2009 Scientific-Atlanta, Inc.
54f1e099582c119cf73d6a873b53e8edaa773d065David VomLehn *
64f1e099582c119cf73d6a873b53e8edaa773d065David VomLehn * This program is free software; you can redistribute it and/or modify
74f1e099582c119cf73d6a873b53e8edaa773d065David VomLehn * it under the terms of the GNU General Public License as published by
84f1e099582c119cf73d6a873b53e8edaa773d065David VomLehn * the Free Software Foundation; either version 2 of the License, or
94f1e099582c119cf73d6a873b53e8edaa773d065David VomLehn * (at your option) any later version.
104f1e099582c119cf73d6a873b53e8edaa773d065David VomLehn *
114f1e099582c119cf73d6a873b53e8edaa773d065David VomLehn * This program is distributed in the hope that it will be useful,
124f1e099582c119cf73d6a873b53e8edaa773d065David VomLehn * but WITHOUT ANY WARRANTY; without even the implied warranty of
134f1e099582c119cf73d6a873b53e8edaa773d065David VomLehn * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
144f1e099582c119cf73d6a873b53e8edaa773d065David VomLehn * GNU General Public License for more details.
154f1e099582c119cf73d6a873b53e8edaa773d065David VomLehn *
164f1e099582c119cf73d6a873b53e8edaa773d065David VomLehn * You should have received a copy of the GNU General Public License
174f1e099582c119cf73d6a873b53e8edaa773d065David VomLehn * along with this program; if not, write to the Free Software
184f1e099582c119cf73d6a873b53e8edaa773d065David VomLehn * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
194f1e099582c119cf73d6a873b53e8edaa773d065David VomLehn */
204f1e099582c119cf73d6a873b53e8edaa773d065David VomLehn
214f1e099582c119cf73d6a873b53e8edaa773d065David VomLehn#ifndef _ARCH_MIPS_POWERTV_ASIC_PREALLOC_H
224f1e099582c119cf73d6a873b53e8edaa773d065David VomLehn#define _ARCH_MIPS_POWERTV_ASIC_PREALLOC_H
234f1e099582c119cf73d6a873b53e8edaa773d065David VomLehn
244f1e099582c119cf73d6a873b53e8edaa773d065David VomLehn#define KIBIBYTE(n) ((n) * 1024)    /* Number of kibibytes */
254f1e099582c119cf73d6a873b53e8edaa773d065David VomLehn#define MEBIBYTE(n) ((n) * KIBIBYTE(1024)) /* Number of mebibytes */
264f1e099582c119cf73d6a873b53e8edaa773d065David VomLehn
274f1e099582c119cf73d6a873b53e8edaa773d065David VomLehn/* "struct resource" array element definition */
284f1e099582c119cf73d6a873b53e8edaa773d065David VomLehn#define PREALLOC(NAME, START, END, FLAGS) {	\
294f1e099582c119cf73d6a873b53e8edaa773d065David VomLehn		.name = (NAME),			\
304f1e099582c119cf73d6a873b53e8edaa773d065David VomLehn		.start = (START),		\
314f1e099582c119cf73d6a873b53e8edaa773d065David VomLehn		.end = (END),			\
324f1e099582c119cf73d6a873b53e8edaa773d065David VomLehn		.flags = (FLAGS)		\
334f1e099582c119cf73d6a873b53e8edaa773d065David VomLehn	},
344f1e099582c119cf73d6a873b53e8edaa773d065David VomLehn
354f1e099582c119cf73d6a873b53e8edaa773d065David VomLehn/* Individual resources in the preallocated resource arrays are defined using
364f1e099582c119cf73d6a873b53e8edaa773d065David VomLehn *  macros.  These macros are conditionally defined based on their
374f1e099582c119cf73d6a873b53e8edaa773d065David VomLehn *  corresponding kernel configuration flag:
384f1e099582c119cf73d6a873b53e8edaa773d065David VomLehn *    - CONFIG_PREALLOC_NORMAL: preallocate resources for a normal settop box
394f1e099582c119cf73d6a873b53e8edaa773d065David VomLehn *    - CONFIG_PREALLOC_TFTP: preallocate the TFTP download resource
404f1e099582c119cf73d6a873b53e8edaa773d065David VomLehn *    - CONFIG_PREALLOC_DOCSIS: preallocate the DOCSIS resource
414f1e099582c119cf73d6a873b53e8edaa773d065David VomLehn *    - CONFIG_PREALLOC_PMEM: reserve space for persistent memory
424f1e099582c119cf73d6a873b53e8edaa773d065David VomLehn */
434f1e099582c119cf73d6a873b53e8edaa773d065David VomLehn#ifdef CONFIG_PREALLOC_NORMAL
444f1e099582c119cf73d6a873b53e8edaa773d065David VomLehn#define PREALLOC_NORMAL(name, start, end, flags) \
454f1e099582c119cf73d6a873b53e8edaa773d065David VomLehn   PREALLOC(name, start, end, flags)
464f1e099582c119cf73d6a873b53e8edaa773d065David VomLehn#else
474f1e099582c119cf73d6a873b53e8edaa773d065David VomLehn#define PREALLOC_NORMAL(name, start, end, flags)
484f1e099582c119cf73d6a873b53e8edaa773d065David VomLehn#endif
494f1e099582c119cf73d6a873b53e8edaa773d065David VomLehn
504f1e099582c119cf73d6a873b53e8edaa773d065David VomLehn#ifdef CONFIG_PREALLOC_TFTP
514f1e099582c119cf73d6a873b53e8edaa773d065David VomLehn#define PREALLOC_TFTP(name, start, end, flags) \
524f1e099582c119cf73d6a873b53e8edaa773d065David VomLehn   PREALLOC(name, start, end, flags)
534f1e099582c119cf73d6a873b53e8edaa773d065David VomLehn#else
544f1e099582c119cf73d6a873b53e8edaa773d065David VomLehn#define PREALLOC_TFTP(name, start, end, flags)
554f1e099582c119cf73d6a873b53e8edaa773d065David VomLehn#endif
564f1e099582c119cf73d6a873b53e8edaa773d065David VomLehn
574f1e099582c119cf73d6a873b53e8edaa773d065David VomLehn#ifdef CONFIG_PREALLOC_DOCSIS
584f1e099582c119cf73d6a873b53e8edaa773d065David VomLehn#define PREALLOC_DOCSIS(name, start, end, flags) \
594f1e099582c119cf73d6a873b53e8edaa773d065David VomLehn   PREALLOC(name, start, end, flags)
604f1e099582c119cf73d6a873b53e8edaa773d065David VomLehn#else
614f1e099582c119cf73d6a873b53e8edaa773d065David VomLehn#define PREALLOC_DOCSIS(name, start, end, flags)
624f1e099582c119cf73d6a873b53e8edaa773d065David VomLehn#endif
634f1e099582c119cf73d6a873b53e8edaa773d065David VomLehn
644f1e099582c119cf73d6a873b53e8edaa773d065David VomLehn#ifdef CONFIG_PREALLOC_PMEM
654f1e099582c119cf73d6a873b53e8edaa773d065David VomLehn#define PREALLOC_PMEM(name, start, end, flags) \
664f1e099582c119cf73d6a873b53e8edaa773d065David VomLehn   PREALLOC(name, start, end, flags)
674f1e099582c119cf73d6a873b53e8edaa773d065David VomLehn#else
684f1e099582c119cf73d6a873b53e8edaa773d065David VomLehn#define PREALLOC_PMEM(name, start, end, flags)
694f1e099582c119cf73d6a873b53e8edaa773d065David VomLehn#endif
704f1e099582c119cf73d6a873b53e8edaa773d065David VomLehn#endif
71