[Skiboot] [PATCH v2 1/3] core/pci: Improve PCI config register filter
Gavin Shan
gwshan at linux.vnet.ibm.com
Thu Aug 11 12:12:36 AEST 2016
This improves PCI config register filter so that it can be reused
by PCI virtual device in subsequent patch:
* First argument to pci_cfg_reg_func() is changed to "void *".
It allows to accept variable data types including PCI virtual
device in future.
* Return value from pci_cfg_reg_func() to be used by PCI virtual
device in future.
* Shortened name of function phb3_pcicfg_filter_rc_pref_window().
Signed-off-by: Gavin Shan <gwshan at linux.vnet.ibm.com>
---
hw/phb3.c | 14 ++++++++------
include/pci.h | 8 ++++----
2 files changed, 12 insertions(+), 10 deletions(-)
diff --git a/hw/phb3.c b/hw/phb3.c
index 8742c7a..20af9a7 100644
--- a/hw/phb3.c
+++ b/hw/phb3.c
@@ -72,10 +72,10 @@ static bool phb3_fenced(struct phb3 *p)
return false;
}
-static void phb3_pcicfg_filter_rc_pref_window(struct pci_device *pd __unused,
- struct pci_cfg_reg_filter *pcrf,
- uint32_t offset, uint32_t len,
- uint32_t *data, bool write)
+static int64_t phb3_pcicfg_rc_pref_window(void *dev __unused,
+ struct pci_cfg_reg_filter *pcrf,
+ uint32_t offset, uint32_t len,
+ uint32_t *data, bool write)
{
uint8_t *pdata;
uint32_t i;
@@ -85,7 +85,7 @@ static void phb3_pcicfg_filter_rc_pref_window(struct pci_device *pd __unused,
pdata = &pcrf->data[offset - pcrf->start];
for (i = 0; i < len; i++, pdata++)
*pdata = (uint8_t)(*data >> (8 * i));
- return;
+ return OPAL_SUCCESS;
}
/* Return whatever we cached */
@@ -100,6 +100,8 @@ static void phb3_pcicfg_filter_rc_pref_window(struct pci_device *pd __unused,
*data |= *pdata;
}
+
+ return OPAL_SUCCESS;
}
/*
@@ -495,7 +497,7 @@ static void phb3_check_device_quirks(struct phb *phb, struct pci_device *dev)
pci_add_cfg_reg_filter(dev,
PCI_CFG_PREF_MEM_BASE_U32, 12,
PCI_REG_FLAG_READ | PCI_REG_FLAG_WRITE,
- phb3_pcicfg_filter_rc_pref_window);
+ phb3_pcicfg_rc_pref_window);
}
}
}
diff --git a/include/pci.h b/include/pci.h
index 1915adc..7350f5c 100644
--- a/include/pci.h
+++ b/include/pci.h
@@ -25,10 +25,10 @@
struct pci_device;
struct pci_cfg_reg_filter;
-typedef void (*pci_cfg_reg_func)(struct pci_device *pd,
- struct pci_cfg_reg_filter *pcrf,
- uint32_t offset, uint32_t len,
- uint32_t *data, bool write);
+typedef int64_t (*pci_cfg_reg_func)(void *dev,
+ struct pci_cfg_reg_filter *pcrf,
+ uint32_t offset, uint32_t len,
+ uint32_t *data, bool write);
struct pci_cfg_reg_filter {
uint32_t flags;
#define PCI_REG_FLAG_READ 0x1
--
2.1.0
More information about the Skiboot
mailing list