switch (xe->info.platform) { case XE_BATTLEMAGE:
base = DG2_GSC_HECI2_BASE; break; case XE_PVC:
base = PVC_GSC_HECI2_BASE; break; case XE_DG2:
base = DG2_GSC_HECI2_BASE; break; case XE_DG1:
base = DG1_GSC_HECI2_BASE; break; default:
drm_err(&xe->drm, "Unknown platform\n"); returntrue;
}
writable_override =
!(xe_mmio_read32(>->mmio, HECI_FWSTS2(base)) &
HECI_FW_STATUS_2_NVM_ACCESS_MODE); if (writable_override)
drm_info(&xe->drm, "NVM access overridden by jumper\n"); return writable_override;
}
int xe_nvm_init(struct xe_device *xe)
{ struct pci_dev *pdev = to_pci_dev(xe->drm.dev); struct auxiliary_device *aux_dev; struct intel_dg_nvm_dev *nvm; int ret;
if (!xe->info.has_gsc_nvm) return 0;
/* No access to internal NVM from VFs */ if (IS_SRIOV_VF(xe)) return 0;
/* Nvm pointer should be NULL here */ if (WARN_ON(xe->nvm)) return -EFAULT;
xe->nvm = kzalloc(sizeof(*nvm), GFP_KERNEL); if (!xe->nvm) return -ENOMEM;
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.