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

📄 pci_arm32.c

📁 原名叫avifile
💻 C
字号:
/*   This file is based on:   $XFree86: xc/programs/Xserver/hw/xfree86/etc/scanpci.c,v 3.34.2.17 1998/11/10 11:55:40 dawes Exp $   Modified for readability by Nick Kurshev*/static int pci_config_type( void ){  unsigned long tmplong1, tmplong2;  unsigned char tmp1, tmp2;  int retval;    retval = 0;     OUTPORT8(PCI_MODE2_ENABLE_REG, 0x00);    OUTPORT8(PCI_MODE2_FORWARD_REG, 0x00);    tmp1 = INPORT8(PCI_MODE2_ENABLE_REG);    tmp2 = INPORT8(PCI_MODE2_FORWARD_REG);    if ((tmp1 == 0x00) && (tmp2 == 0x00)) {	retval = 2;        /*printf("PCI says configuration type 2\n");*/    } else {        tmplong1 = INPORT32(PCI_MODE1_ADDRESS_REG);        OUTPORT32(PCI_MODE1_ADDRESS_REG, PCI_EN);        tmplong2 = INPORT32(PCI_MODE1_ADDRESS_REG);        OUTPORT32(PCI_MODE1_ADDRESS_REG, tmplong1);        if (tmplong2 == PCI_EN) {	    retval = 1;            /*printf("PCI says configuration type 1\n");*/	} else {            /*printf("No PCI !\n");*/	    disable_app_io();	    /*exit(1);*/	    retval = 0xFFFF;	}    }  return retval;}static int pci_get_vendor(          unsigned char bus,          unsigned char dev,          int func){    unsigned long config_cmd;    config_cmd = PCI_EN | (bus<<16) | (dev<<11) | (func<<8);    OUTPORT32(PCI_MODE1_ADDRESS_REG, config_cmd);    return INPORT32(PCI_MODE1_DATA_REG);}static long pci_config_read_long(          unsigned char bus,          unsigned char dev,          int func,           unsigned cmd){    unsigned long config_cmd;    config_cmd = PCI_EN | (bus<<16) | (dev<<11) | (func<<8);    OUTPORT32(PCI_MODE1_ADDRESS_REG, config_cmd | cmd);    return INPORT32(PCI_MODE1_DATA_REG);}static long pci_config_read_word(          unsigned char bus,          unsigned char dev,          int func,           unsigned cmd){    unsigned long config_cmd;    config_cmd = PCI_EN | (bus<<16) | (dev<<11) | (func<<8);    OUTPORT32(PCI_MODE1_ADDRESS_REG, config_cmd | cmd);    return INPORT16(PCI_MODE1_DATA_REG);}static long pci_config_read_byte(          unsigned char bus,          unsigned char dev,          int func,           unsigned cmd){    unsigned long config_cmd;    config_cmd = PCI_EN | (bus<<16) | (dev<<11) | (func<<8);    OUTPORT32(PCI_MODE1_ADDRESS_REG, config_cmd | cmd);    return INPORT8(PCI_MODE1_DATA_REG);}static void pci_config_write_long(          unsigned char bus,          unsigned char dev,          int func,           unsigned cmd,	  long val){    unsigned long config_cmd;    config_cmd = PCI_EN | (bus<<16) | (dev<<11) | (func<<8);    OUTPORT32(PCI_MODE1_ADDRESS_REG, config_cmd | cmd);    OUTPORT32(PCI_MODE1_DATA_REG,val);}static void pci_config_write_word(          unsigned char bus,          unsigned char dev,          int func,           unsigned cmd,	  unsigned val){    unsigned long config_cmd;    config_cmd = PCI_EN | (bus<<16) | (dev<<11) | (func<<8);    OUTPORT32(PCI_MODE1_ADDRESS_REG, config_cmd | cmd);    OUTPORT16(PCI_MODE1_DATA_REG,val);}static void pci_config_write_byte(          unsigned char bus,          unsigned char dev,          int func,           unsigned cmd,	  long val){    unsigned long config_cmd;    config_cmd = PCI_EN | (bus<<16) | (dev<<11) | (func<<8);    OUTPORT32(PCI_MODE1_ADDRESS_REG, config_cmd | cmd);    OUTPORT8(PCI_MODE1_DATA_REG,val);}

⌨️ 快捷键说明

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