diff options
author | Linus Torvalds <torvalds@linux-foundation.org> | 2013-11-12 02:52:17 -0500 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2013-11-12 02:52:17 -0500 |
commit | 10d0c9705e80bbd3d587c5fad24599aabaca6688 (patch) | |
tree | 9456083a1b04b8d98da08d88e937cfeff80e2a7d /arch/mips | |
parent | 85b656cf1560e27a89354a23f2c10ba229d2f173 (diff) | |
parent | c11eede69b6ad0ac44ebc1e021a8d2699c5f1f8f (diff) |
Merge tag 'devicetree-for-3.13' of git://git.kernel.org/pub/scm/linux/kernel/git/robh/linux
Pull devicetree updates from Rob Herring:
"DeviceTree updates for 3.13. This is a bit larger pull request than
usual for this cycle with lots of clean-up.
- Cross arch clean-up and consolidation of early DT scanning code.
- Clean-up and removal of arch prom.h headers. Makes arch specific
prom.h optional on all but Sparc.
- Addition of interrupts-extended property for devices connected to
multiple interrupt controllers.
- Refactoring of DT interrupt parsing code in preparation for
deferred probe of interrupts.
- ARM cpu and cpu topology bindings documentation.
- Various DT vendor binding documentation updates"
* tag 'devicetree-for-3.13' of git://git.kernel.org/pub/scm/linux/kernel/git/robh/linux: (82 commits)
powerpc: add missing explicit OF includes for ppc
dt/irq: add empty of_irq_count for !OF_IRQ
dt: disable self-tests for !OF_IRQ
of: irq: Fix interrupt-map entry matching
MIPS: Netlogic: replace early_init_devtree() call
of: Add Panasonic Corporation vendor prefix
of: Add Chunghwa Picture Tubes Ltd. vendor prefix
of: Add AU Optronics Corporation vendor prefix
of/irq: Fix potential buffer overflow
of/irq: Fix bug in interrupt parsing refactor.
of: set dma_mask to point to coherent_dma_mask
of: add vendor prefix for PHYTEC Messtechnik GmbH
DT: sort vendor-prefixes.txt
of: Add vendor prefix for Cadence
of: Add empty for_each_available_child_of_node() macro definition
arm/versatile: Fix versatile irq specifications.
of/irq: create interrupts-extended property
microblaze/pci: Drop PowerPC-ism from irq parsing
of/irq: Create of_irq_parse_and_map_pci() to consolidate arch code.
of/irq: Use irq_of_parse_and_map()
...
Diffstat (limited to 'arch/mips')
-rw-r--r-- | arch/mips/include/asm/netlogic/xlp-hal/xlp.h | 1 | ||||
-rw-r--r-- | arch/mips/include/asm/prom.h | 14 | ||||
-rw-r--r-- | arch/mips/kernel/prom.c | 60 | ||||
-rw-r--r-- | arch/mips/lantiq/prom.c | 1 | ||||
-rw-r--r-- | arch/mips/mti-sead3/sead3-setup.c | 2 | ||||
-rw-r--r-- | arch/mips/netlogic/xlp/dt.c | 18 | ||||
-rw-r--r-- | arch/mips/netlogic/xlp/setup.c | 2 | ||||
-rw-r--r-- | arch/mips/pci/fixup-lantiq.c | 13 | ||||
-rw-r--r-- | arch/mips/pci/pci-rt3883.c | 24 | ||||
-rw-r--r-- | arch/mips/ralink/of.c | 1 |
10 files changed, 24 insertions, 112 deletions
diff --git a/arch/mips/include/asm/netlogic/xlp-hal/xlp.h b/arch/mips/include/asm/netlogic/xlp-hal/xlp.h index 17daffb280a3..470f2095b346 100644 --- a/arch/mips/include/asm/netlogic/xlp-hal/xlp.h +++ b/arch/mips/include/asm/netlogic/xlp-hal/xlp.h | |||
@@ -69,6 +69,7 @@ void nlm_hal_init(void); | |||
69 | int xlp_get_dram_map(int n, uint64_t *dram_map); | 69 | int xlp_get_dram_map(int n, uint64_t *dram_map); |
70 | 70 | ||
71 | /* Device tree related */ | 71 | /* Device tree related */ |
72 | void xlp_early_init_devtree(void); | ||
72 | void *xlp_dt_init(void *fdtp); | 73 | void *xlp_dt_init(void *fdtp); |
73 | 74 | ||
74 | static inline int cpu_is_xlpii(void) | 75 | static inline int cpu_is_xlpii(void) |
diff --git a/arch/mips/include/asm/prom.h b/arch/mips/include/asm/prom.h index 1e7e0961064b..ccd2b75f152c 100644 --- a/arch/mips/include/asm/prom.h +++ b/arch/mips/include/asm/prom.h | |||
@@ -17,22 +17,8 @@ | |||
17 | #include <linux/types.h> | 17 | #include <linux/types.h> |
18 | #include <asm/bootinfo.h> | 18 | #include <asm/bootinfo.h> |
19 | 19 | ||
20 | extern int early_init_dt_scan_memory_arch(unsigned long node, | ||
21 | const char *uname, int depth, void *data); | ||
22 | |||
23 | extern void device_tree_init(void); | 20 | extern void device_tree_init(void); |
24 | 21 | ||
25 | static inline unsigned long pci_address_to_pio(phys_addr_t address) | ||
26 | { | ||
27 | /* | ||
28 | * The ioport address can be directly used by inX() / outX() | ||
29 | */ | ||
30 | BUG_ON(address > IO_SPACE_LIMIT); | ||
31 | |||
32 | return (unsigned long) address; | ||
33 | } | ||
34 | #define pci_address_to_pio pci_address_to_pio | ||
35 | |||
36 | struct boot_param_header; | 22 | struct boot_param_header; |
37 | 23 | ||
38 | extern void __dt_setup_arch(struct boot_param_header *bph); | 24 | extern void __dt_setup_arch(struct boot_param_header *bph); |
diff --git a/arch/mips/kernel/prom.c b/arch/mips/kernel/prom.c index 0fa0b69cdd53..3c3b0df8f48d 100644 --- a/arch/mips/kernel/prom.c +++ b/arch/mips/kernel/prom.c | |||
@@ -13,12 +13,9 @@ | |||
13 | #include <linux/errno.h> | 13 | #include <linux/errno.h> |
14 | #include <linux/types.h> | 14 | #include <linux/types.h> |
15 | #include <linux/bootmem.h> | 15 | #include <linux/bootmem.h> |
16 | #include <linux/initrd.h> | ||
17 | #include <linux/debugfs.h> | 16 | #include <linux/debugfs.h> |
18 | #include <linux/of.h> | 17 | #include <linux/of.h> |
19 | #include <linux/of_fdt.h> | 18 | #include <linux/of_fdt.h> |
20 | #include <linux/of_irq.h> | ||
21 | #include <linux/of_platform.h> | ||
22 | 19 | ||
23 | #include <asm/page.h> | 20 | #include <asm/page.h> |
24 | #include <asm/prom.h> | 21 | #include <asm/prom.h> |
@@ -40,13 +37,6 @@ char *mips_get_machine_name(void) | |||
40 | } | 37 | } |
41 | 38 | ||
42 | #ifdef CONFIG_OF | 39 | #ifdef CONFIG_OF |
43 | int __init early_init_dt_scan_memory_arch(unsigned long node, | ||
44 | const char *uname, int depth, | ||
45 | void *data) | ||
46 | { | ||
47 | return early_init_dt_scan_memory(node, uname, depth, data); | ||
48 | } | ||
49 | |||
50 | void __init early_init_dt_add_memory_arch(u64 base, u64 size) | 40 | void __init early_init_dt_add_memory_arch(u64 base, u64 size) |
51 | { | 41 | { |
52 | return add_memory_region(base, size, BOOT_MEM_RAM); | 42 | return add_memory_region(base, size, BOOT_MEM_RAM); |
@@ -57,57 +47,11 @@ void * __init early_init_dt_alloc_memory_arch(u64 size, u64 align) | |||
57 | return __alloc_bootmem(size, align, __pa(MAX_DMA_ADDRESS)); | 47 | return __alloc_bootmem(size, align, __pa(MAX_DMA_ADDRESS)); |
58 | } | 48 | } |
59 | 49 | ||
60 | #ifdef CONFIG_BLK_DEV_INITRD | ||
61 | void __init early_init_dt_setup_initrd_arch(u64 start, u64 end) | ||
62 | { | ||
63 | initrd_start = (unsigned long)__va(start); | ||
64 | initrd_end = (unsigned long)__va(end); | ||
65 | initrd_below_start_ok = 1; | ||
66 | } | ||
67 | #endif | ||
68 | |||
69 | int __init early_init_dt_scan_model(unsigned long node, const char *uname, | ||
70 | int depth, void *data) | ||
71 | { | ||
72 | if (!depth) { | ||
73 | char *model = of_get_flat_dt_prop(node, "model", NULL); | ||
74 | |||
75 | if (model) | ||
76 | mips_set_machine_name(model); | ||
77 | } | ||
78 | return 0; | ||
79 | } | ||
80 | |||
81 | void __init early_init_devtree(void *params) | ||
82 | { | ||
83 | /* Setup flat device-tree pointer */ | ||
84 | initial_boot_params = params; | ||
85 | |||
86 | /* Retrieve various informations from the /chosen node of the | ||
87 | * device-tree, including the platform type, initrd location and | ||
88 | * size, and more ... | ||
89 | */ | ||
90 | of_scan_flat_dt(early_init_dt_scan_chosen, arcs_cmdline); | ||
91 | |||
92 | |||
93 | /* Scan memory nodes */ | ||
94 | of_scan_flat_dt(early_init_dt_scan_root, NULL); | ||
95 | of_scan_flat_dt(early_init_dt_scan_memory_arch, NULL); | ||
96 | |||
97 | /* try to load the mips machine name */ | ||
98 | of_scan_flat_dt(early_init_dt_scan_model, NULL); | ||
99 | } | ||
100 | |||
101 | void __init __dt_setup_arch(struct boot_param_header *bph) | 50 | void __init __dt_setup_arch(struct boot_param_header *bph) |
102 | { | 51 | { |
103 | if (be32_to_cpu(bph->magic) != OF_DT_HEADER) { | 52 | if (!early_init_dt_scan(bph)) |
104 | pr_err("DTB has bad magic, ignoring builtin OF DTB\n"); | ||
105 | |||
106 | return; | 53 | return; |
107 | } | ||
108 | |||
109 | initial_boot_params = bph; | ||
110 | 54 | ||
111 | early_init_devtree(initial_boot_params); | 55 | mips_set_machine_name(of_flat_dt_get_machine_name()); |
112 | } | 56 | } |
113 | #endif | 57 | #endif |
diff --git a/arch/mips/lantiq/prom.c b/arch/mips/lantiq/prom.c index 49c460370285..19686c5bc5ed 100644 --- a/arch/mips/lantiq/prom.c +++ b/arch/mips/lantiq/prom.c | |||
@@ -14,6 +14,7 @@ | |||
14 | 14 | ||
15 | #include <asm/bootinfo.h> | 15 | #include <asm/bootinfo.h> |
16 | #include <asm/time.h> | 16 | #include <asm/time.h> |
17 | #include <asm/prom.h> | ||
17 | 18 | ||
18 | #include <lantiq.h> | 19 | #include <lantiq.h> |
19 | 20 | ||
diff --git a/arch/mips/mti-sead3/sead3-setup.c b/arch/mips/mti-sead3/sead3-setup.c index b5059dc899f4..928ba84c8a78 100644 --- a/arch/mips/mti-sead3/sead3-setup.c +++ b/arch/mips/mti-sead3/sead3-setup.c | |||
@@ -10,6 +10,8 @@ | |||
10 | #include <linux/of_fdt.h> | 10 | #include <linux/of_fdt.h> |
11 | #include <linux/bootmem.h> | 11 | #include <linux/bootmem.h> |
12 | 12 | ||
13 | #include <asm/prom.h> | ||
14 | |||
13 | #include <asm/mips-boards/generic.h> | 15 | #include <asm/mips-boards/generic.h> |
14 | 16 | ||
15 | const char *get_system_type(void) | 17 | const char *get_system_type(void) |
diff --git a/arch/mips/netlogic/xlp/dt.c b/arch/mips/netlogic/xlp/dt.c index 88df445dda76..8316d5454b17 100644 --- a/arch/mips/netlogic/xlp/dt.c +++ b/arch/mips/netlogic/xlp/dt.c | |||
@@ -39,8 +39,11 @@ | |||
39 | #include <linux/of_platform.h> | 39 | #include <linux/of_platform.h> |
40 | #include <linux/of_device.h> | 40 | #include <linux/of_device.h> |
41 | 41 | ||
42 | #include <asm/prom.h> | ||
43 | |||
42 | extern u32 __dtb_xlp_evp_begin[], __dtb_xlp_svp_begin[], | 44 | extern u32 __dtb_xlp_evp_begin[], __dtb_xlp_svp_begin[], |
43 | __dtb_xlp_fvp_begin[], __dtb_start[]; | 45 | __dtb_xlp_fvp_begin[], __dtb_start[]; |
46 | static void *xlp_fdt_blob; | ||
44 | 47 | ||
45 | void __init *xlp_dt_init(void *fdtp) | 48 | void __init *xlp_dt_init(void *fdtp) |
46 | { | 49 | { |
@@ -67,19 +70,26 @@ void __init *xlp_dt_init(void *fdtp) | |||
67 | break; | 70 | break; |
68 | } | 71 | } |
69 | } | 72 | } |
70 | initial_boot_params = fdtp; | 73 | xlp_fdt_blob = fdtp; |
71 | return fdtp; | 74 | return fdtp; |
72 | } | 75 | } |
73 | 76 | ||
77 | void __init xlp_early_init_devtree(void) | ||
78 | { | ||
79 | __dt_setup_arch(xlp_fdt_blob); | ||
80 | strlcpy(arcs_cmdline, boot_command_line, COMMAND_LINE_SIZE); | ||
81 | } | ||
82 | |||
74 | void __init device_tree_init(void) | 83 | void __init device_tree_init(void) |
75 | { | 84 | { |
76 | unsigned long base, size; | 85 | unsigned long base, size; |
86 | struct boot_param_header *fdtp = xlp_fdt_blob; | ||
77 | 87 | ||
78 | if (!initial_boot_params) | 88 | if (!fdtp) |
79 | return; | 89 | return; |
80 | 90 | ||
81 | base = virt_to_phys((void *)initial_boot_params); | 91 | base = virt_to_phys(fdtp); |
82 | size = be32_to_cpu(initial_boot_params->totalsize); | 92 | size = be32_to_cpu(fdtp->totalsize); |
83 | 93 | ||
84 | /* Before we do anything, lets reserve the dt blob */ | 94 | /* Before we do anything, lets reserve the dt blob */ |
85 | reserve_bootmem(base, size, BOOTMEM_DEFAULT); | 95 | reserve_bootmem(base, size, BOOTMEM_DEFAULT); |
diff --git a/arch/mips/netlogic/xlp/setup.c b/arch/mips/netlogic/xlp/setup.c index 76a7131e486e..6d981bb337ec 100644 --- a/arch/mips/netlogic/xlp/setup.c +++ b/arch/mips/netlogic/xlp/setup.c | |||
@@ -98,7 +98,7 @@ void __init plat_mem_setup(void) | |||
98 | pm_power_off = nlm_linux_exit; | 98 | pm_power_off = nlm_linux_exit; |
99 | 99 | ||
100 | /* memory and bootargs from DT */ | 100 | /* memory and bootargs from DT */ |
101 | early_init_devtree(initial_boot_params); | 101 | xlp_early_init_devtree(); |
102 | 102 | ||
103 | if (boot_mem_map.nr_map == 0) { | 103 | if (boot_mem_map.nr_map == 0) { |
104 | pr_info("Using DRAM BARs for memory map.\n"); | 104 | pr_info("Using DRAM BARs for memory map.\n"); |
diff --git a/arch/mips/pci/fixup-lantiq.c b/arch/mips/pci/fixup-lantiq.c index 6c829df28dc7..c2ce41ea61d7 100644 --- a/arch/mips/pci/fixup-lantiq.c +++ b/arch/mips/pci/fixup-lantiq.c | |||
@@ -25,16 +25,5 @@ int pcibios_plat_dev_init(struct pci_dev *dev) | |||
25 | 25 | ||
26 | int __init pcibios_map_irq(const struct pci_dev *dev, u8 slot, u8 pin) | 26 | int __init pcibios_map_irq(const struct pci_dev *dev, u8 slot, u8 pin) |
27 | { | 27 | { |
28 | struct of_irq dev_irq; | 28 | return of_irq_parse_and_map_pci(dev, slot, pin); |
29 | int irq; | ||
30 | |||
31 | if (of_irq_map_pci(dev, &dev_irq)) { | ||
32 | dev_err(&dev->dev, "trying to map irq for unknown slot:%d pin:%d\n", | ||
33 | slot, pin); | ||
34 | return 0; | ||
35 | } | ||
36 | irq = irq_create_of_mapping(dev_irq.controller, dev_irq.specifier, | ||
37 | dev_irq.size); | ||
38 | dev_info(&dev->dev, "SLOT:%d PIN:%d IRQ:%d\n", slot, pin, irq); | ||
39 | return irq; | ||
40 | } | 29 | } |
diff --git a/arch/mips/pci/pci-rt3883.c b/arch/mips/pci/pci-rt3883.c index 95c9d41382e7..adeff2bfe4cd 100644 --- a/arch/mips/pci/pci-rt3883.c +++ b/arch/mips/pci/pci-rt3883.c | |||
@@ -583,29 +583,7 @@ err_put_intc_node: | |||
583 | 583 | ||
584 | int __init pcibios_map_irq(const struct pci_dev *dev, u8 slot, u8 pin) | 584 | int __init pcibios_map_irq(const struct pci_dev *dev, u8 slot, u8 pin) |
585 | { | 585 | { |
586 | struct of_irq dev_irq; | 586 | return of_irq_parse_and_map_pci(dev, slot, pin); |
587 | int err; | ||
588 | int irq; | ||
589 | |||
590 | err = of_irq_map_pci(dev, &dev_irq); | ||
591 | if (err) { | ||
592 | pr_err("pci %s: unable to get irq map, err=%d\n", | ||
593 | pci_name((struct pci_dev *) dev), err); | ||
594 | return 0; | ||
595 | } | ||
596 | |||
597 | irq = irq_create_of_mapping(dev_irq.controller, | ||
598 | dev_irq.specifier, | ||
599 | dev_irq.size); | ||
600 | |||
601 | if (irq == 0) | ||
602 | pr_crit("pci %s: no irq found for pin %u\n", | ||
603 | pci_name((struct pci_dev *) dev), pin); | ||
604 | else | ||
605 | pr_info("pci %s: using irq %d for pin %u\n", | ||
606 | pci_name((struct pci_dev *) dev), irq, pin); | ||
607 | |||
608 | return irq; | ||
609 | } | 587 | } |
610 | 588 | ||
611 | int pcibios_plat_dev_init(struct pci_dev *dev) | 589 | int pcibios_plat_dev_init(struct pci_dev *dev) |
diff --git a/arch/mips/ralink/of.c b/arch/mips/ralink/of.c index 15f21ea96121..eccc5526155e 100644 --- a/arch/mips/ralink/of.c +++ b/arch/mips/ralink/of.c | |||
@@ -21,6 +21,7 @@ | |||
21 | #include <asm/reboot.h> | 21 | #include <asm/reboot.h> |
22 | #include <asm/bootinfo.h> | 22 | #include <asm/bootinfo.h> |
23 | #include <asm/addrspace.h> | 23 | #include <asm/addrspace.h> |
24 | #include <asm/prom.h> | ||
24 | 25 | ||
25 | #include "common.h" | 26 | #include "common.h" |
26 | 27 | ||