Lines Matching refs:cfg
31 struct pci_config_window *cfg;
39 cfg = kzalloc(sizeof(*cfg), GFP_KERNEL);
40 if (!cfg)
43 cfg->parent = dev;
44 cfg->ops = ops;
45 cfg->busr.start = busr->start;
46 cfg->busr.end = busr->end;
47 cfg->busr.flags = IORESOURCE_BUS;
48 bus_range = resource_size(&cfg->busr);
52 cfg->busr.end = busr->start + bus_range - 1;
54 cfgres, &cfg->busr, busr);
58 cfg->res.start = cfgres->start;
59 cfg->res.end = cfgres->end;
60 cfg->res.flags = IORESOURCE_MEM | IORESOURCE_BUSY;
61 cfg->res.name = "PCI ECAM";
63 conflict = request_resource_conflict(&iomem_resource, &cfg->res);
67 &cfg->res, conflict->name, conflict);
72 cfg->winp = kcalloc(bus_range, sizeof(*cfg->winp), GFP_KERNEL);
73 if (!cfg->winp)
76 cfg->winp[i] =
79 if (!cfg->winp[i])
83 cfg->win = pci_remap_cfgspace(cfgres->start, bus_range * bsz);
84 if (!cfg->win)
89 err = ops->init(cfg);
93 dev_info(dev, "ECAM at %pR for %pR\n", &cfg->res, &cfg->busr);
94 return cfg;
101 pci_ecam_free(cfg);
106 void pci_ecam_free(struct pci_config_window *cfg)
111 if (cfg->winp) {
112 for (i = 0; i < resource_size(&cfg->busr); i++)
113 if (cfg->winp[i])
114 iounmap(cfg->winp[i]);
115 kfree(cfg->winp);
118 if (cfg->win)
119 iounmap(cfg->win);
121 if (cfg->res.parent)
122 release_resource(&cfg->res);
123 kfree(cfg);
133 struct pci_config_window *cfg = bus->sysdata;
134 unsigned int devfn_shift = cfg->ops->bus_shift - 8;
138 if (busn < cfg->busr.start || busn > cfg->busr.end)
141 busn -= cfg->busr.start;
143 base = cfg->winp[busn];
145 base = cfg->win + (busn << cfg->ops->bus_shift);