bcm53xx: sprom: extract for PCI host
Signed-off-by: Rafał Miłecki <zajec5@gmail.com> SVN-Revision: 44464
This commit is contained in:
parent
4c98253648
commit
44253d311f
|
@ -644,6 +644,30 @@ static int bcm47xx_sprom_getenv(const struct bcm47xx_sprom_fill *fill,
|
||||||
/* FIXME: This should not be static, but some callback argument */
|
/* FIXME: This should not be static, but some callback argument */
|
||||||
static struct platform_device *sprom_pdev = NULL;
|
static struct platform_device *sprom_pdev = NULL;
|
||||||
|
|
||||||
|
static char prefix[20];
|
||||||
|
|
||||||
|
static void bcm47xx_sprom_apply_prefix_alias(char *prefix, size_t prefix_len)
|
||||||
|
{
|
||||||
|
size_t needle_len = strlen(prefix) - 1;
|
||||||
|
char nvram_var[10];
|
||||||
|
char buf[20];
|
||||||
|
int i;
|
||||||
|
|
||||||
|
if (needle_len <= 0 || prefix[needle_len] != '/')
|
||||||
|
return;
|
||||||
|
|
||||||
|
for (i = 0; i < 3; i++) {
|
||||||
|
if (snprintf(nvram_var, sizeof(nvram_var), "devpath%d", i) <= 0)
|
||||||
|
continue;
|
||||||
|
if (bcm47xx_nvram_getenv(nvram_var, buf, sizeof(buf)) < 0)
|
||||||
|
continue;
|
||||||
|
if (strlen(buf) == needle_len && !strncmp(buf, prefix, needle_len)) {
|
||||||
|
snprintf(prefix, prefix_len, "%d:", i);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* This function has to be called in a very precise moment. It has to be done:
|
* This function has to be called in a very precise moment. It has to be done:
|
||||||
* 1) After bcma registers flash cores, so we can read NVRAM.
|
* 1) After bcma registers flash cores, so we can read NVRAM.
|
||||||
|
@ -674,6 +698,13 @@ static int bcm47xx_sprom_init(struct bcma_bus *bus, struct ssb_sprom *out)
|
||||||
return -ENOMEM;
|
return -ENOMEM;
|
||||||
|
|
||||||
switch (bus->hosttype) {
|
switch (bus->hosttype) {
|
||||||
|
case BCMA_HOSTTYPE_PCI:
|
||||||
|
snprintf(prefix, sizeof(prefix), "pci/%u/%u/",
|
||||||
|
pci_domain_nr(bus->host_pci->bus) + 1,
|
||||||
|
bus->host_pci->bus->number);
|
||||||
|
bcm47xx_sprom_apply_prefix_alias(prefix, sizeof(prefix));
|
||||||
|
fill.prefix = prefix;
|
||||||
|
break;
|
||||||
case BCMA_HOSTTYPE_SOC:
|
case BCMA_HOSTTYPE_SOC:
|
||||||
fill.prefix = of_get_property(np, "prefix", NULL);
|
fill.prefix = of_get_property(np, "prefix", NULL);
|
||||||
break;
|
break;
|
||||||
|
|
Loading…
Reference in New Issue