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

Commit bcf39352 authored by Paul Mundt's avatar Paul Mundt
Browse files

sh: Handle PCI controller resource conflicts.



register_pci_controller() can fail, but presently is a void function.
Change this over to an int so that we can bail early before continuing on
with post-registration initialization (such as throwing the controller in
to 66MHz mode in the case of the SH7780 host controller).

Signed-off-by: default avatarPaul Mundt <lethal@linux-sh.org>
parent 85b59f5b
Loading
Loading
Loading
Loading
+1 −3
Original line number Diff line number Diff line
@@ -95,8 +95,6 @@ static int __init gapspci_init(void)
	outl(0x00002001, GAPSPCI_BBA_CONFIG+0x10);
	outl(0x01000000, GAPSPCI_BBA_CONFIG+0x14);

	register_pci_controller(&dreamcast_pci_controller);

	return 0;
	return register_pci_controller(&dreamcast_pci_controller);
}
arch_initcall(gapspci_init);
+1 −3
Original line number Diff line number Diff line
@@ -216,8 +216,6 @@ static int __init sh5pci_init(void)
	sh5_mem_resource.start = memStart;
	sh5_mem_resource.end = memStart + memSize;

	register_pci_controller(&sh5pci_controller);

	return 0;
	return register_pci_controller(&sh5pci_controller);
}
arch_initcall(sh5pci_init);
+1 −3
Original line number Diff line number Diff line
@@ -176,8 +176,6 @@ static int __init sh7751_pci_init(void)
	word = SH4_PCICR_PREFIX | SH4_PCICR_CFIN | SH4_PCICR_ARBM;
	pci_write_reg(chan, word, SH4_PCICR);

	register_pci_controller(chan);

	return 0;
	return register_pci_controller(chan);
}
arch_initcall(sh7751_pci_init);
+4 −1
Original line number Diff line number Diff line
@@ -71,6 +71,7 @@ static int __init sh7780_pci_init(void)
	size_t memsize;
	unsigned int id;
	const char *type;
	int ret;

	printk(KERN_NOTICE "PCI: Starting intialization.\n");

@@ -197,7 +198,9 @@ static int __init sh7780_pci_init(void)
	__raw_writel(SH4_PCICR_PREFIX | SH4_PCICR_CFIN | SH4_PCICR_FTO,
		     chan->reg_base + SH4_PCICR);

	register_pci_controller(chan);
	ret = register_pci_controller(chan);
	if (unlikely(ret))
		return ret;

	sh7780_pci66_init(chan);

+3 −2
Original line number Diff line number Diff line
@@ -58,7 +58,7 @@ static void __devinit pcibios_scanbus(struct pci_channel *hose)

static DEFINE_MUTEX(pci_scan_mutex);

void __devinit register_pci_controller(struct pci_channel *hose)
int __devinit register_pci_controller(struct pci_channel *hose)
{
	if (request_resource(&iomem_resource, hose->mem_resource) < 0)
		goto out;
@@ -88,10 +88,11 @@ void __devinit register_pci_controller(struct pci_channel *hose)
		mutex_unlock(&pci_scan_mutex);
	}

	return;
	return 0;

out:
	printk(KERN_WARNING "Skipping PCI bus scan due to resource conflict\n");
	return -1;
}

static int __init pcibios_init(void)
Loading