18c2ecf20Sopenharmony_ci// SPDX-License-Identifier: GPL-2.0-or-later 28c2ecf20Sopenharmony_ci/* 38c2ecf20Sopenharmony_ci * 48c2ecf20Sopenharmony_ci * Copyright (C) 2003, 04, 11 Ralf Baechle (ralf@linux-mips.org) 58c2ecf20Sopenharmony_ci * Copyright (C) 2011 Wind River Systems, 68c2ecf20Sopenharmony_ci * written by Ralf Baechle (ralf@linux-mips.org) 78c2ecf20Sopenharmony_ci */ 88c2ecf20Sopenharmony_ci#include <linux/bug.h> 98c2ecf20Sopenharmony_ci#include <linux/kernel.h> 108c2ecf20Sopenharmony_ci#include <linux/mm.h> 118c2ecf20Sopenharmony_ci#include <linux/memblock.h> 128c2ecf20Sopenharmony_ci#include <linux/export.h> 138c2ecf20Sopenharmony_ci#include <linux/init.h> 148c2ecf20Sopenharmony_ci#include <linux/types.h> 158c2ecf20Sopenharmony_ci#include <linux/pci.h> 168c2ecf20Sopenharmony_ci#include <linux/of_address.h> 178c2ecf20Sopenharmony_ci 188c2ecf20Sopenharmony_ci#include <asm/cpu-info.h> 198c2ecf20Sopenharmony_ci 208c2ecf20Sopenharmony_ciunsigned long PCIBIOS_MIN_IO; 218c2ecf20Sopenharmony_ciEXPORT_SYMBOL(PCIBIOS_MIN_IO); 228c2ecf20Sopenharmony_ci 238c2ecf20Sopenharmony_ciunsigned long PCIBIOS_MIN_MEM; 248c2ecf20Sopenharmony_ciEXPORT_SYMBOL(PCIBIOS_MIN_MEM); 258c2ecf20Sopenharmony_ci 268c2ecf20Sopenharmony_cistatic int __init pcibios_set_cache_line_size(void) 278c2ecf20Sopenharmony_ci{ 288c2ecf20Sopenharmony_ci unsigned int lsize; 298c2ecf20Sopenharmony_ci 308c2ecf20Sopenharmony_ci /* 318c2ecf20Sopenharmony_ci * Set PCI cacheline size to that of the highest level in the 328c2ecf20Sopenharmony_ci * cache hierarchy. 338c2ecf20Sopenharmony_ci */ 348c2ecf20Sopenharmony_ci lsize = cpu_dcache_line_size(); 358c2ecf20Sopenharmony_ci lsize = cpu_scache_line_size() ? : lsize; 368c2ecf20Sopenharmony_ci lsize = cpu_tcache_line_size() ? : lsize; 378c2ecf20Sopenharmony_ci 388c2ecf20Sopenharmony_ci BUG_ON(!lsize); 398c2ecf20Sopenharmony_ci 408c2ecf20Sopenharmony_ci pci_dfl_cache_line_size = lsize >> 2; 418c2ecf20Sopenharmony_ci 428c2ecf20Sopenharmony_ci pr_debug("PCI: pci_cache_line_size set to %d bytes\n", lsize); 438c2ecf20Sopenharmony_ci return 0; 448c2ecf20Sopenharmony_ci} 458c2ecf20Sopenharmony_ciarch_initcall(pcibios_set_cache_line_size); 468c2ecf20Sopenharmony_ci 478c2ecf20Sopenharmony_civoid pci_resource_to_user(const struct pci_dev *dev, int bar, 488c2ecf20Sopenharmony_ci const struct resource *rsrc, resource_size_t *start, 498c2ecf20Sopenharmony_ci resource_size_t *end) 508c2ecf20Sopenharmony_ci{ 518c2ecf20Sopenharmony_ci phys_addr_t size = resource_size(rsrc); 528c2ecf20Sopenharmony_ci 538c2ecf20Sopenharmony_ci *start = fixup_bigphys_addr(rsrc->start, size); 548c2ecf20Sopenharmony_ci *end = rsrc->start + size - 1; 558c2ecf20Sopenharmony_ci} 56