Re: [RFC 06/13] [net-next] m68k: remove legacy probing

Geert Uytterhoeven
2021-05-17T08:11:15Z

Hi Arnd,

CC linux-m68k

On Sun, May 16, 2021 at 12:14 AM Arnd Bergmann <arnd@kernel.org> wrote:
> From: Arnd Bergmann <arnd@arndb.de>
>
> There are six m68k specific drivers that use the legacy probe method
> in drivers/net/Space.c. However, all of these only support a single
> device, and they completely ignore the command line settings from
> netdev_boot_setup_check, so there is really no point at all.
>
> Aside from sun3_82586, these already have a module_init function that
> can be used for built-in mode as well, simply by removing the #ifdef.
>
> Note that the 82596 driver was previously used on ISA as well, but
> that got dropped long ago.

> Signed-off-by: Arnd Bergmann <arnd@arndb.de>

Looks all good to me, so
Reviewed-by: Geert Uytterhoeven <geert@linux-m68k.org>
but I don't have any of the hardware to test.

> ---
> drivers/net/Space.c | 25 +-----------------------
> drivers/net/ethernet/8390/apne.c | 11 ++---------
> drivers/net/ethernet/amd/atarilance.c | 11 ++---------
> drivers/net/ethernet/amd/mvme147.c | 16 ++++++---------
> drivers/net/ethernet/amd/sun3lance.c | 19 ++++++------------
> drivers/net/ethernet/i825xx/82596.c | 24 ++++++-----------------
> drivers/net/ethernet/i825xx/sun3_82586.c | 17 +++++++---------
> include/net/Space.h | 6 ------
> 8 files changed, 30 insertions(+), 99 deletions(-)
>
> diff --git a/drivers/net/Space.c b/drivers/net/Space.c
> index 9f573f7ded3c..a03559f23295 100644
> --- a/drivers/net/Space.c
> +++ b/drivers/net/Space.c
> @@ -80,34 +80,12 @@ static struct devprobe2 isa_probes[] __initdata = {
> #ifdef CONFIG_CS89x0_ISA
> {cs89x0_probe, 0},
> #endif
> -#if defined(CONFIG_MVME16x_NET) || defined(CONFIG_BVME6000_NET) /* Intel */
> - {i82596_probe, 0}, /* I82596 */
> -#endif
> #ifdef CONFIG_NI65
> {ni65_probe, 0},
> #endif
> {NULL, 0},
> };
>
> -static struct devprobe2 m68k_probes[] __initdata = {
> -#ifdef CONFIG_ATARILANCE /* Lance-based Atari ethernet boards */
> - {atarilance_probe, 0},
> -#endif
> -#ifdef CONFIG_SUN3LANCE /* sun3 onboard Lance chip */
> - {sun3lance_probe, 0},
> -#endif
> -#ifdef CONFIG_SUN3_82586 /* sun3 onboard Intel 82586 chip */
> - {sun3_82586_probe, 0},
> -#endif
> -#ifdef CONFIG_APNE /* A1200 PCMCIA NE2000 */
> - {apne_probe, 0},
> -#endif
> -#ifdef CONFIG_MVME147_NET /* MVME147 internal Ethernet */
> - {mvme147lance_probe, 0},
> -#endif
> - {NULL, 0},
> -};
> -
> /* Unified ethernet device probe, segmented per architecture and
> * per bus interface. This drives the legacy devices only for now.
> */
> @@ -119,8 +97,7 @@ static void __init ethif_probe2(int unit)
> if (base_addr == 1)
> return;
>
> - (void)(probe_list2(unit, m68k_probes, base_addr == 0) &&
> - probe_list2(unit, isa_probes, base_addr == 0));
> + probe_list2(unit, isa_probes, base_addr == 0);
> }
>
> /* Statically configured drivers -- order matters here. */
> diff --git a/drivers/net/ethernet/8390/apne.c b/drivers/net/ethernet/8390/apne.c
> index fe6c834c422e..da1ae37a9d73 100644
> --- a/drivers/net/ethernet/8390/apne.c
> +++ b/drivers/net/ethernet/8390/apne.c
> @@ -75,7 +75,6 @@
> #define NESM_STOP_PG 0x80 /* Last page +1 of RX ring */
>
>
> -struct net_device * __init apne_probe(int unit);
> static int apne_probe1(struct net_device *dev, int ioaddr);
>
> static void apne_reset_8390(struct net_device *dev);
> @@ -120,7 +119,7 @@ static u32 apne_msg_enable;
> module_param_named(msg_enable, apne_msg_enable, uint, 0444);
> MODULE_PARM_DESC(msg_enable, "Debug message level (see linux/netdevice.h for bitmap)");
>
> -struct net_device * __init apne_probe(int unit)
> +static struct net_device * __init apne_probe(void)
> {
> struct net_device *dev;
> struct ei_device *ei_local;
> @@ -150,10 +149,6 @@ struct net_device * __init apne_probe(int unit)
> dev = alloc_ei_netdev();
> if (!dev)
> return ERR_PTR(-ENOMEM);
> - if (unit >= 0) {
> - sprintf(dev->name, "eth%d", unit);
> - netdev_boot_setup_check(dev);
> - }
> ei_local = netdev_priv(dev);
> ei_local->msg_enable = apne_msg_enable;
>
> @@ -554,12 +549,11 @@ static irqreturn_t apne_interrupt(int irq, void *dev_id)
> return IRQ_HANDLED;
> }
>
> -#ifdef MODULE
> static struct net_device *apne_dev;
>
> static int __init apne_module_init(void)
> {
> - apne_dev = apne_probe(-1);
> + apne_dev = apne_probe();
> return PTR_ERR_OR_ZERO(apne_dev);
> }
>
> @@ -579,7 +573,6 @@ static void __exit apne_module_exit(void)
> }
> module_init(apne_module_init);
> module_exit(apne_module_exit);
> -#endif
>
> static int init_pcmcia(void)
> {
> diff --git a/drivers/net/ethernet/amd/atarilance.c b/drivers/net/ethernet/amd/atarilance.c
> index c1eab916438f..83012a1ef3cf 100644
> --- a/drivers/net/ethernet/amd/atarilance.c
> +++ b/drivers/net/ethernet/amd/atarilance.c
> @@ -367,7 +367,7 @@ static void *slow_memcpy( void *dst, const void *src, size_t len )
> }
>
>
> -struct net_device * __init atarilance_probe(int unit)
> +struct net_device * __init atarilance_probe(void)
> {
> int i;
> static int found;
> @@ -382,10 +382,6 @@ struct net_device * __init atarilance_probe(int unit)
> dev = alloc_etherdev(sizeof(struct lance_private));
> if (!dev)
> return ERR_PTR(-ENOMEM);
> - if (unit >= 0) {
> - sprintf(dev->name, "eth%d", unit);
> - netdev_boot_setup_check(dev);
> - }
>
> for( i = 0; i < N_LANCE_ADDR; ++i ) {
> if (lance_probe1( dev, &lance_addr_list[i] )) {
> @@ -1137,13 +1133,11 @@ static int lance_set_mac_address( struct net_device *dev, void *addr )
> return 0;
> }
>
> -
> -#ifdef MODULE
> static struct net_device *atarilance_dev;
>
> static int __init atarilance_module_init(void)
> {
> - atarilance_dev = atarilance_probe(-1);
> + atarilance_dev = atarilance_probe();
> return PTR_ERR_OR_ZERO(atarilance_dev);
> }
>
> @@ -1155,4 +1149,3 @@ static void __exit atarilance_module_exit(void)
> }
> module_init(atarilance_module_init);
> module_exit(atarilance_module_exit);
> -#endif /* MODULE */
> diff --git a/drivers/net/ethernet/amd/mvme147.c b/drivers/net/ethernet/amd/mvme147.c
> index 3f2e4cdd0b83..da97fccea9ea 100644
> --- a/drivers/net/ethernet/amd/mvme147.c
> +++ b/drivers/net/ethernet/amd/mvme147.c
> @@ -68,7 +68,7 @@ static const struct net_device_ops lance_netdev_ops = {
> };
>
> /* Initialise the one and only on-board 7990 */
> -struct net_device * __init mvme147lance_probe(int unit)
> +static struct net_device * __init mvme147lance_probe(void)
> {
> struct net_device *dev;
> static int called;
> @@ -86,9 +86,6 @@ struct net_device * __init mvme147lance_probe(int unit)
> if (!dev)
> return ERR_PTR(-ENOMEM);
>
> - if (unit >= 0)
> - sprintf(dev->name, "eth%d", unit);
> -
> /* Fill the dev fields */
> dev->base_addr = (unsigned long)MVME147_LANCE_BASE;
> dev->netdev_ops = &lance_netdev_ops;
> @@ -179,22 +176,21 @@ static int m147lance_close(struct net_device *dev)
> return 0;
> }
>
> -#ifdef MODULE
> MODULE_LICENSE("GPL");
>
> static struct net_device *dev_mvme147_lance;
> -int __init init_module(void)
> +static int __init m147lance_init(void)
> {
> - dev_mvme147_lance = mvme147lance_probe(-1);
> + dev_mvme147_lance = mvme147lance_probe();
> return PTR_ERR_OR_ZERO(dev_mvme147_lance);
> }
> +module_init(m147lance_init);
>
> -void __exit cleanup_module(void)
> +static void __exit m147lance_exit(void)
> {
> struct m147lance_private *lp = netdev_priv(dev_mvme147_lance);
> unregister_netdev(dev_mvme147_lance);
> free_pages(lp->ram, 3);
> free_netdev(dev_mvme147_lance);
> }
> -
> -#endif /* MODULE */
> +module_exit(m147lance_exit);
> diff --git a/drivers/net/ethernet/amd/sun3lance.c b/drivers/net/ethernet/amd/sun3lance.c
> index 00ae1081254d..73724b082bdb 100644
> --- a/drivers/net/ethernet/amd/sun3lance.c
> +++ b/drivers/net/ethernet/amd/sun3lance.c
> @@ -245,7 +245,7 @@ static void set_multicast_list( struct net_device *dev );
>
> /************************* End of Prototypes **************************/
>
> -struct net_device * __init sun3lance_probe(int unit)
> +static struct net_device * __init sun3lance_probe(void)
> {
> struct net_device *dev;
> static int found;
> @@ -272,10 +272,6 @@ struct net_device * __init sun3lance_probe(int unit)
> dev = alloc_etherdev(sizeof(struct lance_private));
> if (!dev)
> return ERR_PTR(-ENOMEM);
> - if (unit >= 0) {
> - sprintf(dev->name, "eth%d", unit);
> - netdev_boot_setup_check(dev);
> - }
>
> if (!lance_probe(dev))
> goto out;
> @@ -924,17 +920,16 @@ static void set_multicast_list( struct net_device *dev )
> }
>
>
> -#ifdef MODULE
> -
> static struct net_device *sun3lance_dev;
>
> -int __init init_module(void)
> +static int __init sun3lance_init(void)
> {
> - sun3lance_dev = sun3lance_probe(-1);
> + sun3lance_dev = sun3lance_probe();
> return PTR_ERR_OR_ZERO(sun3lance_dev);
> }
> +module_init(sun3lance_init);
>
> -void __exit cleanup_module(void)
> +static void __exit sun3lance_cleanup(void)
> {
> unregister_netdev(sun3lance_dev);
> #ifdef CONFIG_SUN3
> @@ -942,6 +937,4 @@ void __exit cleanup_module(void)
> #endif
> free_netdev(sun3lance_dev);
> }
> -
> -#endif /* MODULE */
> -
> +module_exit(sun3lance_cleanup);
> diff --git a/drivers/net/ethernet/i825xx/82596.c b/drivers/net/ethernet/i825xx/82596.c
> index fc8c7cd67471..b8a40146b895 100644
> --- a/drivers/net/ethernet/i825xx/82596.c
> +++ b/drivers/net/ethernet/i825xx/82596.c
> @@ -1110,9 +1110,6 @@ static void print_eth(unsigned char *add, char *str)
> add, add + 6, add, add[12], add[13], str);
> }
>
> -static int io = 0x300;
> -static int irq = 10;
> -
> static const struct net_device_ops i596_netdev_ops = {
> .ndo_open = i596_open,
> .ndo_stop = i596_close,
> @@ -1123,7 +1120,7 @@ static const struct net_device_ops i596_netdev_ops = {
> .ndo_validate_addr = eth_validate_addr,
> };
>
> -struct net_device * __init i82596_probe(int unit)
> +static struct net_device * __init i82596_probe(void)
> {
> struct net_device *dev;
> int i;
> @@ -1140,14 +1137,6 @@ struct net_device * __init i82596_probe(int unit)
> if (!dev)
> return ERR_PTR(-ENOMEM);
>
> - if (unit >= 0) {
> - sprintf(dev->name, "eth%d", unit);
> - netdev_boot_setup_check(dev);
> - } else {
> - dev->base_addr = io;
> - dev->irq = irq;
> - }
> -
> #ifdef ENABLE_MVME16x_NET
> if (MACH_IS_MVME16x) {
> if (mvme16x_config & MVME16x_CONFIG_NO_ETHERNET) {
> @@ -1515,22 +1504,22 @@ static void set_multicast_list(struct net_device *dev)
> }
> }
>
> -#ifdef MODULE
> static struct net_device *dev_82596;
>
> static int debug = -1;
> module_param(debug, int, 0);
> MODULE_PARM_DESC(debug, "i82596 debug mask");
>
> -int __init init_module(void)
> +static int __init i82596_init(void)
> {
> if (debug >= 0)
> i596_debug = debug;
> - dev_82596 = i82596_probe(-1);
> + dev_82596 = i82596_probe();
> return PTR_ERR_OR_ZERO(dev_82596);
> }
> +module_init(i82596_init);
>
> -void __exit cleanup_module(void)
> +static void __exit i82596_cleanup(void)
> {
> unregister_netdev(dev_82596);
> #ifdef __mc68000__
> @@ -1544,5 +1533,4 @@ void __exit cleanup_module(void)
> free_page ((u32)(dev_82596->mem_start));
> free_netdev(dev_82596);
> }
> -
> -#endif /* MODULE */
> +module_exit(i82596_cleanup);
> diff --git a/drivers/net/ethernet/i825xx/sun3_82586.c b/drivers/net/ethernet/i825xx/sun3_82586.c
> index 4564ee02c95f..893e0ddcb611 100644
> --- a/drivers/net/ethernet/i825xx/sun3_82586.c
> +++ b/drivers/net/ethernet/i825xx/sun3_82586.c
> @@ -29,6 +29,7 @@ static int rfdadd = 0; /* rfdadd=1 may be better for 8K MEM cards */
> static int fifo=0x8; /* don't change */
>
> #include <linux/kernel.h>
> +#include <linux/module.h>
> #include <linux/string.h>
> #include <linux/errno.h>
> #include <linux/ioport.h>
> @@ -276,7 +277,7 @@ static void alloc586(struct net_device *dev)
> memset((char *)p->scb,0,sizeof(struct scb_struct));
> }
>
> -struct net_device * __init sun3_82586_probe(int unit)
> +static int __init sun3_82586_probe(void)
> {
> struct net_device *dev;
> unsigned long ioaddr;
> @@ -291,25 +292,20 @@ struct net_device * __init sun3_82586_probe(int unit)
> break;
>
> default:
> - return ERR_PTR(-ENODEV);
> + return -ENODEV;
> }
>
> if (found)
> - return ERR_PTR(-ENODEV);
> + return -ENODEV;
>
> ioaddr = (unsigned long)ioremap(IE_OBIO, SUN3_82586_TOTAL_SIZE);
> if (!ioaddr)
> - return ERR_PTR(-ENOMEM);
> + return -ENOMEM;
> found = 1;
>
> dev = alloc_etherdev(sizeof(struct priv));
> if (!dev)
> goto out;
> - if (unit >= 0) {
> - sprintf(dev->name, "eth%d", unit);
> - netdev_boot_setup_check(dev);
> - }
> -
> dev->irq = IE_IRQ;
> dev->base_addr = ioaddr;
> err = sun3_82586_probe1(dev, ioaddr);
> @@ -326,8 +322,9 @@ struct net_device * __init sun3_82586_probe(int unit)
> free_netdev(dev);
> out:
> iounmap((void __iomem *)ioaddr);
> - return ERR_PTR(err);
> + return err;
> }
> +module_init(sun3_82586_probe);
>
> static const struct net_device_ops sun3_82586_netdev_ops = {
> .ndo_open = sun3_82586_open,
> diff --git a/include/net/Space.h b/include/net/Space.h
> index e30e7a70ea99..93fd6caa4bad 100644
> --- a/include/net/Space.h
> +++ b/include/net/Space.h
> @@ -8,16 +8,10 @@ struct net_device *ultra_probe(int unit);
> struct net_device *wd_probe(int unit);
> struct net_device *ne_probe(int unit);
> struct net_device *fmv18x_probe(int unit);
> -struct net_device *i82596_probe(int unit);
> struct net_device *ni65_probe(int unit);
> struct net_device *sonic_probe(int unit);
> struct net_device *smc_init(int unit);
> -struct net_device *atarilance_probe(int unit);
> -struct net_device *sun3lance_probe(int unit);
> -struct net_device *sun3_82586_probe(int unit);
> -struct net_device *apne_probe(int unit);
> struct net_device *cs89x0_probe(int unit);
> -struct net_device *mvme147lance_probe(int unit);
> struct net_device *tc515_probe(int unit);
> struct net_device *lance_probe(int unit);
> struct net_device *cops_probe(int unit);

Gr{oetje,eeting}s,

Geert

--
Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- geert@linux-m68k.org

In personal conversations with technical people, I call myself a hacker. But
when I'm talking to journalists I just say "programmer" or something like that.
-- Linus Torvalds