⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 pci_configspace_init.asm

📁 ADI BF DSP PCI接口代码
💻 ASM
字号:
/* ********************************************************************************
 * 
 * Copyright (c) 2003 Analog Devices Inc.  All rights reserved.
 *
 * *******************************************************************************/
#include "defBF535.h"
#include "pci_ids.h"
#include "My_Header.h"

.GLOBAL PCI_CFG_INIT;
.section program2;

/**********************  PCI module Configuration ****************************/
PCI_CFG_INIT:
  
Initialize:
  	P4.H = HI(PCI_STAT); P4.L = LO(PCI_STAT);		
  	R1 = [P4];
  	[P4] = R1;  // Clear PCI status register 
  	SSYNC;

  	P4.H = HI(PCI_CTL); P4.L = LO(PCI_CTL);	 
  	R0.H= 0x0; R0.L = 0x0;
  	[P4] = R0;     // disable PCI before writing config space
  	SSYNC;

  	P4.H = HI(PCI_ICTL); P4.L = LO(PCI_ICTL);		
  	R0.H= 0x0; R0.L = 0x0;
  	[P4] = R0;     // clear PCI interrupt enables before writing config space
  	SSYNC;

/*************** BEGIN INITIALIZATION ***************************/
Vendor_ID:	
  	P4.H = HI(PCI_CFG_VIC); P4.L = LO(PCI_CFG_VIC);
  	R0.H= 0x0; R0.L = PCI_VENDOR_ID;
  	[P4] = R0;     // write PCI_CFG_VIC
  	SSYNC;

Device_ID:	
  	P4.H = HI(PCI_CFG_DIC); P4.L = LO(PCI_CFG_DIC);
  	R0.H= 0x0; R0.L = PCI_DEVICE_ID;
  	[P4] = R0;     // write PCI_CFG_DIC
  	SSYNC;

Command:	
  	P4.H = HI(PCI_CFG_CMD); P4.L = LO(PCI_CFG_CMD);
  	R0.H= 0x0; R0.L = 0x307;
  	[P4] = R0;     
  	SSYNC;

Revision_ID:	
  	P4.H = HI(PCI_CFG_RID); P4.L = LO(PCI_CFG_RID);
  	R0.H= 0x0; R0.L = PCI_REVISION_ID;
  	[P4] = R0;     
  	SSYNC;

Class_Code:	
  	P4.H = HI(PCI_CFG_CC); P4.L = LO(PCI_CFG_CC);
  	R0.H= PCI_BASE_CLASS_SIGNAL_PROCESSING; R0.L = PCI_CLASS; 
  	[P4] = R0;     
  	SSYNC;

Latency_Timer:
	P4.H = HI(PCI_CFG_MLT); P4.L = LO(PCI_CFG_MLT);
  	R0 = 0x0; 
  	[P4] = R0; // no stringent requirements    
  	SSYNC;

Header_Type:
  	P4.H = HI(PCI_CFG_HT); P4.L = LO(PCI_CFG_HT);
  	R0.H= 0x0; R0.L = 0x0;
  	[P4] = R0;     // Header Type 0
  	SSYNC;

Subsystem_Vendor_ID:	
  	P4.H = HI(PCI_CFG_SVID); P4.L = LO(PCI_CFG_SVID);
  	R0.H= 0x0; R0.L = 0x0;
  	[P4] = R0;     
  	SSYNC;

Subsystem_ID:	
  	P4.H = HI(PCI_CFG_SID); P4.L = LO(PCI_CFG_SID);
  	R0.H= 0x0; R0.L = 0x0;
  	[P4] = R0;     
  	SSYNC;

Interrupt_Pin:	
  	P4.H = HI(PCI_CFG_IP); P4.L = LO(PCI_CFG_IP);
  	R0.H= 0x0;   R0.L = 0x1;	/* INTA is used by ADSP-BF535 in device mode  */
  	[P4] = R0;     
  	SSYNC;

// the host system will provide this information
Interrupt_Line:	
  	P4.H = HI(PCI_CFG_IL); P4.L = LO(PCI_CFG_IL);
  	R0.H= 0x0;   R0.L = 0x0;	
  	[P4] = R0;     
  	SSYNC;

Minimum_Grant:		
  	P4.H = HI(PCI_CFG_MING); P4.L = LO(PCI_CFG_MING);
  	R0.H= 0x0; R0.L = PCI_MIN_GRANT;
  	[P4] = R0;     
  	SSYNC;

Maximum_Latency:		
  	P4.H = HI(PCI_CFG_MAXL); P4.L = LO(PCI_CFG_MAXL);
  	R0.H= 0x0; R0.L = PCI_MAX_LATENCY;
  	[P4] = R0;     
  	SSYNC;

HMCTL:
P4.H = HI(PCI_HMCTL); P4.L = LO(PCI_HMCTL);
R0.H = 0X0; R0.L = (PCI_HMCTL_SYSMMRENAB	| PCI_HMCTL_L2ENAB);
W[P4] = R0; // allow access to L2 and MMR spaces
SSYNC;

/* enable PCI interrupts */
	P4.H = HI(PCI_ICTL); P4.L = LO(PCI_ICTL);
	R0.H= 0x0; R0.L = (PCI_ICTL_RESET);
  	[P4] = R0;     // Enable PCI reset to generate an interrupt to the ADSP-BF535 core
  	SSYNC;

enable_PCI:
	P4.H = HI(PCI_CTL); P4.L = LO(PCI_CTL);
  	R0.H= 0x0; R0.L = (PCI_CTL_HOST | PCI_CTL_ENABPCI | PCI_CTL_FASTBCK2BCK) ;	
  	[P4] = R0;     /* enable PCI as a Device; enable Fast back-to-back*/
  	SSYNC;
PCI_CFG_INIT.END:  rts;  /* Return from PCI init subroutine */

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -