Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 9c10a58e authored by David S. Miller's avatar David S. Miller
Browse files

[SPARC64]: Kill ebus/isa range and interrupt mapping struct members.



Unused outside of initial bus probe scan.

Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent 690c8fd3
Loading
Loading
Loading
Loading
+17 −48
Original line number Diff line number Diff line
@@ -283,60 +283,32 @@ static inline void *ebus_alloc(size_t size)
	return mem;
}

static void __init ebus_ranges_init(struct linux_ebus *ebus)
{
	struct linux_prom_ebus_ranges *rngs;
	int len;

	ebus->num_ebus_ranges = 0;
	rngs = of_get_property(ebus->prom_node, "ranges", &len);
	if (rngs) {
		memcpy(ebus->ebus_ranges, rngs, len);
		ebus->num_ebus_ranges =
			(len / sizeof(struct linux_prom_ebus_ranges));
	}
}

static void __init ebus_intmap_init(struct linux_ebus *ebus)
int __init ebus_intmap_match(struct linux_ebus *ebus,
			     struct linux_prom_registers *reg,
			     int *interrupt)
{
	struct linux_prom_ebus_intmap *imap;
	struct linux_prom_ebus_intmask *imask;
	int len;
	unsigned int hi, lo, irq;
	int i, len, n_imap;

	ebus->num_ebus_intmap = 0;
	imap = of_get_property(ebus->prom_node, "interrupt-map", &len);
	if (!imap)
		return;

	memcpy(ebus->ebus_intmap, imap, len);
	ebus->num_ebus_intmap = (len / sizeof(struct linux_prom_ebus_intmap));

	imask = of_get_property(ebus->prom_node, "interrupt-map-mask", &len);
	if (!imask) {
		prom_printf("EBUS: can't get interrupt-map-mask\n");
		prom_halt();
	}
	memcpy(&ebus->ebus_intmask, imask, sizeof(ebus->ebus_intmask));
}

int __init ebus_intmap_match(struct linux_ebus *ebus,
			     struct linux_prom_registers *reg,
			     int *interrupt)
{
	unsigned int hi, lo, irq;
	int i;
		return 0;
	n_imap = len / sizeof(imap[0]);

	if (!ebus->num_ebus_intmap)
	imask = of_get_property(ebus->prom_node, "interrupt-map-mask", NULL);
	if (!imask)
		return 0;

	hi = reg->which_io & ebus->ebus_intmask.phys_hi;
	lo = reg->phys_addr & ebus->ebus_intmask.phys_lo;
	irq = *interrupt & ebus->ebus_intmask.interrupt;
	for (i = 0; i < ebus->num_ebus_intmap; i++) {
		if ((ebus->ebus_intmap[i].phys_hi == hi) &&
		    (ebus->ebus_intmap[i].phys_lo == lo) &&
		    (ebus->ebus_intmap[i].interrupt == irq)) {
			*interrupt = ebus->ebus_intmap[i].cinterrupt;
	hi = reg->which_io & imask->phys_hi;
	lo = reg->phys_addr & imask->phys_lo;
	irq = *interrupt & imask->interrupt;
	for (i = 0; i < n_imap; i++) {
		if ((imap[i].phys_hi == hi) &&
		    (imap[i].phys_lo == lo) &&
		    (imap[i].interrupt == irq)) {
			*interrupt = imap[i].cinterrupt;
			return 0;
		}
	}
@@ -598,9 +570,6 @@ void __init ebus_init(void)
		ebus->self = pdev;
		ebus->parent = pbm = cookie->pbm;

		ebus_ranges_init(ebus);
		ebus_intmap_init(ebus);

		child = dp->child;
		if (!child)
			goto next_ebus;
+24 −44
Original line number Diff line number Diff line
@@ -72,19 +72,30 @@ static struct {
static int __init isa_dev_get_irq_using_imap(struct sparc_isa_device *isa_dev,
					     struct sparc_isa_bridge *isa_br,
					     int *interrupt,
					     struct linux_prom_registers *pregs)
					     struct linux_prom_registers *reg)
{
	struct linux_prom_ebus_intmap *imap;
	struct linux_prom_ebus_intmap *imask;
	unsigned int hi, lo, irq;
	int i;
	int i, len, n_imap;

	imap = of_get_property(isa_br->prom_node, "interrupt-map", &len);
	if (!imap)
		return 0;
	n_imap = len / sizeof(imap[0]);

	hi = pregs->which_io & isa_br->isa_intmask.phys_hi;
	lo = pregs->phys_addr & isa_br->isa_intmask.phys_lo;
	irq = *interrupt & isa_br->isa_intmask.interrupt;
	for (i = 0; i < isa_br->num_isa_intmap; i++) {
		if ((isa_br->isa_intmap[i].phys_hi == hi) &&
		    (isa_br->isa_intmap[i].phys_lo == lo) &&
		    (isa_br->isa_intmap[i].interrupt == irq)) {
			*interrupt = isa_br->isa_intmap[i].cinterrupt;
	imask = of_get_property(isa_br->prom_node, "interrupt-map-mask", NULL);
	if (!imask)
		return 0;

	hi = reg->which_io & imask->phys_hi;
	lo = reg->phys_addr & imask->phys_lo;
	irq = *interrupt & imask->interrupt;
	for (i = 0; i < n_imap; i++) {
		if ((imap[i].phys_hi == hi) &&
		    (imap[i].phys_lo == lo) &&
		    (imap[i].interrupt == irq)) {
			*interrupt = imap[i].cinterrupt;
			return 0;
		}
	}
@@ -105,7 +116,8 @@ static void __init isa_dev_get_irq(struct sparc_isa_device *isa_dev,
		struct pci_pbm_info *pbm;
		int i;

		if (isa_dev->bus->num_isa_intmap) {
		if (of_find_property(isa_dev->bus->prom_node,
				     "interrupt-map", NULL)) {
			if (!isa_dev_get_irq_using_imap(isa_dev,
							isa_dev->bus,
							&irq_prop,
@@ -218,36 +230,6 @@ static void __init isa_fill_devices(struct sparc_isa_bridge *isa_br)
	}
}

static void __init get_bridge_props(struct sparc_isa_bridge *isa_br)
{
	struct device_node *dp = isa_br->prom_node;
	void *pval;
	int len;

	pval = of_get_property(dp, "ranges", &len);
	if (pval) {
		memcpy(isa_br->isa_ranges, pval, len);
		isa_br->num_isa_ranges =
			len / sizeof(struct linux_prom_isa_ranges);
	} else {
		isa_br->num_isa_ranges = 0;
	}

	pval = of_get_property(dp, "interrupt-map", &len);
	if (pval) {
		memcpy(isa_br->isa_intmap, pval, len);
		isa_br->num_isa_intmap =
			(len / sizeof(struct linux_prom_isa_intmap));
	} else {
		isa_br->num_isa_intmap = 0;
	}

	pval = of_get_property(dp, "interrupt-map-mask", &len);
	if (pval)
		memcpy(&isa_br->isa_intmask, pval,
		       sizeof(isa_br->isa_intmask));
}

void __init isa_init(void)
{
	struct pci_dev *pdev;
@@ -288,8 +270,6 @@ void __init isa_init(void)
		isa_br->index = index++;
		isa_br->prom_node = pdev_cookie->prom_node;

		get_bridge_props(isa_br);

		printk("isa%d:", isa_br->index);

		isa_fill_devices(isa_br);
+0 −5
Original line number Diff line number Diff line
@@ -42,11 +42,6 @@ struct linux_ebus {
	int				 index;
	int				 is_rio;
	struct device_node		*prom_node;
	struct linux_prom_ebus_ranges	 ebus_ranges[PROMREG_MAX];
	int				 num_ebus_ranges;
	struct linux_prom_ebus_intmap	 ebus_intmap[PROMREG_MAX];
	int				 num_ebus_intmap;
	struct linux_prom_ebus_intmask	 ebus_intmask;
};

struct ebus_dma_info {
+0 −8
Original line number Diff line number Diff line
@@ -29,14 +29,6 @@ struct sparc_isa_bridge {
	struct pci_dev		*self;
	int			index;
	struct device_node	*prom_node;
#define linux_prom_isa_ranges linux_prom_ebus_ranges
	struct linux_prom_isa_ranges	isa_ranges[PROMREG_MAX];
	int			num_isa_ranges;
#define linux_prom_isa_intmap	linux_prom_ebus_intmap
	struct linux_prom_isa_intmap	isa_intmap[PROMREG_MAX];
	int			num_isa_intmap;
#define linux_prom_isa_intmask	linux_prom_ebus_intmask
	struct linux_prom_isa_intmap	isa_intmask;
};

extern struct sparc_isa_bridge	*isa_chain;