Lines Matching refs:pci
52 struct gen_pci *pci = sys->private_data; in gen_pci_map_cfg_bus_cam() local
53 resource_size_t idx = bus->number - pci->cfg.bus_range->start; in gen_pci_map_cfg_bus_cam()
55 return pci->cfg.win[idx] + ((devfn << 8) | where); in gen_pci_map_cfg_bus_cam()
68 struct gen_pci *pci = sys->private_data; in gen_pci_map_cfg_bus_ecam() local
69 resource_size_t idx = bus->number - pci->cfg.bus_range->start; in gen_pci_map_cfg_bus_ecam()
71 return pci->cfg.win[idx] + ((devfn << 12) | where); in gen_pci_map_cfg_bus_ecam()
95 static void gen_pci_release_of_pci_ranges(struct gen_pci *pci) in gen_pci_release_of_pci_ranges() argument
97 pci_free_resource_list(&pci->resources); in gen_pci_release_of_pci_ranges()
100 static int gen_pci_parse_request_of_pci_ranges(struct gen_pci *pci) in gen_pci_parse_request_of_pci_ranges() argument
103 struct device *dev = pci->host.dev.parent; in gen_pci_parse_request_of_pci_ranges()
108 err = of_pci_get_host_bridge_resources(np, 0, 0xff, &pci->resources, in gen_pci_parse_request_of_pci_ranges()
113 resource_list_for_each_entry(win, &pci->resources) { in gen_pci_parse_request_of_pci_ranges()
131 pci->cfg.bus_range = res; in gen_pci_parse_request_of_pci_ranges()
150 gen_pci_release_of_pci_ranges(pci); in gen_pci_parse_request_of_pci_ranges()
154 static int gen_pci_parse_map_cfg_windows(struct gen_pci *pci) in gen_pci_parse_map_cfg_windows() argument
160 struct device *dev = pci->host.dev.parent; in gen_pci_parse_map_cfg_windows()
163 err = of_address_to_resource(np, 0, &pci->cfg.res); in gen_pci_parse_map_cfg_windows()
170 bus_max = pci->cfg.bus_range->start + in gen_pci_parse_map_cfg_windows()
171 (resource_size(&pci->cfg.res) >> pci->cfg.ops->bus_shift) - 1; in gen_pci_parse_map_cfg_windows()
172 pci->cfg.bus_range->end = min_t(resource_size_t, in gen_pci_parse_map_cfg_windows()
173 pci->cfg.bus_range->end, bus_max); in gen_pci_parse_map_cfg_windows()
175 pci->cfg.win = devm_kcalloc(dev, resource_size(pci->cfg.bus_range), in gen_pci_parse_map_cfg_windows()
176 sizeof(*pci->cfg.win), GFP_KERNEL); in gen_pci_parse_map_cfg_windows()
177 if (!pci->cfg.win) in gen_pci_parse_map_cfg_windows()
181 if (!devm_request_mem_region(dev, pci->cfg.res.start, in gen_pci_parse_map_cfg_windows()
182 resource_size(&pci->cfg.res), in gen_pci_parse_map_cfg_windows()
186 bus_range = pci->cfg.bus_range; in gen_pci_parse_map_cfg_windows()
189 u32 sz = 1 << pci->cfg.ops->bus_shift; in gen_pci_parse_map_cfg_windows()
191 pci->cfg.win[idx] = devm_ioremap(dev, in gen_pci_parse_map_cfg_windows()
192 pci->cfg.res.start + busn * sz, in gen_pci_parse_map_cfg_windows()
194 if (!pci->cfg.win[idx]) in gen_pci_parse_map_cfg_windows()
203 struct gen_pci *pci = sys->private_data; in gen_pci_setup() local
204 list_splice_init(&pci->resources, &sys->resources); in gen_pci_setup()
216 struct gen_pci *pci = devm_kzalloc(dev, sizeof(*pci), GFP_KERNEL); in gen_pci_probe() local
219 .private_data = (void **)&pci, in gen_pci_probe()
225 if (!pci) in gen_pci_probe()
243 pci->cfg.ops = of_id->data; in gen_pci_probe()
244 gen_pci_ops.map_bus = pci->cfg.ops->map_bus; in gen_pci_probe()
245 pci->host.dev.parent = dev; in gen_pci_probe()
246 INIT_LIST_HEAD(&pci->host.windows); in gen_pci_probe()
247 INIT_LIST_HEAD(&pci->resources); in gen_pci_probe()
250 err = gen_pci_parse_request_of_pci_ranges(pci); in gen_pci_probe()
255 err = gen_pci_parse_map_cfg_windows(pci); in gen_pci_probe()
257 gen_pci_release_of_pci_ranges(pci); in gen_pci_probe()