Commit 1ea2b260 authored by Kent Russell's avatar Kent Russell Committed by Alex Deucher
Browse files

drm/amdgpu: Re-enable FRU check for most models v5



There is at least 1 VG20 DID that does not have an FRU, and trying to read
that will cause a hang. For now, explicitly support reading the FRU for
Arcturus and for the WKS VG20 DIDs, and skip for everything else.
This re-enables serial number reporting for server cards

v2: Add ASIC check
v3: Don't default to true for pre-VG20
v4: Use DID instead of parsing the VBIOS
v5: Sqaush in overflow warning fix

Signed-off-by: default avatarKent Russell <kent.russell@amd.com>
Reviewed-by: default avatarAlex Deucher <alexander.deucher@amd.com>
Signed-off-by: default avatarAlex Deucher <alexander.deucher@amd.com>
parent 3adf175e
Loading
Loading
Loading
Loading
+13 −3
Original line number Diff line number Diff line
@@ -20,6 +20,8 @@
 * OTHER DEALINGS IN THE SOFTWARE.
 *
 */
#include <linux/pci.h>

#include "amdgpu.h"
#include "amdgpu_i2c.h"
#include "smu_v11_0_i2c.h"
@@ -31,8 +33,16 @@

bool is_fru_eeprom_supported(struct amdgpu_device *adev)
{
	/* TODO: Resolve supported ASIC type */

	/* TODO: Gaming SKUs don't have the FRU EEPROM.
	 * Use this hack to address hangs on modprobe on gaming SKUs
	 * until a proper solution can be implemented by only supporting
	 * it on Arcturus, and the explicit chip IDs for VG20 Server cards
	 */
	if ((adev->asic_type == CHIP_ARCTURUS) ||
	    (adev->asic_type == CHIP_VEGA20 && adev->pdev->device == 0x66a0) ||
	    (adev->asic_type == CHIP_VEGA20 && adev->pdev->device == 0x66a1) ||
	    (adev->asic_type == CHIP_VEGA20 && adev->pdev->device == 0x66a4))
		return true;
	return false;
}

@@ -75,7 +85,7 @@ int amdgpu_fru_read_eeprom(struct amdgpu_device *adev, uint32_t addrptr,

int amdgpu_fru_get_product_info(struct amdgpu_device *adev)
{
	unsigned char buff[32];
	unsigned char buff[34];
	int addrptr = 0, size = 0;

	if (!is_fru_eeprom_supported(adev))