mirror of
https://github.com/NVIDIA/open-gpu-kernel-modules.git
synced 2026-03-14 01:29:49 +00:00
525.53
This commit is contained in:
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* SPDX-FileCopyrightText: Copyright (c) 2019-2020 NVIDIA CORPORATION & AFFILIATES. All rights reserved.
|
||||
* SPDX-FileCopyrightText: Copyright (c) 2019-2022 NVIDIA CORPORATION & AFFILIATES. All rights reserved.
|
||||
* SPDX-License-Identifier: MIT
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a
|
||||
@@ -36,7 +36,6 @@
|
||||
// Interface functions
|
||||
static NvlStatus _nvswitch_inforom_unpack_object(const char *, NvU8 *, NvU32 *);
|
||||
static NvlStatus _nvswitch_inforom_pack_object(const char *, NvU32 *, NvU8 *);
|
||||
static void _nvswitch_inforom_string_copy(inforom_U008 *pSrc, NvU8 *pDst, NvU32 size);
|
||||
static NvlStatus _nvswitch_inforom_read_file(nvswitch_device *device,
|
||||
const char objectName[INFOROM_FS_FILE_NAME_SIZE],
|
||||
NvU32 packedObjectSize, NvU8 *pPackedObject);
|
||||
@@ -45,31 +44,6 @@ static NvlStatus _nvswitch_inforom_write_file(nvswitch_device *device,
|
||||
NvU32 packedObjectSize,
|
||||
NvU8 *pPackedObject);
|
||||
|
||||
/*!
|
||||
* Interface to copy string of inforom object.
|
||||
* inforom_U008 is NvU32, and we use 0xff bits to store the character.
|
||||
* Therefore we need a special copy API.
|
||||
*
|
||||
* @param[in] pSrc Source pointer
|
||||
* @param[out] pDst Destination pointer
|
||||
* @param[in] length Length of the string
|
||||
*/
|
||||
static void
|
||||
_nvswitch_inforom_string_copy
|
||||
(
|
||||
inforom_U008 *pSrc,
|
||||
NvU8 *pDst,
|
||||
NvU32 length
|
||||
)
|
||||
{
|
||||
NvU32 i;
|
||||
|
||||
for (i = 0; i < length; ++i)
|
||||
{
|
||||
pDst[i] = (NvU8)(pSrc[i] & 0xff);
|
||||
}
|
||||
}
|
||||
|
||||
static NvlStatus
|
||||
_nvswitch_inforom_calc_packed_object_size
|
||||
(
|
||||
@@ -337,6 +311,31 @@ _nvswitch_inforom_pack_object
|
||||
return NVL_SUCCESS;
|
||||
}
|
||||
|
||||
/*!
|
||||
* Interface to copy string of inforom object.
|
||||
* inforom_U008 is NvU32, and we use 0xff bits to store the character.
|
||||
* Therefore we need a special copy API.
|
||||
*
|
||||
* @param[in] pSrc Source pointer
|
||||
* @param[out] pDst Destination pointer
|
||||
* @param[in] length Length of the string
|
||||
*/
|
||||
void
|
||||
nvswitch_inforom_string_copy
|
||||
(
|
||||
inforom_U008 *pSrc,
|
||||
NvU8 *pDst,
|
||||
NvU32 length
|
||||
)
|
||||
{
|
||||
NvU32 i;
|
||||
|
||||
for (i = 0; i < length; ++i)
|
||||
{
|
||||
pDst[i] = (NvU8)(pSrc[i] & 0xff);
|
||||
}
|
||||
}
|
||||
|
||||
/*!
|
||||
* Read and unpack an object from the InfoROM filesystem.
|
||||
*
|
||||
@@ -494,7 +493,7 @@ _nvswitch_inforom_read_file
|
||||
nvswitch_os_memset(pDmaBuf, 0, transferSize);
|
||||
|
||||
cmdSeqDesc = 0;
|
||||
nvswitch_timeout_create(NVSWITCH_INTERVAL_5MSEC_IN_NS * 100, &timeout);
|
||||
nvswitch_timeout_create(NVSWITCH_INTERVAL_750MSEC_IN_NS, &timeout);
|
||||
status = flcnQueueCmdPostBlocking(device, pFlcn, (PRM_FLCN_CMD)&soeCmd, NULL, NULL,
|
||||
SOE_RM_CMDQ_LOG_ID, &cmdSeqDesc, &timeout);
|
||||
if (status != NV_OK)
|
||||
@@ -592,7 +591,7 @@ _nvswitch_inforom_write_file
|
||||
}
|
||||
|
||||
cmdSeqDesc = 0;
|
||||
nvswitch_timeout_create(NVSWITCH_INTERVAL_5MSEC_IN_NS * 100, &timeout);
|
||||
nvswitch_timeout_create(NVSWITCH_INTERVAL_750MSEC_IN_NS, &timeout);
|
||||
status = flcnQueueCmdPostBlocking(device, pFlcn, (PRM_FLCN_CMD)&soeCmd, NULL, NULL,
|
||||
SOE_RM_CMDQ_LOG_ID, &cmdSeqDesc, &timeout);
|
||||
if (status != NV_OK)
|
||||
@@ -938,11 +937,11 @@ nvswitch_inforom_read_static_data
|
||||
{
|
||||
pData->OBD.bValid = NV_TRUE;
|
||||
pData->OBD.buildDate = (NvU32)pInforom->OBD.object.buildDate;
|
||||
_nvswitch_inforom_string_copy(pInforom->OBD.object.marketingName,
|
||||
nvswitch_inforom_string_copy(pInforom->OBD.object.marketingName,
|
||||
pData->OBD.marketingName,
|
||||
NV_ARRAY_ELEMENTS(pData->OBD.marketingName));
|
||||
|
||||
_nvswitch_inforom_string_copy(pInforom->OBD.object.serialNumber,
|
||||
nvswitch_inforom_string_copy(pInforom->OBD.object.serialNumber,
|
||||
pData->OBD.serialNum,
|
||||
NV_ARRAY_ELEMENTS(pData->OBD.serialNum));
|
||||
|
||||
@@ -956,7 +955,7 @@ nvswitch_inforom_read_static_data
|
||||
if (pInforom->OEM.bValid)
|
||||
{
|
||||
pData->OEM.bValid = NV_TRUE;
|
||||
_nvswitch_inforom_string_copy(pInforom->OEM.object.oemInfo,
|
||||
nvswitch_inforom_string_copy(pInforom->OEM.object.oemInfo,
|
||||
pData->OEM.oemInfo,
|
||||
NV_ARRAY_ELEMENTS(pData->OEM.oemInfo));
|
||||
}
|
||||
@@ -964,7 +963,7 @@ nvswitch_inforom_read_static_data
|
||||
if (pInforom->IMG.bValid)
|
||||
{
|
||||
pData->IMG.bValid = NV_TRUE;
|
||||
_nvswitch_inforom_string_copy(pInforom->IMG.object.version,
|
||||
nvswitch_inforom_string_copy(pInforom->IMG.object.version,
|
||||
pData->IMG.inforomVer,
|
||||
NV_ARRAY_ELEMENTS(pData->IMG.inforomVer));
|
||||
}
|
||||
@@ -1144,7 +1143,7 @@ nvswitch_initialize_inforom_objects
|
||||
status);
|
||||
}
|
||||
|
||||
status = nvswitch_inforom_dem_load(device);
|
||||
status = device->hal.nvswitch_smbpbi_dem_load(device);
|
||||
if (status != NVL_SUCCESS)
|
||||
{
|
||||
NVSWITCH_PRINT(device, INFO, "Failed to load DEM object, rc: %d\n",
|
||||
|
||||
Reference in New Issue
Block a user