ACPI_STATUS
acpi_os_write_pci_configuration (
    acpi_pci_id             *pci_id,
    u32                     reg,
    NATIVE_UINT             value,
    u32                     width)
{
    int			result = 0;

    switch (width)
    {
    case 8:
        result = pci_config_write(pci_id->segment, pci_id->bus,
                                  pci_id->device, pci_id->function, reg, 1, value);
        break;
    case 16:
        result = pci_config_write(pci_id->segment, pci_id->bus,
                                  pci_id->device, pci_id->function, reg, 2, value);
        break;
    case 32:
        result = pci_config_write(pci_id->segment, pci_id->bus,
                                  pci_id->device, pci_id->function, reg, 4, value);
        break;
    default:
        BUG();
    }

    return (result ? AE_ERROR : AE_OK);
}
Esempio n. 2
0
acpi_status
acpi_os_write_pci_configuration (
	struct acpi_pci_id	*pci_id,
	u32			reg,
	acpi_integer		value,
	u32			width)
{
	int			result = 0;

	switch (width)
	{
	case 8:
		result = pci_config_write(pci_id->segment, pci_id->bus,
			pci_id->device, pci_id->function, reg, 1, value);
		break;
	case 16:
		result = pci_config_write(pci_id->segment, pci_id->bus,
			pci_id->device, pci_id->function, reg, 2, value);
		break;
	case 32:
		result = pci_config_write(pci_id->segment, pci_id->bus,
			pci_id->device, pci_id->function, reg, 4, value);
		break;
	default:
		BUG();
	}

	return (result ? AE_ERROR : AE_OK);
}
Esempio n. 3
0
File: pci.c Progetto: nwg/nanos
void pci_config_write_partial(uint8_t bus, uint8_t device, uint8_t function, uint8_t offset, uint32_t value, int size) {
    int remainder = offset & 3;
    offset &= (~(uint8_t)3);
    uint32_t current = pci_config_read(bus, device, function, offset);
    value <<= remainder;
    current |= value;
    pci_config_write(bus, device, function, offset, value);
}
Esempio n. 4
0
/**
 * \brief       Enable PCI command bits of the specified PCI configuration
 *              register.
 * \param addr  Address of PCI configuration register.
 * \param flags Flags used to enable PCI command bits.
 */
void
pci_command_enable(pci_config_addr_t addr, uint32_t flags)
{
  uint32_t data;

  addr.reg_off = 0x04; /* PCI COMMAND_REGISTER */

  data = pci_config_read(addr);
  pci_config_write(addr, data | flags);
}