コード例 #1
0
void pci_modify_cmdsts(pci_dev_t dev, uint32_t mask, uint32_t val)
{
	uint32_t data;

	pci_cfg_r32(dev, PCI_COMMAND, &data);
	data &= ~mask;
	data |= val;
	pci_cfg_w32(dev, PCI_COMMAND, data);
}
コード例 #2
0
ファイル: main_pci.c プロジェクト: AoLaD/rtems
static int shell_pci_wX(
	unsigned long pciid,
	int offset,
	uint32_t data,
	int size)
{
  uint8_t data8;
  uint16_t data16;
  int result;

  switch(size) {
    case 1:
      if (data > 0xff)
        return PCISTS_EINVAL;
      data8 = data & 0xff;
      result = pci_cfg_w8(pciid, offset, data8);
      if (result == PCISTS_OK)
        printf(" w08[0x%02x]: 0x%02x  DEC=%d\n", offset, data8, data8);
      break;

    case 2:
      if (data > 0xffff)
        return PCISTS_EINVAL;
      data16 = data & 0xffff;
      result = pci_cfg_w16(pciid, offset, data16);
      if (result == PCISTS_OK)
        printf(" w16[0x%02x]: 0x%04x  DEC=%d\n", offset, data16, data16);
      break;

    case 4:
      result = pci_cfg_w32(pciid, offset, data);
      if (result == PCISTS_OK)
        printf(" w32[0x%02x]: 0x%08lx  DEC=%lu\n", offset, data, data);
      break;

    default:
      return PCISTS_EINVAL;
  }
  return result;
}