Lines Matching +full:bus +full:- +full:range
1 // SPDX-License-Identifier: GPL-2.0
6 #include <linux/range.h>
11 #include <asm/pci-direct.h>
23 u32 bus; member
31 * It only supports K8, Fam10h, Fam11h, and Fam15h_00h-0fh .
48 if (info->node == node && info->link == link) in find_pci_root_info()
58 * to the LDT Bus Number Registers found in the northbridge.
63 unsigned bus; in early_root_info_init() local
73 struct range range[RANGE_NUM]; in early_root_info_init() local
82 return -1; in early_root_info_init()
90 bus = hb_probes[i].bus; in early_root_info_init()
92 id = read_pci_config(bus, slot, 0, PCI_VENDOR_ID); in early_root_info_init()
117 reg = read_pci_config(bus, slot, 1, in early_root_info_init()
120 /* Check if that register is enabled for bus range */ in early_root_info_init()
144 reg = read_pci_config(bus, slot, 0, AMD_NB_F0_NODE_ID); in early_root_info_init()
146 reg = read_pci_config(bus, slot, 0, AMD_NB_F0_UNIT_ID); in early_root_info_init()
149 memset(range, 0, sizeof(range)); in early_root_info_init()
150 add_range(range, RANGE_NUM, 0, 0, 0xffff + 1); in early_root_info_init()
153 reg = read_pci_config(bus, slot, 1, 0xc0 + (i << 3)); in early_root_info_init()
158 reg = read_pci_config(bus, slot, 1, 0xc4 + (i << 3)); in early_root_info_init()
174 subtract_range(range, RANGE_NUM, start, end + 1); in early_root_info_init()
176 /* add left over io port range to def node/link, [0, 0xffff] */ in early_root_info_init()
181 if (!range[i].end) in early_root_info_init()
184 update_res(info, range[i].start, range[i].end - 1, in early_root_info_init()
189 memset(range, 0, sizeof(range)); in early_root_info_init()
190 /* 0xfd00000000-0xffffffffff for HT */ in early_root_info_init()
191 end = cap_resource((0xfdULL<<32) - 1); in early_root_info_init()
193 add_range(range, RANGE_NUM, 0, 0, end); in early_root_info_init()
201 subtract_range(range, RANGE_NUM, 0, end); in early_root_info_init()
205 /* need to take out mmconf range */ in early_root_info_init()
208 fam10h_mmconf_start = fam10h_mmconf->start; in early_root_info_init()
209 fam10h_mmconf_end = fam10h_mmconf->end; in early_root_info_init()
210 subtract_range(range, RANGE_NUM, fam10h_mmconf_start, in early_root_info_init()
219 reg = read_pci_config(bus, slot, 1, 0x80 + (i << 3)); in early_root_info_init()
225 reg = read_pci_config(bus, slot, 1, 0x84 + (i << 3)); in early_root_info_init()
240 * some sick allocation would have range overlap with fam10h in early_root_info_init()
241 * mmconf range, so need to update start and end. in early_root_info_init()
254 end = fam10h_mmconf_start - 1; in early_root_info_init()
261 endx = fam10h_mmconf_start - 1; in early_root_info_init()
263 subtract_range(range, RANGE_NUM, start, in early_root_info_init()
281 subtract_range(range, RANGE_NUM, start, end + 1); in early_root_info_init()
296 subtract_range(range, RANGE_NUM, 1ULL<<32, end); in early_root_info_init()
300 * add left over mmio range to def node/link ? in early_root_info_init()
301 * that is tricky, just record range in from start_min to 4G in early_root_info_init()
306 if (!range[i].end) in early_root_info_init()
309 update_res(info, cap_resource(range[i].start), in early_root_info_init()
310 cap_resource(range[i].end - 1), in early_root_info_init()
319 busnum = info->busn.start; in early_root_info_init()
320 printk(KERN_DEBUG "bus: %pR on node %x link %x\n", in early_root_info_init()
321 &info->busn, info->node, info->link); in early_root_info_init()
322 list_for_each_entry(root_res, &info->resources, list) in early_root_info_init()
323 printk(KERN_DEBUG "bus: %02x %pR\n", in early_root_info_init()
324 busnum, &root_res->res); in early_root_info_init()
350 u8 bus = amd_nb_bus_dev_ranges[i].bus; in pci_enable_pci_io_ecs() local
355 u32 val = read_pci_config(bus, slot, 3, 0); in pci_enable_pci_io_ecs()
360 val = read_pci_config(bus, slot, 3, 0x8c); in pci_enable_pci_io_ecs()
363 write_pci_config(bus, slot, 3, 0x8c, val); in pci_enable_pci_io_ecs()