diff --git a/arch/x86_64/src/common/x86_64_pci.c b/arch/x86_64/src/common/x86_64_pci.c index e9d683ecd1b..b6e357b83db 100644 --- a/arch/x86_64/src/common/x86_64_pci.c +++ b/arch/x86_64/src/common/x86_64_pci.c @@ -60,9 +60,9 @@ * Private Functions Definitions ****************************************************************************/ -static int x86_64_pci_write(struct pci_bus_s *bus, unsigned int devfn, +static int x86_64_pci_write(struct pci_bus_s *bus, uint32_t devfn, int where, int size, uint32_t val); -static int x86_64_pci_read(struct pci_bus_s *bus, unsigned int devfn, +static int x86_64_pci_read(struct pci_bus_s *bus, uint32_t devfn, int where, int size, uint32_t *val); static uintptr_t x86_64_pci_map(struct pci_bus_s *bus, uintptr_t start, uintptr_t end); @@ -127,7 +127,7 @@ static struct pci_controller_s g_x86_64_pci = * ****************************************************************************/ -static int x86_64_pci_write(struct pci_bus_s *bus, unsigned int devfn, +static int x86_64_pci_write(struct pci_bus_s *bus, uint32_t devfn, int where, int size, uint32_t val) { uint8_t offset_mask = (4 - size); @@ -173,7 +173,7 @@ static int x86_64_pci_write(struct pci_bus_s *bus, unsigned int devfn, * ****************************************************************************/ -static int x86_64_pci_read(struct pci_bus_s *bus, unsigned int devfn, +static int x86_64_pci_read(struct pci_bus_s *bus, uint32_t devfn, int where, int size, uint32_t *val) { uint8_t offset_mask = 4 - size; diff --git a/drivers/pci/pci.c b/drivers/pci/pci.c index c5d9d05a09f..7752c1bd466 100644 --- a/drivers/pci/pci.c +++ b/drivers/pci/pci.c @@ -758,7 +758,8 @@ static void pci_setup_device(FAR struct pci_device_s *dev, int max_bar, pci_write_config_dword(dev, base_address_0, res->start); if (mask & PCI_BASE_ADDRESS_MEM_TYPE_64) { - pci_write_config_dword(dev, base_address_1, res->start >> 32); + pci_write_config_dword(dev, base_address_1, + (uint64_t)res->start >> 32); } start = res->start; @@ -865,7 +866,7 @@ static void pci_presetup_bridge(FAR struct pci_device_s *dev) pci_write_config_word(dev, PCI_PREF_MEMORY_BASE, (ctrl->mem_pref.start & 0xfff00000) >> 16); pci_write_config_dword(dev, PCI_PREF_BASE_UPPER32, - ctrl->mem_pref.start >> 32); + (uint64_t)ctrl->mem_pref.start >> 32); cmdstat |= PCI_COMMAND_MEMORY; } else @@ -929,7 +930,7 @@ static void pci_postsetup_bridge(FAR struct pci_device_s *dev) pci_write_config_word(dev, PCI_PREF_MEMORY_LIMIT, ((ctrl->mem_pref.start - 1) & 0xfff00000) >> 16); pci_write_config_dword(dev, PCI_PREF_LIMIT_UPPER32, - (ctrl->mem_pref.start - 1) >> 32); + (uint64_t)(ctrl->mem_pref.start - 1) >> 32); } if (pci_resource_size(&ctrl->io)) diff --git a/include/nuttx/pci/pci.h b/include/nuttx/pci/pci.h index 08905f6540e..f1f19442880 100644 --- a/include/nuttx/pci/pci.h +++ b/include/nuttx/pci/pci.h @@ -313,9 +313,9 @@ struct pci_bus_s struct pci_ops_s { - CODE int (*read)(FAR struct pci_bus_s *bus, unsigned int devfn, int where, + CODE int (*read)(FAR struct pci_bus_s *bus, uint32_t devfn, int where, int size, FAR uint32_t *val); - CODE int (*write)(FAR struct pci_bus_s *bus, unsigned int devfn, int where, + CODE int (*write)(FAR struct pci_bus_s *bus, uint32_t devfn, int where, int size, uint32_t val); /* Return memory address for pci resource */