Quellcodebibliothek Statistik Leitseite products/Sources/formale Sprachen/C/Linux/drivers/accel/amdxdna/   (Open Source Betriebssystem Version 6.17.9©)  Datei vom 24.10.2025 mit Größe 3 kB image not shown  

Quelle  npu1_regs.c   Sprache: C

 
// SPDX-License-Identifier: GPL-2.0
/*
 * Copyright (C) 2023-2024, Advanced Micro Devices, Inc.
 */


#include <drm/amdxdna_accel.h>
#include <drm/drm_device.h>
#include <drm/gpu_scheduler.h>
#include <linux/sizes.h>

#include "aie2_pci.h"
#include "amdxdna_mailbox.h"
#include "amdxdna_pci_drv.h"

/* Address definition from NPU1 docs */
#define MPNPU_PUB_SEC_INTR  0x3010090
#define MPNPU_PUB_PWRMGMT_INTR  0x3010094
#define MPNPU_PUB_SCRATCH2  0x30100A0
#define MPNPU_PUB_SCRATCH3  0x30100A4
#define MPNPU_PUB_SCRATCH4  0x30100A8
#define MPNPU_PUB_SCRATCH5  0x30100AC
#define MPNPU_PUB_SCRATCH6  0x30100B0
#define MPNPU_PUB_SCRATCH7  0x30100B4
#define MPNPU_PUB_SCRATCH9  0x30100BC

#define MPNPU_SRAM_X2I_MAILBOX_0 0x30A0000
#define MPNPU_SRAM_X2I_MAILBOX_1 0x30A2000
#define MPNPU_SRAM_I2X_MAILBOX_15 0x30BF000

#define MPNPU_APERTURE0_BASE  0x3000000
#define MPNPU_APERTURE1_BASE  0x3080000
#define MPNPU_APERTURE2_BASE  0x30C0000

/* PCIe BAR Index for NPU1 */
#define NPU1_REG_BAR_INDEX  0
#define NPU1_MBOX_BAR_INDEX 4
#define NPU1_PSP_BAR_INDEX  0
#define NPU1_SMU_BAR_INDEX  0
#define NPU1_SRAM_BAR_INDEX 2
/* Associated BARs and Apertures */
#define NPU1_REG_BAR_BASE  MPNPU_APERTURE0_BASE
#define NPU1_MBOX_BAR_BASE MPNPU_APERTURE2_BASE
#define NPU1_PSP_BAR_BASE  MPNPU_APERTURE0_BASE
#define NPU1_SMU_BAR_BASE  MPNPU_APERTURE0_BASE
#define NPU1_SRAM_BAR_BASE MPNPU_APERTURE1_BASE

const struct rt_config npu1_default_rt_cfg[] = {
 { 2, 1, AIE2_RT_CFG_INIT }, /* PDI APP LOAD MODE */
 { 1, 1, AIE2_RT_CFG_CLK_GATING }, /* Clock gating on */
 { 0 },
};

const struct dpm_clk_freq npu1_dpm_clk_table[] = {
 {400, 800},
 {600, 1024},
 {600, 1024},
 {600, 1024},
 {600, 1024},
 {720, 1309},
 {720, 1309},
 {847, 1600},
 { 0 }
};

static const struct amdxdna_dev_priv npu1_dev_priv = {
 .fw_path        = "amdnpu/1502_00/npu.sbin",
 .protocol_major = 0x5,
 .protocol_minor = 0x7,
 .rt_config = npu1_default_rt_cfg,
 .dpm_clk_tbl = npu1_dpm_clk_table,
 .col_align = COL_ALIGN_NONE,
 .mbox_dev_addr  = NPU1_MBOX_BAR_BASE,
 .mbox_size      = 0, /* Use BAR size */
 .sram_dev_addr  = NPU1_SRAM_BAR_BASE,
 .sram_offs      = {
  DEFINE_BAR_OFFSET(MBOX_CHANN_OFF, NPU1_SRAM, MPNPU_SRAM_X2I_MAILBOX_0),
  DEFINE_BAR_OFFSET(FW_ALIVE_OFF,   NPU1_SRAM, MPNPU_SRAM_I2X_MAILBOX_15),
 },
 .psp_regs_off   = {
  DEFINE_BAR_OFFSET(PSP_CMD_REG,    NPU1_PSP, MPNPU_PUB_SCRATCH2),
  DEFINE_BAR_OFFSET(PSP_ARG0_REG,   NPU1_PSP, MPNPU_PUB_SCRATCH3),
  DEFINE_BAR_OFFSET(PSP_ARG1_REG,   NPU1_PSP, MPNPU_PUB_SCRATCH4),
  DEFINE_BAR_OFFSET(PSP_ARG2_REG,   NPU1_PSP, MPNPU_PUB_SCRATCH9),
  DEFINE_BAR_OFFSET(PSP_INTR_REG,   NPU1_PSP, MPNPU_PUB_SEC_INTR),
  DEFINE_BAR_OFFSET(PSP_STATUS_REG, NPU1_PSP, MPNPU_PUB_SCRATCH2),
  DEFINE_BAR_OFFSET(PSP_RESP_REG,   NPU1_PSP, MPNPU_PUB_SCRATCH3),
 },
 .smu_regs_off   = {
  DEFINE_BAR_OFFSET(SMU_CMD_REG,  NPU1_SMU, MPNPU_PUB_SCRATCH5),
  DEFINE_BAR_OFFSET(SMU_ARG_REG,  NPU1_SMU, MPNPU_PUB_SCRATCH7),
  DEFINE_BAR_OFFSET(SMU_INTR_REG, NPU1_SMU, MPNPU_PUB_PWRMGMT_INTR),
  DEFINE_BAR_OFFSET(SMU_RESP_REG, NPU1_SMU, MPNPU_PUB_SCRATCH6),
  DEFINE_BAR_OFFSET(SMU_OUT_REG,  NPU1_SMU, MPNPU_PUB_SCRATCH7),
 },
 .hw_ops  = {
  .set_dpm = npu1_set_dpm,
 },
};

const struct amdxdna_dev_info dev_npu1_info = {
 .reg_bar           = NPU1_REG_BAR_INDEX,
 .mbox_bar          = NPU1_MBOX_BAR_INDEX,
 .sram_bar          = NPU1_SRAM_BAR_INDEX,
 .psp_bar           = NPU1_PSP_BAR_INDEX,
 .smu_bar           = NPU1_SMU_BAR_INDEX,
 .first_col         = 1,
 .dev_mem_buf_shift = 15, /* 32 KiB aligned */
 .dev_mem_base      = AIE2_DEVM_BASE,
 .dev_mem_size      = AIE2_DEVM_SIZE,
 .vbnv              = "RyzenAI-npu1",
 .device_type       = AMDXDNA_DEV_TYPE_KMQ,
 .dev_priv          = &npu1_dev_priv,
 .ops               = &aie2_ops,
};

Messung V0.5
C=95 H=92 G=93

¤ Dauer der Verarbeitung: 0.2 Sekunden  ¤

*© Formatika GbR, Deutschland






Wurzel

Suchen

Beweissystem der NASA

Beweissystem Isabelle

NIST Cobol Testsuite

Cephes Mathematical Library

Wiener Entwicklungsmethode

Haftungshinweis

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.