diff options
Diffstat (limited to 'arch/x86/kernel/devicetree.c')
| -rw-r--r-- | arch/x86/kernel/devicetree.c | 53 | 
1 files changed, 10 insertions, 43 deletions
diff --git a/arch/x86/kernel/devicetree.c b/arch/x86/kernel/devicetree.c index 376dc787344..7db54b5d5f8 100644 --- a/arch/x86/kernel/devicetree.c +++ b/arch/x86/kernel/devicetree.c @@ -20,22 +20,13 @@  #include <asm/hpet.h>  #include <asm/apic.h>  #include <asm/pci_x86.h> +#include <asm/setup.h>  __initdata u64 initial_dtb;  char __initdata cmd_line[COMMAND_LINE_SIZE];  int __initdata of_ioapic; -unsigned long pci_address_to_pio(phys_addr_t address) -{ -	/* -	 * The ioport address can be directly used by inX / outX -	 */ -	BUG_ON(address >= (1 << 16)); -	return (unsigned long)address; -} -EXPORT_SYMBOL_GPL(pci_address_to_pio); -  void __init early_init_dt_scan_chosen_arch(unsigned long node)  {  	BUG(); @@ -51,15 +42,6 @@ void * __init early_init_dt_alloc_memory_arch(u64 size, u64 align)  	return __alloc_bootmem(size, align, __pa(MAX_DMA_ADDRESS));  } -#ifdef CONFIG_BLK_DEV_INITRD -void __init early_init_dt_setup_initrd_arch(u64 start, u64 end) -{ -	initrd_start = (unsigned long)__va(start); -	initrd_end = (unsigned long)__va(end); -	initrd_below_start_ok = 1; -} -#endif -  void __init add_dtb(u64 data)  {  	initial_dtb = data + offsetof(struct setup_data, data); @@ -105,7 +87,6 @@ struct device_node *pcibios_get_phb_of_node(struct pci_bus *bus)  static int x86_of_pci_irq_enable(struct pci_dev *dev)  { -	struct of_irq oirq;  	u32 virq;  	int ret;  	u8 pin; @@ -116,12 +97,7 @@ static int x86_of_pci_irq_enable(struct pci_dev *dev)  	if (!pin)  		return 0; -	ret = of_irq_map_pci(dev, &oirq); -	if (ret) -		return ret; - -	virq = irq_create_of_mapping(oirq.controller, oirq.specifier, -			oirq.size); +	virq = of_irq_parse_and_map_pci(dev, 0, 0);  	if (virq == 0)  		return -EINVAL;  	dev->irq = virq; @@ -230,32 +206,23 @@ static void __init dtb_apic_setup(void)  static void __init x86_flattree_get_config(void)  {  	u32 size, map_len; -	void *new_dtb; +	void *dt;  	if (!initial_dtb)  		return; -	map_len = max(PAGE_SIZE - (initial_dtb & ~PAGE_MASK), -			(u64)sizeof(struct boot_param_header)); +	map_len = max(PAGE_SIZE - (initial_dtb & ~PAGE_MASK), (u64)128); -	initial_boot_params = early_memremap(initial_dtb, map_len); -	size = be32_to_cpu(initial_boot_params->totalsize); +	initial_boot_params = dt = early_memremap(initial_dtb, map_len); +	size = of_get_flat_dt_size();  	if (map_len < size) { -		early_iounmap(initial_boot_params, map_len); -		initial_boot_params = early_memremap(initial_dtb, size); +		early_iounmap(dt, map_len); +		initial_boot_params = dt = early_memremap(initial_dtb, size);  		map_len = size;  	} -	new_dtb = alloc_bootmem(size); -	memcpy(new_dtb, initial_boot_params, size); -	early_iounmap(initial_boot_params, map_len); - -	initial_boot_params = new_dtb; - -	/* root level address cells */ -	of_scan_flat_dt(early_init_dt_scan_root, NULL); - -	unflatten_device_tree(); +	unflatten_and_copy_device_tree(); +	early_iounmap(dt, map_len);  }  #else  static inline void x86_flattree_get_config(void) { }  | 
