| Index: arch/arm/mach-tegra/nv/include/nvbootargs.h
|
| diff --git a/arch/arm/mach-tegra/nv/include/nvbootargs.h b/arch/arm/mach-tegra/nv/include/nvbootargs.h
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..908c26f0ea52e19c6d6d37301af3057389d94c24
|
| --- /dev/null
|
| +++ b/arch/arm/mach-tegra/nv/include/nvbootargs.h
|
| @@ -0,0 +1,234 @@
|
| +/*
|
| + * Copyright (c) 2008-2009 NVIDIA Corporation.
|
| + * All rights reserved.
|
| + *
|
| + * Redistribution and use in source and binary forms, with or without
|
| + * modification, are permitted provided that the following conditions are met:
|
| + *
|
| + * Redistributions of source code must retain the above copyright notice,
|
| + * this list of conditions and the following disclaimer.
|
| + *
|
| + * Redistributions in binary form must reproduce the above copyright notice,
|
| + * this list of conditions and the following disclaimer in the documentation
|
| + * and/or other materials provided with the distribution.
|
| + *
|
| + * Neither the name of the NVIDIA Corporation nor the names of its contributors
|
| + * may be used to endorse or promote products derived from this software
|
| + * without specific prior written permission.
|
| + *
|
| + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
|
| + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
| + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
| + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
|
| + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
|
| + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
|
| + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
|
| + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
|
| + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
|
| + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
|
| + * POSSIBILITY OF SUCH DAMAGE.
|
| + *
|
| + */
|
| +
|
| +#ifndef INCLUDED_NVBOOTARGS_H
|
| +#define INCLUDED_NVBOOTARGS_H
|
| +
|
| +/**
|
| + * This defines the basic bootarg structure and keys for use with
|
| + * NvOsBootArgGet and NvOsBootArgSet.
|
| + */
|
| +
|
| +#include "nvcommon.h"
|
| +
|
| +/**
|
| + * The maximum number of memory handles that may be preserved across the
|
| + * bootloader-to-OS transition. @see NvRmBootArg_PreservedMemHandle.
|
| + */
|
| +#define NV_BOOTARGS_MAX_PRESERVED_MEMHANDLES 3
|
| +
|
| +#if defined(__cplusplus)
|
| +extern "C"
|
| +{
|
| +#endif
|
| +
|
| +/* accessor for various boot arg classes, see NvOsBootArg* */
|
| +typedef enum
|
| +{
|
| + NvBootArgKey_Rm = 0x1,
|
| + NvBootArgKey_Display,
|
| + NvBootArgKey_Framebuffer,
|
| + NvBootArgKey_ChipShmoo,
|
| + NvBootArgKey_ChipShmooPhys,
|
| + NvBootArgKey_Carveout,
|
| + NvBootArgKey_WarmBoot,
|
| + NvBootArgKey_PreservedMemHandle_0 = 0x10000,
|
| + NvBootArgKey_PreservedMemHandle_Num = (NvBootArgKey_PreservedMemHandle_0 +
|
| + NV_BOOTARGS_MAX_PRESERVED_MEMHANDLES),
|
| + NvBootArgKey_Force32 = 0x7FFFFFFF,
|
| +} NvBootArgKey;
|
| +
|
| +/**
|
| + * Resource Manager boot args.
|
| + *
|
| + * Nothing here yet.
|
| + */
|
| +typedef struct NvBootArgsRmRec
|
| +{
|
| + NvU32 reserved;
|
| +} NvBootArgsRm;
|
| +
|
| +/**
|
| + * Carveout boot args, which define the physical memory location of the GPU
|
| + * carved-out memory region(s).
|
| + */
|
| +typedef struct NvBootArgsCarveoutRec
|
| +{
|
| + NvUPtr base;
|
| + NvU32 size;
|
| +} NvBootArgsCarveout;
|
| +
|
| +/**
|
| + * Warmbootloader boot args. This structure only contains
|
| + * a mem handle key to preserve the warm bootloader
|
| + * across the bootloader->os transition
|
| + */
|
| +typedef struct NvBootArgsWarmbootRec
|
| +{
|
| + NvU32 MemHandleKey;
|
| +} NvBootArgsWarmboot;
|
| +
|
| +/**
|
| + * PreservedMemHandle boot args, indexed by PreservedMemHandle_0 + n.
|
| + * All values n from 0 to the first value which does not return NvSuccess will
|
| + * be quered at RM initialization in the OS environment. If present, a new
|
| + * memory handle for the physical region specified will be created.
|
| + * This allows physical memory allocations (e.g., for framebuffers) to persist
|
| + * between the bootloader and operating system. Only carveout and IRAM
|
| + * allocations may be preserved with this interface.
|
| + */
|
| +typedef struct NvBootArgsPreservedMemHandleRec
|
| +{
|
| + NvUPtr Address;
|
| + NvU32 Size;
|
| +} NvBootArgsPreservedMemHandle;
|
| +
|
| +
|
| +/**
|
| + * Display boot args, indexed by NvBootArgKey_Display.
|
| + *
|
| + * The bootloader may have a splash screen. This will flag which controller
|
| + * and device was used for the splash screen so the device will not be
|
| + * reinitialized (which causes visual artifacts).
|
| + */
|
| +typedef struct NvBootArgsDisplayRec
|
| +{
|
| + /* which controller is initialized */
|
| + NvU32 Controller;
|
| +
|
| + /* index into the ODM device list of the boot display device */
|
| + NvU32 DisplayDeviceIndex;
|
| +
|
| + /* set to NV_TRUE if the display has been initialized */
|
| + NvBool bEnabled;
|
| +} NvBootArgsDisplay;
|
| +
|
| +/**
|
| + * Framebuffer boot args, indexed by NvBootArgKey_Framebuffer
|
| + *
|
| + * A framebuffer may be shared between the bootloader and the
|
| + * operating system display driver. When this key is present,
|
| + * a preserved memory handle for the framebuffer must also
|
| + * be present, to ensure that no display corruption occurs
|
| + * during the transition.
|
| + */
|
| +typedef struct NvBootArgsFramebufferRec
|
| +{
|
| + /* The key used for accessing the preserved memory handle */
|
| + NvU32 MemHandleKey;
|
| + /* Total memory size of the framebuffer */
|
| + NvU32 Size;
|
| + /* Color format of the framebuffer, cast to a U32 */
|
| + NvU32 ColorFormat;
|
| + /* Width of the framebuffer, in pixels */
|
| + NvU16 Width;
|
| + /* Height of each surface in the framebuffer, in pixels */
|
| + NvU16 Height;
|
| + /* Pitch of a framebuffer scanline, in bytes */
|
| + NvU16 Pitch;
|
| + /* Surface layout of the framebuffer, cast to a U8 */
|
| + NvU8 SurfaceLayout;
|
| + /* Number of contiguous surfaces of the same height in the
|
| + * framebuffer, if multi-buffering. Each surface is
|
| + * assumed to begin at Pitch * Height bytes from the
|
| + * previous surface. */
|
| + NvU8 NumSurfaces;
|
| +} NvBootArgsFramebuffer;
|
| +
|
| +/**
|
| + * Chip chatcterization shmoo data indexed by NvBootArgKey_ChipShmoo
|
| + */
|
| +typedef struct NvBootArgsChipShmooRec
|
| +{
|
| + // The key used for accessing the preserved memory handle of packed
|
| + // charcterization tables
|
| + NvU32 MemHandleKey;
|
| +
|
| + // Offset and size of each unit in the packed buffer
|
| + NvU32 CoreShmooVoltagesListOffset;
|
| + NvU32 CoreShmooVoltagesListSize;
|
| +
|
| + NvU32 CoreScaledLimitsListOffset;
|
| + NvU32 CoreScaledLimitsListSize;
|
| +
|
| + NvU32 OscDoublerListOffset;
|
| + NvU32 OscDoublerListSize;
|
| +
|
| + NvU32 SKUedLimitsOffset;
|
| + NvU32 SKUedLimitsSize;
|
| +
|
| + NvU32 CpuShmooVoltagesListOffset;
|
| + NvU32 CpuShmooVoltagesListSize;
|
| +
|
| + NvU32 CpuScaledLimitsOffset;
|
| + NvU32 CpuScaledLimitsSize;
|
| +
|
| + // Misc charcterization settings
|
| + NvU16 CoreCorner;
|
| + NvU16 CpuCorner;
|
| + NvU32 Dqsib;
|
| + NvU32 SvopLowVoltage;
|
| + NvU32 SvopLowSetting;
|
| + NvU32 SvopHighSetting;
|
| +} NvBootArgsChipShmoo;
|
| +
|
| +/**
|
| + * Chip chatcterization shmoo data indexed by NvBootArgKey_ChipShmooPhys
|
| + */
|
| +typedef struct NvBootArgsChipShmooPhysRec
|
| +{
|
| + NvU32 PhysShmooPtr;
|
| + NvU32 Size;
|
| +} NvBootArgsChipShmooPhys;
|
| +
|
| +#define NVBOOTARG_NUM_PRESERVED_HANDLES (NvBootArgKey_PreservedMemHandle_Num - \
|
| + NvBootArgKey_PreservedMemHandle_0)
|
| +
|
| +/**
|
| + * OS-agnostic bootarg structure.
|
| + */
|
| +typedef struct NvBootArgsRec
|
| +{
|
| + NvBootArgsRm RmArgs;
|
| + NvBootArgsDisplay DisplayArgs;
|
| + NvBootArgsFramebuffer FramebufferArgs;
|
| + NvBootArgsChipShmoo ChipShmooArgs;
|
| + NvBootArgsChipShmooPhys ChipShmooPhysArgs;
|
| + NvBootArgsWarmboot WarmbootArgs;
|
| + NvBootArgsPreservedMemHandle MemHandleArgs[NVBOOTARG_NUM_PRESERVED_HANDLES];
|
| +} NvBootArgs;
|
| +
|
| +#if defined(__cplusplus)
|
| +}
|
| +#endif
|
| +
|
| +#endif // INCLUDED_NVBOOTARGS_H
|
|
|