Skip to content

Commit

Permalink
[SPARC64] PCI: Use common routine to fetch PBM properties.
Browse files Browse the repository at this point in the history
Namely bus-range and ino-bitmap.

This allows us also to eliminate pci_controller_info's
pci_{first,last}_busno fields as only the pbm ones are
used now.

Signed-off-by: David S. Miller <[email protected]>
  • Loading branch information
David S. Miller committed May 8, 2007
1 parent 36f021b commit cfa0652
Show file tree
Hide file tree
Showing 8 changed files with 20 additions and 47 deletions.
14 changes: 14 additions & 0 deletions arch/sparc64/kernel/pci_common.c
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,20 @@

#include "pci_impl.h"

void pci_get_pbm_props(struct pci_pbm_info *pbm)
{
const u32 *val = of_get_property(pbm->prom_node, "bus-range", NULL);

pbm->pci_first_busno = val[0];
pbm->pci_last_busno = val[1];

val = of_get_property(pbm->prom_node, "ino-bitmap", NULL);
if (val) {
pbm->ino_bitmap = (((u64)val[1] << 32UL) |
((u64)val[0] << 0UL));
}
}

static void pci_register_legacy_regions(struct resource *io_res,
struct resource *mem_res)
{
Expand Down
10 changes: 1 addition & 9 deletions arch/sparc64/kernel/pci_fire.c
Original file line number Diff line number Diff line change
Expand Up @@ -317,8 +317,6 @@ static void pci_fire_pbm_init(struct pci_controller_info *p,
{
const struct linux_prom64_registers *regs;
struct pci_pbm_info *pbm;
const u32 *ino_bitmap;
const unsigned int *busrange;

if ((portid & 1) == 0)
pbm = &p->pbm_A;
Expand All @@ -338,13 +336,7 @@ static void pci_fire_pbm_init(struct pci_controller_info *p,

pci_determine_mem_io_space(pbm);

ino_bitmap = of_get_property(dp, "ino-bitmap", NULL);
pbm->ino_bitmap = (((u64)ino_bitmap[1] << 32UL) |
((u64)ino_bitmap[0] << 0UL));

busrange = of_get_property(dp, "bus-range", NULL);
pbm->pci_first_busno = busrange[0];
pbm->pci_last_busno = busrange[1];
pci_get_pbm_props(pbm);

pci_fire_hw_init(pbm);
pci_fire_pbm_iommu_init(pbm);
Expand Down
1 change: 1 addition & 0 deletions arch/sparc64/kernel/pci_impl.h
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@ extern unsigned long pci_memspace_mask;
extern int pci_num_controllers;

/* PCI bus scanning and fixup support. */
extern void pci_get_pbm_props(struct pci_pbm_info *pbm);
extern struct pci_bus *pci_scan_one_pbm(struct pci_pbm_info *pbm);
extern void pci_determine_mem_io_space(struct pci_pbm_info *pbm);

Expand Down
6 changes: 1 addition & 5 deletions arch/sparc64/kernel/pci_psycho.c
Original file line number Diff line number Diff line change
Expand Up @@ -1088,7 +1088,6 @@ static void psycho_pbm_strbuf_init(struct pci_controller_info *p,
static void psycho_pbm_init(struct pci_controller_info *p,
struct device_node *dp, int is_pbm_a)
{
unsigned int *busrange;
struct property *prop;
struct pci_pbm_info *pbm;

Expand Down Expand Up @@ -1117,10 +1116,7 @@ static void psycho_pbm_init(struct pci_controller_info *p,

pci_determine_mem_io_space(pbm);

prop = of_find_property(dp, "bus-range", NULL);
busrange = prop->value;
pbm->pci_first_busno = busrange[0];
pbm->pci_last_busno = busrange[1];
pci_get_pbm_props(pbm);

psycho_pbm_strbuf_init(p, pbm, is_pbm_a);
}
Expand Down
8 changes: 1 addition & 7 deletions arch/sparc64/kernel/pci_sabre.c
Original file line number Diff line number Diff line change
Expand Up @@ -1006,8 +1006,7 @@ static void sabre_pbm_init(struct pci_controller_info *p, struct device_node *dp
pbm->chip_type = PBM_CHIP_TYPE_SABRE;
pbm->parent = p;
pbm->prom_node = dp;
pbm->pci_first_busno = p->pci_first_busno;
pbm->pci_last_busno = p->pci_last_busno;
pci_get_pbm_props(pbm);

pci_determine_mem_io_space(pbm);
}
Expand All @@ -1018,7 +1017,6 @@ void sabre_init(struct device_node *dp, char *model_name)
struct pci_controller_info *p;
struct iommu *iommu;
int tsbsize;
const u32 *busrange;
const u32 *vdma;
u32 upa_portid, dma_mask;
u64 clear_irq;
Expand Down Expand Up @@ -1119,10 +1117,6 @@ void sabre_init(struct device_node *dp, char *model_name)

sabre_iommu_init(p, tsbsize, vdma[0], dma_mask);

busrange = of_get_property(dp, "bus-range", NULL);
p->pci_first_busno = busrange[0];
p->pci_last_busno = busrange[1];

/*
* Look for APB underneath.
*/
Expand Down
10 changes: 1 addition & 9 deletions arch/sparc64/kernel/pci_schizo.c
Original file line number Diff line number Diff line change
Expand Up @@ -1491,10 +1491,8 @@ static void schizo_pbm_init(struct pci_controller_info *p,
int chip_type)
{
const struct linux_prom64_registers *regs;
const unsigned int *busrange;
struct pci_pbm_info *pbm;
const char *chipset_name;
const u32 *ino_bitmap;
int is_pbm_a;

switch (chip_type) {
Expand Down Expand Up @@ -1555,13 +1553,7 @@ static void schizo_pbm_init(struct pci_controller_info *p,

pci_determine_mem_io_space(pbm);

ino_bitmap = of_get_property(dp, "ino-bitmap", NULL);
pbm->ino_bitmap = (((u64)ino_bitmap[1] << 32UL) |
((u64)ino_bitmap[0] << 0UL));

busrange = of_get_property(dp, "bus-range", NULL);
pbm->pci_first_busno = busrange[0];
pbm->pci_last_busno = busrange[1];
pci_get_pbm_props(pbm);

schizo_pbm_iommu_init(pbm);
schizo_pbm_strbuf_init(pbm);
Expand Down
16 changes: 1 addition & 15 deletions arch/sparc64/kernel/pci_sun4v.c
Original file line number Diff line number Diff line change
Expand Up @@ -802,20 +802,6 @@ static void pci_sun4v_iommu_init(struct pci_pbm_info *pbm)
pbm->name, sz);
}

static void pci_sun4v_get_bus_range(struct pci_pbm_info *pbm)
{
struct property *prop;
unsigned int *busrange;

prop = of_find_property(pbm->prom_node, "bus-range", NULL);

busrange = prop->value;

pbm->pci_first_busno = busrange[0];
pbm->pci_last_busno = busrange[1];

}

#ifdef CONFIG_PCI_MSI
struct pci_sun4v_msiq_entry {
u64 version_type;
Expand Down Expand Up @@ -1271,7 +1257,7 @@ static void pci_sun4v_pbm_init(struct pci_controller_info *p, struct device_node

pci_determine_mem_io_space(pbm);

pci_sun4v_get_bus_range(pbm);
pci_get_pbm_props(pbm);
pci_sun4v_iommu_init(pbm);
pci_sun4v_msi_init(pbm);
}
Expand Down
2 changes: 0 additions & 2 deletions include/asm-sparc64/pbm.h
Original file line number Diff line number Diff line change
Expand Up @@ -145,8 +145,6 @@ struct pci_controller_info {

/* Now things for the actual PCI bus probes. */
struct pci_ops *pci_ops;
unsigned int pci_first_busno;
unsigned int pci_last_busno;
};

#endif /* !(__SPARC64_PBM_H) */

0 comments on commit cfa0652

Please sign in to comment.