2005-04-16 15:20:36 -07:00
/*
2013-01-22 12:59:30 +01:00
* This program is free software ; you can redistribute it and / or modify it
* under the terms of the GNU General Public License as published by the
2005-04-16 15:20:36 -07:00
* Free Software Foundation ; either version 2 of the License , or ( at your
* option ) any later version .
*
2012-01-11 15:37:16 +01:00
* Copyright ( C ) 2003 , 04 , 11 Ralf Baechle ( ralf @ linux - mips . org )
* Copyright ( C ) 2011 Wind River Systems ,
* written by Ralf Baechle ( ralf @ linux - mips . org )
2005-04-16 15:20:36 -07:00
*/
2012-01-11 15:37:16 +01:00
# include <linux/bug.h>
2005-04-16 15:20:36 -07:00
# include <linux/kernel.h>
# include <linux/mm.h>
2018-10-30 15:09:49 -07:00
# include <linux/memblock.h>
2011-07-28 18:46:31 -04:00
# include <linux/export.h>
2005-04-16 15:20:36 -07:00
# include <linux/init.h>
# include <linux/types.h>
# include <linux/pci.h>
2012-05-04 10:50:13 +02:00
# include <linux/of_address.h>
2005-04-16 15:20:36 -07:00
2012-01-11 15:37:16 +01:00
# include <asm/cpu-info.h>
2009-09-17 02:25:07 +02:00
unsigned long PCIBIOS_MIN_IO ;
2016-10-05 18:18:11 +01:00
EXPORT_SYMBOL ( PCIBIOS_MIN_IO ) ;
2007-04-08 13:28:44 +02:00
2016-10-05 18:18:11 +01:00
unsigned long PCIBIOS_MIN_MEM ;
EXPORT_SYMBOL ( PCIBIOS_MIN_MEM ) ;
2005-04-16 15:20:36 -07:00
2016-10-05 18:18:09 +01:00
static int __init pcibios_set_cache_line_size ( void )
2012-01-11 15:37:16 +01:00
{
unsigned int lsize ;
/*
* Set PCI cacheline size to that of the highest level in the
* cache hierarchy .
*/
2017-07-26 08:41:09 +01:00
lsize = cpu_dcache_line_size ( ) ;
lsize = cpu_scache_line_size ( ) ? : lsize ;
lsize = cpu_tcache_line_size ( ) ? : lsize ;
2012-01-11 15:37:16 +01:00
BUG_ON ( ! lsize ) ;
pci_dfl_cache_line_size = lsize > > 2 ;
pr_debug ( " PCI: pci_cache_line_size set to %d bytes \n " , lsize ) ;
2016-10-05 18:18:09 +01:00
return 0 ;
2012-01-11 15:37:16 +01:00
}
2016-10-05 18:18:09 +01:00
arch_initcall ( pcibios_set_cache_line_size ) ;
2012-01-11 15:37:16 +01:00
2016-06-17 14:43:34 -05:00
void pci_resource_to_user ( const struct pci_dev * dev , int bar ,
const struct resource * rsrc , resource_size_t * start ,
resource_size_t * end )
{
phys_addr_t size = resource_size ( rsrc ) ;
* start = fixup_bigphys_addr ( rsrc - > start , size ) ;
2018-07-12 09:33:04 -07:00
* end = rsrc - > start + size - 1 ;
2016-06-17 14:43:34 -05:00
}