pci_sbdf_t sbdf, uint32_t where)
{
const struct pci_config_window *cfg = bridge->cfg;
- struct pci_ecam_ops *ops =
- container_of(bridge->ops, struct pci_ecam_ops, pci_ops);
+ const struct pci_ecam_ops *ops =
+ container_of(bridge->ops, const struct pci_ecam_ops, pci_ops);
unsigned int devfn_shift = ops->bus_shift - 8;
void __iomem *base;
return domain;
}
-int pci_host_common_probe(struct dt_device_node *dev, const void *data)
+int pci_host_common_probe(struct dt_device_node *dev,
+ const struct pci_ecam_ops *ops)
{
struct pci_host_bridge *bridge;
struct pci_config_window *cfg;
- struct pci_ecam_ops *ops;
int err;
if ( dt_device_for_passthrough(dev) )
return 0;
- ops = (struct pci_ecam_ops *) data;
-
bridge = pci_alloc_host_bridge();
if ( !bridge )
return -ENOMEM;
struct list_head node; /* Node in list of host bridges */
uint16_t segment; /* Segment number */
struct pci_config_window* cfg; /* Pointer to the bridge config window */
- struct pci_ops *ops;
+ const struct pci_ops *ops;
};
struct pci_ops {
/* Default ECAM ops */
extern const struct pci_ecam_ops pci_generic_ecam_ops;
-int pci_host_common_probe(struct dt_device_node *dev, const void *data);
+int pci_host_common_probe(struct dt_device_node *dev,
+ const struct pci_ecam_ops *ops);
int pci_generic_config_read(struct pci_host_bridge *bridge, pci_sbdf_t sbdf,
uint32_t reg, uint32_t len, uint32_t *value);
int pci_generic_config_write(struct pci_host_bridge *bridge, pci_sbdf_t sbdf,