| // SPDX-License-Identifier: GPL-2.0+ | |
| /* | |
| * Compatibility functions for pre-driver-model code | |
| * | |
| * Copyright (C) 2014 Google, Inc | |
| */ | |
| #include <common.h> | |
| #include <dm.h> | |
| #include <errno.h> | |
| #include <log.h> | |
| #include <malloc.h> | |
| #include <pci.h> | |
| #include <dm/device-internal.h> | |
| #include <dm/lists.h> | |
| #include "pci_internal.h" | |
| #define PCI_HOSE_OP(rw, name, size, type) \ | |
| int pci_hose_##rw##_config_##name(struct pci_controller *hose, \ | |
| pci_dev_t dev, \ | |
| int offset, type value) \ | |
| { \ | |
| return pci_##rw##_config##size(dev, offset, value); \ | |
| } | |
| PCI_HOSE_OP(read, byte, 8, u8 *) | |
| PCI_HOSE_OP(read, word, 16, u16 *) | |
| PCI_HOSE_OP(read, dword, 32, u32 *) | |
| PCI_HOSE_OP(write, byte, 8, u8) | |
| PCI_HOSE_OP(write, word, 16, u16) | |
| PCI_HOSE_OP(write, dword, 32, u32) | |
| pci_dev_t pci_find_devices(struct pci_device_id *ids, int index) | |
| { | |
| struct udevice *dev; | |
| if (pci_find_device_id(ids, index, &dev)) | |
| return -1; | |
| return dm_pci_get_bdf(dev); | |
| } | |
| struct pci_controller *pci_bus_to_hose(int busnum) | |
| { | |
| struct udevice *bus; | |
| int ret; | |
| ret = pci_get_bus(busnum, &bus); | |
| if (ret) { | |
| debug("%s: Cannot get bus %d: ret=%d\n", __func__, busnum, ret); | |
| return NULL; | |
| } | |
| return dev_get_uclass_priv(pci_get_controller(bus)); | |
| } |