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

📄 type0_config.asm

📁 ADI BF DSP PCI接口代码
💻 ASM
字号:
/****************************************************************************************
This file configures devices which do not sit behind a PCI-to-PCI bridge, in this example 
an ADSP-BF535 BUB board
*****************************************************************************************/

#include "defBF535.h"
#include "pci_ids.h"
#include "My_header.h"
 
.GLOBAL PCI_CONFIG_TYPE0;


.section L2_data;
.var Config_Space_type0[16];



.section program;
.align 4;
.extern DMA_TO_DEVICE;
.EXTERN DEVICE_EXECUTE;

  
  /******************** HOST PCI Configurarion reads ************************/
  
  PCI_CONFIG_TYPE0:
  P4.H = Config_Space_type0; P4.L = Config_Space_type0;
  
  P5.H = HI(PCI_CBAP); P5.L = LO(PCI_CBAP);
  R0.H = BIT_31 | PCI_SLOT | BUS_NUMBER; 
  R0.L = DEVICE_NUMBER | FUNCTION_NUMBER| 0x00;
  [P5] = r0;
  ssync;
  
  P3.H = HI(PCI_CONFIG_SPACE_PORT); P3.L = LO(PCI_CONFIG_SPACE_PORT);
  R0 = [P3]; 
  ssync;
  [P4++] = R0;
 
  R0.H = BIT_31 | PCI_SLOT | BUS_NUMBER; 
  R0.L = DEVICE_NUMBER | FUNCTION_NUMBER| 0x04;
  [P5] = r0;
  ssync;
  r1 = 0x207;  // enable device to respond to mem and IO transactions and to master the PCI BUS
  [P3] = r1;
  ssync;
  [P5] = r0;
  R1 = [P3]; 
  ssync;
  [P4++] = R1;
  
  
  R0.H = BIT_31 | PCI_SLOT | BUS_NUMBER; 
  R0.L = DEVICE_NUMBER | FUNCTION_NUMBER| 0x08; 
  [P5] = r0;
  ssync;
  R2 = [P3];  
  ssync;
  [P4++] = R2;
 
  
  R0.H = BIT_31 | PCI_SLOT | BUS_NUMBER; 
  R0.L = DEVICE_NUMBER | FUNCTION_NUMBER| 0x0c; 
  [P5] = r0;
  ssync;
  R3 = [P3]; 
  ssync;
  [P4++] = R3;
  
  
  R0.H = BIT_31 | PCI_SLOT | BUS_NUMBER; 
  R0.L = DEVICE_NUMBER | FUNCTION_NUMBER| 0x10;
  [P5] = r0;
  ssync;
  r4 = 0xFFFFFFFF;
  [P3] = R4;
  SSYNC;
  [P5] = r0;
  SSYNC;
  R4 = [P3]; 
  ssync;
   
  	[P5] = r0;
    ssync;
    P0.H = HI(Memory_Window); P0.L = LO(Memory_Window); // assign Device the base of PCI MEM space 
    [P3] = P0;
    ssync;
    
    [P5] = r0;
    ssync;
    r4 = [p3]; 
    ssync;
  [P4++] = R4;
  ssync;
   
  R0.H = BIT_31 | PCI_SLOT | BUS_NUMBER; 
  R0.L = DEVICE_NUMBER | FUNCTION_NUMBER| 0x14;
  [P5] = r0;
  ssync;
  R3 = [P3];  
  ssync;
  [P4++] = R3;
   
  
	 
  R0.H = BIT_31 | PCI_SLOT | BUS_NUMBER; 
  R0.L = DEVICE_NUMBER | FUNCTION_NUMBER| 0x18;
  [P5] = r0;
  ssync;
  R5 = 0xFFFFFFFF; 
  [P3] = R5;
  SSYNC;
    [P5] = r0;
  	R5 = [P3]; 
  	ssync;
  	
  	  [P5] = r0;
  	  ssync;
  	  R1.H = HI(IO_Window); R1.L = LO(IO_Window); // map Device I/0 to the PCI IO space
  	  [P3] = R1;
  	  ssync;
  	  
  	  [P5] = r0;
  	  ssync;
  	  r5 = [p3];
  	  ssync;
  [P4++] = R5;
  
  R0.H = BIT_31 | PCI_SLOT | BUS_NUMBER; 
  R0.L = DEVICE_NUMBER | FUNCTION_NUMBER| 0x1c;
  [P5] = r0;
  ssync;
  R3 = [P3]; 
  ssync;
  [P4++] = R3;
  
  
  R0.H = BIT_31 | PCI_SLOT | BUS_NUMBER; 
  R0.L = DEVICE_NUMBER | FUNCTION_NUMBER| 0x20;
  [P5] = r0;
  ssync;
  R3 = [P3]; 
  ssync;
  [P4++] = R3;
  
  
  R0.H = BIT_31 | PCI_SLOT | BUS_NUMBER; 
  R0.L = DEVICE_NUMBER | FUNCTION_NUMBER| 0x24;
  [P5] = r0;
  ssync;
  R3 = [P3];  
  ssync;
  [P4++] = R3;
  
  
  R0.H = BIT_31 | PCI_SLOT | BUS_NUMBER; 
  R0.L = DEVICE_NUMBER | FUNCTION_NUMBER| 0x28;
  [P5] = r0;
  ssync;
  R3 = [P3];  
  ssync;
  [P4++] = R3;
  
  
  R0.H = BIT_31 | PCI_SLOT | BUS_NUMBER; 
  R0.L = DEVICE_NUMBER | FUNCTION_NUMBER| 0x2c;
  [P5] = r0;
  ssync;
  R6 = [P3]; 
  ssync;
  [P4++] = R6;
  
  
  R0.H = BIT_31 | PCI_SLOT | BUS_NUMBER; 
  R0.L = DEVICE_NUMBER | FUNCTION_NUMBER| 0x30;
  [P5] = r0;
  ssync;
  R3 = [P3]; 
  ssync;
  [P4++] = R3;
  
  
  R0.H = BIT_31 | PCI_SLOT | BUS_NUMBER; 
  R0.L = DEVICE_NUMBER | FUNCTION_NUMBER| 0x34;
  [P5] = r0;
  ssync;
  R3 = [P3];  
  ssync;
  [P4++] = R3;
  
  
  R0.H = BIT_31 | PCI_SLOT | BUS_NUMBER; 
  R0.L = DEVICE_NUMBER | FUNCTION_NUMBER| 0x38;
  [P5] = r0;
  ssync;
  R3 = [P3]; 
  ssync;
  [P4++] = R3;
  
  
  
  R0.H = BIT_31 | PCI_SLOT | BUS_NUMBER; 
  R0.L = DEVICE_NUMBER | FUNCTION_NUMBER| 0x3c;
  [P5] = r0;
  ssync;
  R3 = [P3];  
  ssync;
  [P4++] = R3;
  
PCI_CONFIG_TYPE0.END: NOP;  
  
  /**************  DMA to device *******************/
  CALL DMA_TO_DEVICE;
  
  JUMP DEVICE_EXECUTE;
  
  
  
  
 

⌨️ 快捷键说明

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