mirror of
git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2026-04-19 20:59:11 +08:00
[SUNLANCE]: Fix probing problem.
The current probe table causes ledma and lebuffer "le" devices to get probed twice which is not what we want. Match just "le" and look directly at the parent to get the correct top-level node information. Signed-off-by: Krzysztof Helt <krzysztof.h1@wp.pl> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
committed by
David S. Miller
parent
47f2c3604f
commit
404dda854b
@@ -1566,20 +1566,21 @@ static int __exit sunlance_sun4_remove(void)
|
||||
static int __devinit sunlance_sbus_probe(struct of_device *dev, const struct of_device_id *match)
|
||||
{
|
||||
struct sbus_dev *sdev = to_sbus_device(&dev->dev);
|
||||
struct device_node *dp = dev->node;
|
||||
int err;
|
||||
|
||||
if (!strcmp(dp->name, "le")) {
|
||||
if (sdev->parent) {
|
||||
struct of_device *parent = &sdev->parent->ofdev;
|
||||
|
||||
if (!strcmp(parent->node->name, "ledma")) {
|
||||
struct sbus_dma *ledma = find_ledma(to_sbus_device(&parent->dev));
|
||||
|
||||
err = sparc_lance_probe_one(sdev, ledma, NULL);
|
||||
} else if (!strcmp(parent->node->name, "lebuffer")) {
|
||||
err = sparc_lance_probe_one(sdev, NULL, to_sbus_device(&parent->dev));
|
||||
} else
|
||||
err = sparc_lance_probe_one(sdev, NULL, NULL);
|
||||
} else
|
||||
err = sparc_lance_probe_one(sdev, NULL, NULL);
|
||||
} else if (!strcmp(dp->name, "ledma")) {
|
||||
struct sbus_dma *ledma = find_ledma(sdev);
|
||||
|
||||
err = sparc_lance_probe_one(sdev->child, ledma, NULL);
|
||||
} else {
|
||||
BUG_ON(strcmp(dp->name, "lebuffer"));
|
||||
|
||||
err = sparc_lance_probe_one(sdev->child, NULL, sdev);
|
||||
}
|
||||
|
||||
return err;
|
||||
}
|
||||
@@ -1604,12 +1605,6 @@ static struct of_device_id sunlance_sbus_match[] = {
|
||||
{
|
||||
.name = "le",
|
||||
},
|
||||
{
|
||||
.name = "ledma",
|
||||
},
|
||||
{
|
||||
.name = "lebuffer",
|
||||
},
|
||||
{},
|
||||
};
|
||||
|
||||
|
||||
Reference in New Issue
Block a user