本文整理汇总了C++中PCI_REVISION函数的典型用法代码示例。如果您正苦于以下问题:C++ PCI_REVISION函数的具体用法?C++ PCI_REVISION怎么用?C++ PCI_REVISION使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了PCI_REVISION函数的20个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的C++代码示例。
示例1: pchb_attach
static void
pchb_attach(struct device *parent, struct device *self, void *aux)
{
struct pci_attach_args *pa = aux;
char devinfo[256];
printf("\n");
pcifound++;
/*
* All we do is print out a description. Eventually, we
* might want to add code that does something that's
* possibly chipset-specific.
*/
if (PCI_VENDOR(pa->pa_id) == PCI_VENDOR_GALILEO &&
PCI_PRODUCT(pa->pa_id) == PCI_PRODUCT_GALILEO_GT64120) {
/* Bah, same product ID... */
/*
* XXX: Is the >= 0x10 test correct? The '120 doco
* lists rev == 0x02 and the '120A doco lists
* rev == 0x10.
*/
snprintf(devinfo, sizeof(devinfo),
"Galileo Technology GT-64120%s System Controller",
PCI_REVISION(pa->pa_class) >= 0x10 ? "A" : "");
} else {
pci_devinfo(pa->pa_id, pa->pa_class, 0, devinfo);
}
printf("%s: %s (rev. 0x%02x)\n", self->dv_xname, devinfo,
PCI_REVISION(pa->pa_class));
}
开发者ID:MarginC,项目名称:kame,代码行数:32,代码来源:pchb.c
示例2: ehci_sb700_match
int
ehci_sb700_match(struct pci_attach_args *pa)
{
if (PCI_VENDOR(pa->pa_id) == PCI_VENDOR_ATI &&
PCI_PRODUCT(pa->pa_id) == PCI_PRODUCT_ATI_SBX00_SMB &&
(PCI_REVISION(pa->pa_class) == 0x3a ||
PCI_REVISION(pa->pa_class) == 0x3b))
return (1);
return (0);
}
开发者ID:ajinkya93,项目名称:OpenBSD,代码行数:11,代码来源:ehci_pci.c
示例3: pci_device_match
/*
* Compare PCI device parameters (vendor id, device id, subsystem id, etc)
* with those specified in the struct pci_dev_t. vid and did of the struct
* must be defined.
*
* Return TRUE on match, FALSE if else.
*/
int
pci_device_match(struct pci_entry_t *e, struct pci_dev_t *c) {
u_int32_t data;
/* These must be defined */
data = pci_read_reg(e, PCI_ID_REG);
#ifdef DEBUG
if (data != 0xFFFFFFFF) {
printf("bus %u, dev %u, fun %u:", e->bus, e->dev, e->fun);
printf("\tvendor id 0x%x, product id 0x%x\n", PCI_VENDOR(data), PCI_PRODUCT(data));
}
#endif /* DEBUG */
if (PCI_PRODUCT(data) != c->did)
return 0;
if (PCI_VENDOR(data) != c->vid)
return 0;
#ifdef DEBUG
printf("bus %u, dev %u, fun %u:", e->bus, e->dev, e->fun);
printf("\tvendor id 0x%x, product id 0x%x\n", PCI_VENDOR(data), PCI_PRODUCT(data));
data = pci_read_reg(e, PCI_CLASS_REG);
printf("\tclass multimedia, subclass 0x%x, revision 0x%x\n",
PCI_SUBCLASS(data), PCI_REVISION(data));
data = pci_read_reg(e, PCI_SUBSYSVEND_REG);
printf("\tsubsystem vendor id 0x%x, subsystem id 0x%x\n", PCI_VENDOR(data), PCI_PRODUCT(data));
#endif /* DEBUG */
data = pci_read_reg(e, PCI_CLASS_REG);
if (PCI_CLASS(data) != PCI_CLASS_MULTIMEDIA)
return 0;
if (c->subclass != PCI_SUBCLASS_ANY)
if (c->subclass != PCI_SUBCLASS(data))
return 0;
if (c->rev != PCI_REVISION_ANY)
if (c->rev != PCI_REVISION(data))
return 0;
data = pci_read_reg(e, PCI_SUBSYSVEND_REG);
if (c->subvid != PCI_SUBSYS_ID_ANY)
if (c->subvid != PCI_VENDOR(data))
return 0;
if (c->subdid != PCI_SUBSYS_ID_ANY)
if (c->subdid != PCI_PRODUCT(data))
return 0;
return 1;
}
开发者ID:jossk,项目名称:fmio-dos,代码行数:55,代码来源:pci.c
示例4: dc_pci_match
/*
* Probe for a 21143 or clone chip. Check the PCI vendor and device
* IDs against our list and return a device name if we find a match.
*/
int
dc_pci_match(struct device *parent, void *match, void *aux)
{
struct pci_attach_args *pa = (struct pci_attach_args *)aux;
struct dc_type *t;
/*
* Support for the 21140 chip is experimental. If it works for you,
* that's great. By default, this chip will use de.
*/
if (PCI_VENDOR(pa->pa_id) == PCI_VENDOR_DEC &&
PCI_PRODUCT(pa->pa_id) == PCI_PRODUCT_DEC_21140)
return (1);
/*
* The following chip revision doesn't seem to work so well with dc,
* so let's have de handle it. (de will return a match of 2)
*/
if (PCI_VENDOR(pa->pa_id) == PCI_VENDOR_DEC &&
PCI_PRODUCT(pa->pa_id) == PCI_PRODUCT_DEC_21142 &&
PCI_REVISION(pa->pa_class) == 0x21)
return (1);
for (t = dc_devs; t->dc_vid != 0; t++) {
if ((PCI_VENDOR(pa->pa_id) == t->dc_vid) &&
(PCI_PRODUCT(pa->pa_id) == t->dc_did)) {
return (3);
}
}
return (0);
}
开发者ID:appleorange1,项目名称:bitrig,代码行数:36,代码来源:if_dc_pci.c
示例5: artisea_chip_map
static void
artisea_chip_map(struct pciide_softc *sc, struct pci_attach_args *pa)
{
struct pciide_channel *cp;
bus_size_t cmdsize, ctlsize;
pcireg_t interface;
int channel;
if (pciide_chipen(sc, pa) == 0)
return;
interface = PCI_INTERFACE(pa->pa_class);
if (interface == 0) {
artisea_chip_map_dpa (sc, pa);
return;
}
aprint_verbose_dev(sc->sc_wdcdev.sc_atac.atac_dev,
"bus-master DMA support present");
#ifdef PCIIDE_I31244_DISABLEDMA
if (sc->sc_pp->ide_product == PCI_PRODUCT_INTEL_31244 &&
PCI_REVISION(pa->pa_class) == 0) {
aprint_verbose(" but disabled due to rev. 0");
sc->sc_dma_ok = 0;
} else
#endif
pciide_mapreg_dma(sc, pa);
aprint_verbose("\n");
/*
* XXX Configure LEDs to show activity.
*/
sc->sc_wdcdev.sc_atac.atac_cap |= ATAC_CAP_DATA16 | ATAC_CAP_DATA32;
sc->sc_wdcdev.sc_atac.atac_pio_cap = 4;
if (sc->sc_dma_ok) {
sc->sc_wdcdev.sc_atac.atac_cap |= ATAC_CAP_DMA | ATAC_CAP_UDMA;
sc->sc_wdcdev.irqack = pciide_irqack;
sc->sc_wdcdev.sc_atac.atac_dma_cap = 2;
sc->sc_wdcdev.sc_atac.atac_udma_cap = 6;
}
sc->sc_wdcdev.sc_atac.atac_set_modes = sata_setup_channel;
sc->sc_wdcdev.sc_atac.atac_channels = sc->wdc_chanarray;
sc->sc_wdcdev.sc_atac.atac_nchannels = PCIIDE_NUM_CHANNELS;
wdc_allocate_regs(&sc->sc_wdcdev);
for (channel = 0; channel < sc->sc_wdcdev.sc_atac.atac_nchannels;
channel++) {
cp = &sc->pciide_channels[channel];
if (pciide_chansetup(sc, channel, interface) == 0)
continue;
pciide_mapchan(pa, cp, interface, &cmdsize, &ctlsize,
pciide_pci_intr);
}
}
开发者ID:NetBsdDriverProxy,项目名称:NetBsdDriverProxy,代码行数:58,代码来源:artsata.c
示例6: pchbattach
void
pchbattach(struct device *parent, struct device *self, void *aux)
{
struct pci_attach_args *pa = aux;
char devinfo[256];
#if NAGP > 0
struct agpbus_attach_args apa;
#endif
volatile unsigned char *python;
uint32_t v;
aprint_normal("\n");
/*
* All we do is print out a description. Eventually, we
* might want to add code that does something that's
* possibly chipset-specific.
*/
pci_devinfo(pa->pa_id, pa->pa_class, 0, devinfo, sizeof(devinfo));
aprint_normal("%s: %s (rev. 0x%02x)\n", self->dv_xname, devinfo,
PCI_REVISION(pa->pa_class));
switch (PCI_VENDOR(pa->pa_id)) {
case PCI_VENDOR_IBM:
switch (PCI_PRODUCT(pa->pa_id)) {
case PCI_PRODUCT_IBM_82660:
ibm82660_print(pa, self);
break;
case PCI_PRODUCT_IBM_PYTHON:
python = mapiodev(0xfeff6000, 0x60);
v = 0x88b78e01; /* taken from linux */
out32rb(python+0x30, v);
v = in32rb(python+0x30);
aprint_debug("Reset python reg 30 to 0x%x\n", v);
break;
}
break;
case PCI_VENDOR_MOT:
switch (PCI_PRODUCT(pa->pa_id)) {
case PCI_PRODUCT_MOT_MPC105:
mpc105_print(pa, self);
break;
case PCI_PRODUCT_MOT_MPC106:
mpc106_print(pa, self);
break;
}
break;
}
#if NAGP > 0
if (pci_get_capability(pa->pa_pc, pa->pa_tag, PCI_CAP_AGP,
NULL, NULL) != 0) {
apa.apa_pci_args = *pa;
config_found_ia(self, "agpbus", &apa, agpbusprint);
}
#endif /* NAGP */
}
开发者ID:lacombar,项目名称:netbsd-alc,代码行数:58,代码来源:pchb.c
示例7: bwi_pci_attach
void
bwi_pci_attach(struct device *parent, struct device *self, void *aux)
{
struct bwi_pci_softc *psc = (struct bwi_pci_softc *)self;
struct pci_attach_args *pa = aux;
struct bwi_softc *sc = &psc->psc_bwi;
const char *intrstr = NULL;
pci_intr_handle_t ih;
pcireg_t memtype, reg;
sc->sc_dmat = pa->pa_dmat;
psc->psc_pc = pa->pa_pc;
psc->psc_pcitag = pa->pa_tag;
/* map control / status registers */
memtype = pci_mapreg_type(pa->pa_pc, pa->pa_tag, BWI_PCI_BAR0);
if (pci_mapreg_map(pa, BWI_PCI_BAR0, memtype, 0, &sc->sc_mem_bt,
&sc->sc_mem_bh, NULL, &psc->psc_mapsize, 0)) {
printf(": can't map mem space\n");
return;
}
/* map interrupt */
if (pci_intr_map(pa, &ih) != 0) {
printf(": can't map interrupt\n");
return;
}
/* establish interrupt */
intrstr = pci_intr_string(psc->psc_pc, ih);
psc->psc_ih = pci_intr_establish(psc->psc_pc, ih, IPL_NET, bwi_intr, sc,
sc->sc_dev.dv_xname);
if (psc->psc_ih == NULL) {
printf(": can't establish interrupt");
if (intrstr != NULL)
printf(" at %s", intrstr);
printf("\n");
return;
}
printf(": %s", intrstr);
/* we need to access PCI config space from the driver */
sc->sc_conf_write = bwi_pci_conf_write;
sc->sc_conf_read = bwi_pci_conf_read;
reg = pci_conf_read(pa->pa_pc, pa->pa_tag, PCI_SUBSYS_ID_REG);
sc->sc_pci_revid = PCI_REVISION(pa->pa_class);
sc->sc_pci_did = PCI_PRODUCT(pa->pa_id);
sc->sc_pci_subvid = PCI_VENDOR(reg);
sc->sc_pci_subdid = PCI_PRODUCT(reg);
bwi_attach(sc);
}
开发者ID:SylvestreG,项目名称:bitrig,代码行数:54,代码来源:if_bwi_pci.c
示例8: nfsmbc_attach
static void
nfsmbc_attach(device_t parent, device_t self, void *aux)
{
struct nfsmbc_softc *sc = device_private(self);
struct pci_attach_args *pa = aux;
struct nfsmbc_attach_args nfsmbca;
pcireg_t reg;
int baseregs[2];
char devinfo[256];
aprint_naive("\n");
pci_devinfo(pa->pa_id, pa->pa_class, 0, devinfo, sizeof(devinfo));
aprint_normal(": %s (rev. 0x%02x)\n", devinfo,
PCI_REVISION(pa->pa_class));
sc->sc_dev = self;
sc->sc_pc = pa->pa_pc;
sc->sc_tag = pa->pa_tag;
sc->sc_pa = pa;
sc->sc_iot = pa->pa_iot;
nfsmbca.nfsmb_iot = sc->sc_iot;
switch (PCI_PRODUCT(pa->pa_id)) {
case PCI_PRODUCT_NVIDIA_NFORCE2_SMBUS:
case PCI_PRODUCT_NVIDIA_NFORCE2_400_SMBUS:
case PCI_PRODUCT_NVIDIA_NFORCE3_SMBUS:
case PCI_PRODUCT_NVIDIA_NFORCE3_250_SMBUS:
case PCI_PRODUCT_NVIDIA_NFORCE4_SMBUS:
baseregs[0] = NFORCE_OLD_SMB1;
baseregs[1] = NFORCE_OLD_SMB2;
break;
default:
baseregs[0] = NFORCE_SMB1;
baseregs[1] = NFORCE_SMB2;
break;
}
reg = pci_conf_read(pa->pa_pc, pa->pa_tag, baseregs[0]);
nfsmbca.nfsmb_num = 1;
nfsmbca.nfsmb_addr = NFORCE_SMBBASE(reg);
sc->sc_nfsmb[0] = config_found(sc->sc_dev, &nfsmbca, nfsmbc_print);
reg = pci_conf_read(pa->pa_pc, pa->pa_tag, baseregs[1]);
nfsmbca.nfsmb_num = 2;
nfsmbca.nfsmb_addr = NFORCE_SMBBASE(reg);
sc->sc_nfsmb[1] = config_found(sc->sc_dev, &nfsmbca, nfsmbc_print);
/* This driver is similar to an ISA bridge that doesn't
* need any special handling. So registering NULL handlers
* are sufficent. */
if (!pmf_device_register(self, NULL, NULL))
aprint_error_dev(self, "couldn't establish power handler\n");
}
开发者ID:NetBsdDriverProxy,项目名称:NetBsdDriverProxy,代码行数:54,代码来源:nfsmb.c
示例9: pcib_attach
static void
pcib_attach(device_t parent, device_t self, void *aux)
{
struct pci_attach_args *pa = aux;
char devinfo[256];
aprint_normal("\n");
pci_devinfo(pa->pa_id, pa->pa_class, 0, devinfo, sizeof(devinfo));
aprint_normal_dev(self, "%s, rev %d\n", devinfo,
PCI_REVISION(pa->pa_class));
}
开发者ID:lacombar,项目名称:netbsd-alc,代码行数:12,代码来源:pcib.c
示例10: siop_pci_match
int
siop_pci_match( struct device *parent, void *match, void *aux)
{
struct pci_attach_args *pa = aux;
const struct siop_product_desc *pp;
/* look if it's a known product */
pp = siop_lookup_product(pa->pa_id, PCI_REVISION(pa->pa_class));
if (pp)
return 1;
return 0;
}
开发者ID:repos-holder,项目名称:openbsd-patches,代码行数:12,代码来源:siop_pci.c
示例11: artisea_chip_map
static void
artisea_chip_map(struct pciide_softc *sc, struct pci_attach_args *pa)
{
struct pciide_channel *cp;
bus_size_t cmdsize, ctlsize;
pcireg_t interface;
int channel;
if (pciide_chipen(sc, pa) == 0)
return;
aprint_normal("%s: bus-master DMA support present",
sc->sc_wdcdev.sc_dev.dv_xname);
#ifndef PCIIDE_I31244_ENABLEDMA
if (sc->sc_pp->ide_product == PCI_PRODUCT_INTEL_31244 &&
PCI_REVISION(pa->pa_class) == 0) {
aprint_normal(" but disabled due to rev. 0");
sc->sc_dma_ok = 0;
} else
#endif
pciide_mapreg_dma(sc, pa);
aprint_normal("\n");
/*
* XXX Configure LEDs to show activity.
*/
sc->sc_wdcdev.cap |= WDC_CAPABILITY_DATA16 | WDC_CAPABILITY_DATA32 |
WDC_CAPABILITY_MODE;
sc->sc_wdcdev.PIO_cap = 4;
if (sc->sc_dma_ok) {
sc->sc_wdcdev.cap |= WDC_CAPABILITY_DMA | WDC_CAPABILITY_UDMA;
sc->sc_wdcdev.cap |= WDC_CAPABILITY_IRQACK;
sc->sc_wdcdev.irqack = pciide_irqack;
sc->sc_wdcdev.DMA_cap = 2;
sc->sc_wdcdev.UDMA_cap = 6;
}
sc->sc_wdcdev.set_modes = sata_setup_channel;
sc->sc_wdcdev.channels = sc->wdc_chanarray;
sc->sc_wdcdev.nchannels = PCIIDE_NUM_CHANNELS;
interface = PCI_INTERFACE(pa->pa_class);
for (channel = 0; channel < sc->sc_wdcdev.nchannels; channel++) {
cp = &sc->pciide_channels[channel];
if (pciide_chansetup(sc, channel, interface) == 0)
continue;
pciide_mapchan(pa, cp, interface, &cmdsize, &ctlsize,
pciide_pci_intr);
}
}
开发者ID:MarginC,项目名称:kame,代码行数:52,代码来源:artsata.c
示例12: ral_cardbus_attach
void
ral_cardbus_attach(struct device *parent, struct device *self,
void *aux)
{
struct ral_cardbus_softc *csc = (struct ral_cardbus_softc *)self;
struct rt2560_softc *sc = &csc->sc_sc;
struct cardbus_attach_args *ca = aux;
cardbus_devfunc_t ct = ca->ca_ct;
char devinfo[256];
bus_addr_t base;
int error, revision;
pci_devinfo(ca->ca_id, ca->ca_class, 0, devinfo, sizeof(devinfo));
revision = PCI_REVISION(ca->ca_class);
aprint_normal(": %s (rev. 0x%02x)\n", devinfo, revision);
csc->sc_opns =
(CARDBUS_PRODUCT(ca->ca_id) == PCI_PRODUCT_RALINK_RT2560) ?
&ral_rt2560_opns : &ral_rt2661_opns;
sc->sc_dmat = ca->ca_dmat;
csc->sc_ct = ct;
csc->sc_tag = ca->ca_tag;
csc->sc_intrline = ca->ca_intrline;
/* power management hooks */
sc->sc_enable = ral_cardbus_enable;
sc->sc_disable = ral_cardbus_disable;
/* map control/status registers */
error = Cardbus_mapreg_map(ct, CARDBUS_BASE0_REG,
CARDBUS_MAPREG_TYPE_MEM, 0, &sc->sc_st, &sc->sc_sh, &base,
&csc->sc_mapsize);
if (error != 0) {
printf(": could not map memory space\n");
return;
}
#if rbus
#else
(*cf->cardbus_mem_open)(cc, 0, base, base + csc->sc_mapsize);
#endif
csc->sc_bar_val = base | CARDBUS_MAPREG_TYPE_MEM;
/* set up the PCI configuration registers */
ral_cardbus_setup(csc);
(*csc->sc_opns->attach)(sc, CARDBUS_PRODUCT(ca->ca_id));
Cardbus_function_disable(ct);
}
开发者ID:Tommmster,项目名称:netbsd-avr32,代码行数:52,代码来源:if_ral_cardbus.c
示例13: virtio_pci_match
int
virtio_pci_match(struct device *parent, void *match, void *aux)
{
struct pci_attach_args *pa;
pa = (struct pci_attach_args *)aux;
if (PCI_VENDOR(pa->pa_id) == PCI_VENDOR_QUMRANET &&
PCI_PRODUCT(pa->pa_id) >= 0x1000 &&
PCI_PRODUCT(pa->pa_id) <= 0x103f &&
PCI_REVISION(pa->pa_class) == 0)
return 1;
return 0;
}
开发者ID:orumin,项目名称:openbsd-efivars,代码行数:13,代码来源:virtio_pci.c
示例14: ral_cardbus_attach
void
ral_cardbus_attach(device_t parent, device_t self, void *aux)
{
struct ral_cardbus_softc *csc = device_private(self);
struct rt2560_softc *sc = &csc->sc_sc;
struct cardbus_attach_args *ca = aux;
cardbus_devfunc_t ct = ca->ca_ct;
char devinfo[256];
bus_addr_t base;
int error, revision;
pci_devinfo(ca->ca_id, ca->ca_class, 0, devinfo, sizeof(devinfo));
revision = PCI_REVISION(ca->ca_class);
aprint_normal(": %s (rev. 0x%02x)\n", devinfo, revision);
csc->sc_opns =
(PCI_PRODUCT(ca->ca_id) == PCI_PRODUCT_RALINK_RT2560) ?
&ral_rt2560_opns : &ral_rt2661_opns;
sc->sc_dev = self;
sc->sc_dmat = ca->ca_dmat;
csc->sc_ct = ct;
csc->sc_tag = ca->ca_tag;
/* power management hooks */
sc->sc_enable = ral_cardbus_enable;
sc->sc_disable = ral_cardbus_disable;
/* map control/status registers */
error = Cardbus_mapreg_map(ct, PCI_BAR0,
PCI_MAPREG_TYPE_MEM, 0, &sc->sc_st, &sc->sc_sh, &base,
&csc->sc_mapsize);
if (error != 0) {
aprint_error(": could not map memory space\n");
return;
}
csc->sc_bar_val = base | PCI_MAPREG_TYPE_MEM;
/* set up the PCI configuration registers */
ral_cardbus_setup(csc);
(*csc->sc_opns->attach)(sc, PCI_PRODUCT(ca->ca_id));
Cardbus_function_disable(ct);
}
开发者ID:ryo,项目名称:netbsd-src,代码行数:46,代码来源:if_ral_cardbus.c
示例15: bwi_pci_match
int
bwi_pci_match(struct device *parent, void *match, void *aux)
{
struct pci_attach_args *pa = aux;
/*
* The second revision of the BCM4311/BCM4312
* chips require v4 firmware.
*/
if (PCI_VENDOR(pa->pa_id) == PCI_VENDOR_BROADCOM &&
(PCI_PRODUCT(pa->pa_id) == PCI_PRODUCT_BROADCOM_BCM4311 ||
PCI_PRODUCT(pa->pa_id) == PCI_PRODUCT_BROADCOM_BCM4312) &&
PCI_REVISION(pa->pa_class) == 0x02)
return (0);
return (pci_matchbyid((struct pci_attach_args *)aux, bwi_pci_devices,
sizeof(bwi_pci_devices) / sizeof(bwi_pci_devices[0])));
}
开发者ID:SylvestreG,项目名称:bitrig,代码行数:18,代码来源:if_bwi_pci.c
示例16: pcmbattach
void
pcmbattach(device_t parent, device_t self, void *aux)
{
struct pci_attach_args *pa = aux;
char devinfo[256];
aprint_naive("\n");
aprint_normal("\n");
/*
* Just print out a description and defer configuration
* until all PCI devices have been attached.
*/
pci_devinfo(pa->pa_id, pa->pa_class, 0, devinfo, sizeof(devinfo));
aprint_normal_dev(self, "%s (rev. 0x%02x)\n", devinfo,
PCI_REVISION(pa->pa_class));
config_defer(self, pcmb_callback);
}
开发者ID:krytarowski,项目名称:netbsd-current-src-sys,代码行数:19,代码来源:pcmb.c
示例17: bonito_mainbus_attach
void
bonito_mainbus_attach(device_t parent, device_t self, void *aux)
{
struct bonito_softc *sc = device_private(self);
struct pcibus_attach_args pba;
struct bonito_config *bc;
pcireg_t rev;
/*
* There is only one PCI controller on an Algorithmics board.
*/
#if defined(ALGOR_P6032)
bc = &p6032_configuration.ac_bonito;
#endif
sc->sc_bonito = bc;
rev = PCI_REVISION(REGVAL(BONITO_PCICLASS));
printf(": BONITO Memory and PCI controller, %s rev. %d.%d\n",
BONITO_REV_FPGA(rev) ? "FPGA" : "ASIC",
BONITO_REV_MAJOR(rev), BONITO_REV_MINOR(rev));
pba.pba_flags = PCI_FLAGS_IO_OKAY | PCI_FLAGS_MEM_OKAY;
pba.pba_bus = 0;
pba.pba_bridgetag = NULL;
#if defined(ALGOR_P6032)
{
struct p6032_config *acp = &p6032_configuration;
pba.pba_iot = &acp->ac_iot;
pba.pba_memt = &acp->ac_memt;
pba.pba_dmat = &acp->ac_pci_dmat;
pba.pba_dmat64 = NULL;
pba.pba_pc = &acp->ac_pc;
}
#endif /* ALGOR_P6032 */
(void) config_found_ia(self, "pcibus", &pba, pcibusprint);
}
开发者ID:yazshel,项目名称:netbsd-kernel,代码行数:40,代码来源:bonito_mainbus.c
示例18: ahci_ati_sb_idetoahci
void
ahci_ati_sb_idetoahci(struct ahci_softc *sc, struct pci_attach_args *pa)
{
pcireg_t magic;
if (PCI_SUBCLASS(pa->pa_class) == PCI_SUBCLASS_MASS_STORAGE_IDE) {
magic = pci_conf_read(pa->pa_pc, pa->pa_tag,
AHCI_PCI_ATI_SB600_MAGIC);
pci_conf_write(pa->pa_pc, pa->pa_tag,
AHCI_PCI_ATI_SB600_MAGIC,
magic | AHCI_PCI_ATI_SB600_LOCKED);
pci_conf_write(pa->pa_pc, pa->pa_tag, PCI_CLASS_REG,
PCI_CLASS_MASS_STORAGE << PCI_CLASS_SHIFT |
PCI_SUBCLASS_MASS_STORAGE_SATA << PCI_SUBCLASS_SHIFT |
AHCI_PCI_INTERFACE << PCI_INTERFACE_SHIFT |
PCI_REVISION(pa->pa_class) << PCI_REVISION_SHIFT);
pci_conf_write(pa->pa_pc, pa->pa_tag,
AHCI_PCI_ATI_SB600_MAGIC, magic);
}
}
开发者ID:SylvestreG,项目名称:bitrig,代码行数:22,代码来源:ahci_pci.c
示例19: joy_pci_attach
static void
joy_pci_attach(device_t parent, device_t self, void *aux)
{
struct joy_softc *sc = device_private(self);
struct pci_attach_args *pa = aux;
char devinfo[256];
bus_size_t mapsize;
int reg;
pci_devinfo(pa->pa_id, pa->pa_class, 0, devinfo, sizeof(devinfo));
aprint_normal(": %s (rev 0x%02x)\n", devinfo, PCI_REVISION(pa->pa_class));
for (reg = PCI_MAPREG_START; reg < PCI_MAPREG_END;
reg += sizeof(pcireg_t))
if (bar_is_io(pa->pa_pc, pa->pa_tag, reg))
break;
if (reg >= PCI_MAPREG_END) {
aprint_error_dev(self,
"violates PCI spec, no IO region found\n");
return;
}
if (pci_mapreg_map(pa, reg, PCI_MAPREG_TYPE_IO, 0,
&sc->sc_iot, &sc->sc_ioh, NULL, &mapsize)) {
aprint_error_dev(self, "could not map IO space\n");
return;
}
if (mapsize != 2) {
if (!bus_space_subregion(sc->sc_iot, sc->sc_ioh, 1, 1, &sc->sc_ioh) < 0) {
aprint_error_dev(self, "error mapping subregion\n");
return;
}
}
sc->sc_dev = self;
joyattach(sc);
}
开发者ID:NetBsdDriverProxy,项目名称:NetBsdDriverProxy,代码行数:39,代码来源:joy_pci.c
示例20: irongate_init
/*
* Set up the chipset's function pointers.
*/
void
irongate_init(struct irongate_config *icp, int mallocsafe)
{
pcitag_t tag;
pcireg_t reg;
icp->ic_mallocsafe = mallocsafe;
/*
* Set up PCI configuration space; we can only read the
* revision info through configuration space.
*/
irongate_pci_init(&icp->ic_pc, icp);
#if 0
alpha_pci_chipset = &icp->ic_pc;
#endif
tag = pci_make_tag(&icp->ic_pc, 0, IRONGATE_PCIHOST_DEV, 0);
/* Read the revision. */
reg = irongate_conf_read0(icp, tag, PCI_CLASS_REG);
icp->ic_rev = PCI_REVISION(reg);
if (icp->ic_initted == 0) {
/* Don't do these twice, since they set up extents. */
icp->ic_iot = irongate_bus_io_init(icp);
icp->ic_memt = irongate_bus_mem_init(icp);
#if 0
/* Only one each PCI I/O and MEM window. */
alpha_bus_window_count[ALPHA_BUS_TYPE_PCI_IO] = 1;
alpha_bus_window_count[ALPHA_BUS_TYPE_PCI_MEM] = 1;
alpha_bus_get_window = irongate_bus_get_window;
#endif
}
icp->ic_initted = 1;
}
开发者ID:MarginC,项目名称:kame,代码行数:42,代码来源:irongate.c
注:本文中的PCI_REVISION函数示例由纯净天空整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。 |
请发表评论