Skip to content

Commit 9dde74f

Browse files
ausyskinrodrigovivi
authored andcommitted
drm/xe/nvm: enable cri platform
Mark CRI as one that have the CSC NVM device. Update the writable override flow to take the information from the scratch register for CRI. Signed-off-by: Alexander Usyskin <alexander.usyskin@intel.com> Reviewed-by: Rodrigo Vivi <rodrigo.vivi@intel.com> Link: https://patch.msgid.link/20251216111034.3093507-1-alexander.usyskin@intel.com Signed-off-by: Rodrigo Vivi <rodrigo.vivi@intel.com>
1 parent 425fe55 commit 9dde74f

2 files changed

Lines changed: 24 additions & 11 deletions

File tree

drivers/gpu/drm/xe/xe_nvm.c

Lines changed: 23 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@
1010
#include "xe_device_types.h"
1111
#include "xe_mmio.h"
1212
#include "xe_nvm.h"
13+
#include "xe_pcode_api.h"
1314
#include "regs/xe_gsc_regs.h"
1415
#include "xe_sriov.h"
1516

@@ -45,39 +46,50 @@ static bool xe_nvm_non_posted_erase(struct xe_device *xe)
4546
{
4647
struct xe_mmio *mmio = xe_root_tile_mmio(xe);
4748

48-
if (xe->info.platform != XE_BATTLEMAGE)
49+
switch (xe->info.platform) {
50+
case XE_CRESCENTISLAND:
51+
case XE_BATTLEMAGE:
52+
return !(xe_mmio_read32(mmio, XE_REG(GEN12_CNTL_PROTECTED_NVM_REG)) &
53+
NVM_NON_POSTED_ERASE_CHICKEN_BIT);
54+
default:
4955
return false;
50-
return !(xe_mmio_read32(mmio, XE_REG(GEN12_CNTL_PROTECTED_NVM_REG)) &
51-
NVM_NON_POSTED_ERASE_CHICKEN_BIT);
56+
}
5257
}
5358

5459
static bool xe_nvm_writable_override(struct xe_device *xe)
5560
{
5661
struct xe_mmio *mmio = xe_root_tile_mmio(xe);
5762
bool writable_override;
58-
resource_size_t base;
63+
struct xe_reg reg;
64+
u32 test_bit;
5965

6066
switch (xe->info.platform) {
67+
case XE_CRESCENTISLAND:
68+
reg = PCODE_SCRATCH(0);
69+
test_bit = FDO_MODE;
70+
break;
6171
case XE_BATTLEMAGE:
62-
base = DG2_GSC_HECI2_BASE;
72+
reg = HECI_FWSTS2(DG2_GSC_HECI2_BASE);
73+
test_bit = HECI_FW_STATUS_2_NVM_ACCESS_MODE;
6374
break;
6475
case XE_PVC:
65-
base = PVC_GSC_HECI2_BASE;
76+
reg = HECI_FWSTS2(PVC_GSC_HECI2_BASE);
77+
test_bit = HECI_FW_STATUS_2_NVM_ACCESS_MODE;
6678
break;
6779
case XE_DG2:
68-
base = DG2_GSC_HECI2_BASE;
80+
reg = HECI_FWSTS2(DG2_GSC_HECI2_BASE);
81+
test_bit = HECI_FW_STATUS_2_NVM_ACCESS_MODE;
6982
break;
7083
case XE_DG1:
71-
base = DG1_GSC_HECI2_BASE;
84+
reg = HECI_FWSTS2(DG1_GSC_HECI2_BASE);
85+
test_bit = HECI_FW_STATUS_2_NVM_ACCESS_MODE;
7286
break;
7387
default:
7488
drm_err(&xe->drm, "Unknown platform\n");
7589
return true;
7690
}
7791

78-
writable_override =
79-
!(xe_mmio_read32(mmio, HECI_FWSTS2(base)) &
80-
HECI_FW_STATUS_2_NVM_ACCESS_MODE);
92+
writable_override = !(xe_mmio_read32(mmio, reg) & test_bit);
8193
if (writable_override)
8294
drm_info(&xe->drm, "NVM access overridden by jumper\n");
8395
return writable_override;

drivers/gpu/drm/xe/xe_pci.c

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -416,6 +416,7 @@ static const struct xe_device_desc cri_desc = {
416416
.dma_mask_size = 52,
417417
.has_display = false,
418418
.has_flat_ccs = false,
419+
.has_gsc_nvm = 1,
419420
.has_i2c = true,
420421
.has_mbx_power_limits = true,
421422
.has_mert = true,

0 commit comments

Comments
 (0)