Loading arch/sparc64/kernel/central.c +4 −0 Original line number Diff line number Diff line Loading @@ -126,6 +126,10 @@ static void probe_other_fhcs(void) int board; u32 tmp; if (dp->parent && dp->parent->parent != NULL) continue; fhc = (struct linux_fhc *) central_alloc_bootmem(sizeof(struct linux_fhc)); if (fhc == NULL) Loading arch/sparc64/kernel/of_device.c +24 −9 Original line number Diff line number Diff line Loading @@ -402,16 +402,22 @@ static void of_bus_sbus_count_cells(struct device_node *child, *sizec = 1; } static int of_bus_sbus_map(u32 *addr, const u32 *range, int na, int ns, int pna) { return of_bus_default_map(addr, range, na, ns, pna); } static unsigned int of_bus_sbus_get_flags(u32 *addr) /* * FHC/Central bus specific translator. * * This is just needed to hard-code the address and size cell * counts. 'fhc' and 'central' nodes lack the #address-cells and * #size-cells properties, and if you walk to the root on such * Enterprise boxes all you'll get is a #size-cells of 2 which is * not what we want to use. */ static int of_bus_fhc_match(struct device_node *np) { return IORESOURCE_MEM; return !strcmp(np->name, "fhc") || !strcmp(np->name, "central"); } #define of_bus_fhc_count_cells of_bus_sbus_count_cells /* * Array of bus specific translators Loading @@ -433,8 +439,17 @@ static struct of_bus of_busses[] = { .addr_prop_name = "reg", .match = of_bus_sbus_match, .count_cells = of_bus_sbus_count_cells, .map = of_bus_sbus_map, .get_flags = of_bus_sbus_get_flags, .map = of_bus_default_map, .get_flags = of_bus_default_get_flags, }, /* FHC */ { .name = "fhc", .addr_prop_name = "reg", .match = of_bus_fhc_match, .count_cells = of_bus_fhc_count_cells, .map = of_bus_default_map, .get_flags = of_bus_default_get_flags, }, /* Default */ { Loading arch/sparc64/kernel/pci_iommu.c +1 −1 Original line number Diff line number Diff line Loading @@ -281,7 +281,7 @@ static void pci_4u_free_consistent(struct pci_dev *pdev, size_t size, void *cpu, spin_lock_irqsave(&iommu->lock, flags); free_npages(iommu, dvma, npages); free_npages(iommu, dvma - iommu->page_table_map_base, npages); spin_unlock_irqrestore(&iommu->lock, flags); Loading arch/sparc64/kernel/prom.c +15 −15 Original line number Diff line number Diff line Loading @@ -1079,32 +1079,32 @@ static void sun4v_vdev_irq_trans_init(struct device_node *dp) static void irq_trans_init(struct device_node *dp) { const char *model; #ifdef CONFIG_PCI const char *model; int i; #endif #ifdef CONFIG_PCI model = of_get_property(dp, "model", NULL); if (!model) model = of_get_property(dp, "compatible", NULL); if (!model) return; #ifdef CONFIG_PCI if (model) { for (i = 0; i < ARRAY_SIZE(pci_irq_trans_table); i++) { struct irq_trans *t = &pci_irq_trans_table[i]; if (!strcmp(model, t->name)) return t->init(dp); } } #endif #ifdef CONFIG_SBUS if (!strcmp(dp->name, "sbus") || !strcmp(dp->name, "sbi")) return sbus_irq_trans_init(dp); #endif if (!strcmp(dp->name, "central")) return central_irq_trans_init(dp->child); if (!strcmp(dp->name, "fhc") && !strcmp(dp->parent->name, "central")) return central_irq_trans_init(dp); if (!strcmp(dp->name, "virtual-devices")) return sun4v_vdev_irq_trans_init(dp); } Loading Loading @@ -1516,7 +1516,7 @@ static char * __init get_one_property(phandle node, const char *name) return buf; } static struct device_node * __init create_node(phandle node) static struct device_node * __init create_node(phandle node, struct device_node *parent) { struct device_node *dp; Loading @@ -1525,6 +1525,7 @@ static struct device_node * __init create_node(phandle node) dp = prom_early_alloc(sizeof(*dp)); dp->unique_id = unique_id++; dp->parent = parent; kref_init(&dp->kref); Loading @@ -1543,12 +1544,11 @@ static struct device_node * __init build_tree(struct device_node *parent, phandl { struct device_node *dp; dp = create_node(node); dp = create_node(node, parent); if (dp) { *(*nextp) = dp; *nextp = &dp->allnext; dp->parent = parent; dp->path_component_name = build_path_component(dp); dp->full_name = build_full_name(dp); Loading @@ -1564,7 +1564,7 @@ void __init prom_build_devicetree(void) { struct device_node **nextp; allnodes = create_node(prom_root_node); allnodes = create_node(prom_root_node, NULL); allnodes->path_component_name = ""; allnodes->full_name = "/"; Loading Loading
arch/sparc64/kernel/central.c +4 −0 Original line number Diff line number Diff line Loading @@ -126,6 +126,10 @@ static void probe_other_fhcs(void) int board; u32 tmp; if (dp->parent && dp->parent->parent != NULL) continue; fhc = (struct linux_fhc *) central_alloc_bootmem(sizeof(struct linux_fhc)); if (fhc == NULL) Loading
arch/sparc64/kernel/of_device.c +24 −9 Original line number Diff line number Diff line Loading @@ -402,16 +402,22 @@ static void of_bus_sbus_count_cells(struct device_node *child, *sizec = 1; } static int of_bus_sbus_map(u32 *addr, const u32 *range, int na, int ns, int pna) { return of_bus_default_map(addr, range, na, ns, pna); } static unsigned int of_bus_sbus_get_flags(u32 *addr) /* * FHC/Central bus specific translator. * * This is just needed to hard-code the address and size cell * counts. 'fhc' and 'central' nodes lack the #address-cells and * #size-cells properties, and if you walk to the root on such * Enterprise boxes all you'll get is a #size-cells of 2 which is * not what we want to use. */ static int of_bus_fhc_match(struct device_node *np) { return IORESOURCE_MEM; return !strcmp(np->name, "fhc") || !strcmp(np->name, "central"); } #define of_bus_fhc_count_cells of_bus_sbus_count_cells /* * Array of bus specific translators Loading @@ -433,8 +439,17 @@ static struct of_bus of_busses[] = { .addr_prop_name = "reg", .match = of_bus_sbus_match, .count_cells = of_bus_sbus_count_cells, .map = of_bus_sbus_map, .get_flags = of_bus_sbus_get_flags, .map = of_bus_default_map, .get_flags = of_bus_default_get_flags, }, /* FHC */ { .name = "fhc", .addr_prop_name = "reg", .match = of_bus_fhc_match, .count_cells = of_bus_fhc_count_cells, .map = of_bus_default_map, .get_flags = of_bus_default_get_flags, }, /* Default */ { Loading
arch/sparc64/kernel/pci_iommu.c +1 −1 Original line number Diff line number Diff line Loading @@ -281,7 +281,7 @@ static void pci_4u_free_consistent(struct pci_dev *pdev, size_t size, void *cpu, spin_lock_irqsave(&iommu->lock, flags); free_npages(iommu, dvma, npages); free_npages(iommu, dvma - iommu->page_table_map_base, npages); spin_unlock_irqrestore(&iommu->lock, flags); Loading
arch/sparc64/kernel/prom.c +15 −15 Original line number Diff line number Diff line Loading @@ -1079,32 +1079,32 @@ static void sun4v_vdev_irq_trans_init(struct device_node *dp) static void irq_trans_init(struct device_node *dp) { const char *model; #ifdef CONFIG_PCI const char *model; int i; #endif #ifdef CONFIG_PCI model = of_get_property(dp, "model", NULL); if (!model) model = of_get_property(dp, "compatible", NULL); if (!model) return; #ifdef CONFIG_PCI if (model) { for (i = 0; i < ARRAY_SIZE(pci_irq_trans_table); i++) { struct irq_trans *t = &pci_irq_trans_table[i]; if (!strcmp(model, t->name)) return t->init(dp); } } #endif #ifdef CONFIG_SBUS if (!strcmp(dp->name, "sbus") || !strcmp(dp->name, "sbi")) return sbus_irq_trans_init(dp); #endif if (!strcmp(dp->name, "central")) return central_irq_trans_init(dp->child); if (!strcmp(dp->name, "fhc") && !strcmp(dp->parent->name, "central")) return central_irq_trans_init(dp); if (!strcmp(dp->name, "virtual-devices")) return sun4v_vdev_irq_trans_init(dp); } Loading Loading @@ -1516,7 +1516,7 @@ static char * __init get_one_property(phandle node, const char *name) return buf; } static struct device_node * __init create_node(phandle node) static struct device_node * __init create_node(phandle node, struct device_node *parent) { struct device_node *dp; Loading @@ -1525,6 +1525,7 @@ static struct device_node * __init create_node(phandle node) dp = prom_early_alloc(sizeof(*dp)); dp->unique_id = unique_id++; dp->parent = parent; kref_init(&dp->kref); Loading @@ -1543,12 +1544,11 @@ static struct device_node * __init build_tree(struct device_node *parent, phandl { struct device_node *dp; dp = create_node(node); dp = create_node(node, parent); if (dp) { *(*nextp) = dp; *nextp = &dp->allnext; dp->parent = parent; dp->path_component_name = build_path_component(dp); dp->full_name = build_full_name(dp); Loading @@ -1564,7 +1564,7 @@ void __init prom_build_devicetree(void) { struct device_node **nextp; allnodes = create_node(prom_root_node); allnodes = create_node(prom_root_node, NULL); allnodes->path_component_name = ""; allnodes->full_name = "/"; Loading