|
@@ -45,7 +45,6 @@
|
|
#include <asm/jazzdma.h>
|
|
#include <asm/jazzdma.h>
|
|
|
|
|
|
static char jazz_sonic_string[] = "jazzsonic";
|
|
static char jazz_sonic_string[] = "jazzsonic";
|
|
-static struct platform_device *jazz_sonic_device;
|
|
|
|
|
|
|
|
#define SONIC_MEM_SIZE 0x100
|
|
#define SONIC_MEM_SIZE 0x100
|
|
|
|
|
|
@@ -69,14 +68,6 @@ static unsigned int sonic_debug = SONIC_DEBUG;
|
|
static unsigned int sonic_debug = 1;
|
|
static unsigned int sonic_debug = 1;
|
|
#endif
|
|
#endif
|
|
|
|
|
|
-/*
|
|
|
|
- * Base address and interrupt of the SONIC controller on JAZZ boards
|
|
|
|
- */
|
|
|
|
-static struct {
|
|
|
|
- unsigned int port;
|
|
|
|
- unsigned int irq;
|
|
|
|
-} sonic_portlist[] = { {JAZZ_ETHERNET_BASE, JAZZ_ETHERNET_IRQ}, {0, 0}};
|
|
|
|
-
|
|
|
|
/*
|
|
/*
|
|
* We cannot use station (ethernet) address prefixes to detect the
|
|
* We cannot use station (ethernet) address prefixes to detect the
|
|
* sonic controller since these are board manufacturer depended.
|
|
* sonic controller since these are board manufacturer depended.
|
|
@@ -215,13 +206,12 @@ static int __init jazz_sonic_probe(struct platform_device *pdev)
|
|
{
|
|
{
|
|
struct net_device *dev;
|
|
struct net_device *dev;
|
|
struct sonic_local *lp;
|
|
struct sonic_local *lp;
|
|
|
|
+ struct resource *res;
|
|
int err = 0;
|
|
int err = 0;
|
|
int i;
|
|
int i;
|
|
|
|
|
|
- /*
|
|
|
|
- * Don't probe if we're not running on a Jazz board.
|
|
|
|
- */
|
|
|
|
- if (mips_machgroup != MACH_GROUP_JAZZ)
|
|
|
|
|
|
+ res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
|
|
|
|
+ if (!res)
|
|
return -ENODEV;
|
|
return -ENODEV;
|
|
|
|
|
|
dev = alloc_etherdev(sizeof(struct sonic_local));
|
|
dev = alloc_etherdev(sizeof(struct sonic_local));
|
|
@@ -235,20 +225,9 @@ static int __init jazz_sonic_probe(struct platform_device *pdev)
|
|
|
|
|
|
netdev_boot_setup_check(dev);
|
|
netdev_boot_setup_check(dev);
|
|
|
|
|
|
- if (dev->base_addr >= KSEG0) { /* Check a single specified location. */
|
|
|
|
- err = sonic_probe1(dev);
|
|
|
|
- } else if (dev->base_addr != 0) { /* Don't probe at all. */
|
|
|
|
- err = -ENXIO;
|
|
|
|
- } else {
|
|
|
|
- for (i = 0; sonic_portlist[i].port; i++) {
|
|
|
|
- dev->base_addr = sonic_portlist[i].port;
|
|
|
|
- dev->irq = sonic_portlist[i].irq;
|
|
|
|
- if (sonic_probe1(dev) == 0)
|
|
|
|
- break;
|
|
|
|
- }
|
|
|
|
- if (!sonic_portlist[i].port)
|
|
|
|
- err = -ENODEV;
|
|
|
|
- }
|
|
|
|
|
|
+ dev->base_addr = res->start;
|
|
|
|
+ dev->irq = platform_get_irq(pdev, 0);
|
|
|
|
+ err = sonic_probe1(dev);
|
|
if (err)
|
|
if (err)
|
|
goto out;
|
|
goto out;
|
|
err = register_netdev(dev);
|
|
err = register_netdev(dev);
|
|
@@ -303,38 +282,12 @@ static struct platform_driver jazz_sonic_driver = {
|
|
|
|
|
|
static int __init jazz_sonic_init_module(void)
|
|
static int __init jazz_sonic_init_module(void)
|
|
{
|
|
{
|
|
- int err;
|
|
|
|
-
|
|
|
|
- if ((err = platform_driver_register(&jazz_sonic_driver))) {
|
|
|
|
- printk(KERN_ERR "Driver registration failed\n");
|
|
|
|
- return err;
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
- jazz_sonic_device = platform_device_alloc(jazz_sonic_string, 0);
|
|
|
|
- if (!jazz_sonic_device)
|
|
|
|
- goto out_unregister;
|
|
|
|
-
|
|
|
|
- if (platform_device_add(jazz_sonic_device)) {
|
|
|
|
- platform_device_put(jazz_sonic_device);
|
|
|
|
- jazz_sonic_device = NULL;
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
- return 0;
|
|
|
|
-
|
|
|
|
-out_unregister:
|
|
|
|
- platform_driver_unregister(&jazz_sonic_driver);
|
|
|
|
-
|
|
|
|
- return -ENOMEM;
|
|
|
|
|
|
+ return platform_driver_register(&jazz_sonic_driver);
|
|
}
|
|
}
|
|
|
|
|
|
static void __exit jazz_sonic_cleanup_module(void)
|
|
static void __exit jazz_sonic_cleanup_module(void)
|
|
{
|
|
{
|
|
platform_driver_unregister(&jazz_sonic_driver);
|
|
platform_driver_unregister(&jazz_sonic_driver);
|
|
-
|
|
|
|
- if (jazz_sonic_device) {
|
|
|
|
- platform_device_unregister(jazz_sonic_device);
|
|
|
|
- jazz_sonic_device = NULL;
|
|
|
|
- }
|
|
|
|
}
|
|
}
|
|
|
|
|
|
module_init(jazz_sonic_init_module);
|
|
module_init(jazz_sonic_init_module);
|