162306a36Sopenharmony_ci/* SPDX-License-Identifier: GPL-2.0 */
262306a36Sopenharmony_ci#ifndef __BUS_NUMA_H
362306a36Sopenharmony_ci#define __BUS_NUMA_H
462306a36Sopenharmony_ci/*
562306a36Sopenharmony_ci * sub bus (transparent) will use entres from 3 to store extra from
662306a36Sopenharmony_ci * root, so need to make sure we have enough slot there.
762306a36Sopenharmony_ci */
862306a36Sopenharmony_cistruct pci_root_res {
962306a36Sopenharmony_ci	struct list_head list;
1062306a36Sopenharmony_ci	struct resource res;
1162306a36Sopenharmony_ci};
1262306a36Sopenharmony_ci
1362306a36Sopenharmony_cistruct pci_root_info {
1462306a36Sopenharmony_ci	struct list_head list;
1562306a36Sopenharmony_ci	char name[12];
1662306a36Sopenharmony_ci	struct list_head resources;
1762306a36Sopenharmony_ci	struct resource busn;
1862306a36Sopenharmony_ci	int node;
1962306a36Sopenharmony_ci	int link;
2062306a36Sopenharmony_ci};
2162306a36Sopenharmony_ci
2262306a36Sopenharmony_ciextern struct list_head pci_root_infos;
2362306a36Sopenharmony_cistruct pci_root_info *alloc_pci_root_info(int bus_min, int bus_max,
2462306a36Sopenharmony_ci						int node, int link);
2562306a36Sopenharmony_ciextern void update_res(struct pci_root_info *info, resource_size_t start,
2662306a36Sopenharmony_ci		      resource_size_t end, unsigned long flags, int merge);
2762306a36Sopenharmony_ci#endif
28