diff options
| author | Ralf Baechle <ralf@linux-mips.org> | 2007-03-18 19:21:22 -0400 |
|---|---|---|
| committer | Jeff Garzik <jeff@garzik.org> | 2007-04-28 11:01:01 -0400 |
| commit | 1e2b980fdfb6189baa779ba7de93f7dba70aa3fd (patch) | |
| tree | cd3188ada5197acb52c8322b560915524c797f16 | |
| parent | a5f8f3b6c91b07ee9aa2445a92a1d6c00a71a3cd (diff) | |
MIPSnet: Modernize use platform_device API.
Signed-off-by: Ralf Baechle <ralf@linux-mips.org>
Signed-off-by: Jeff Garzik <jeff@garzik.org>
| -rw-r--r-- | arch/mips/mips-boards/sim/Makefile | 3 | ||||
| -rw-r--r-- | arch/mips/mips-boards/sim/sim_platform.c | 35 | ||||
| -rw-r--r-- | drivers/net/Kconfig | 4 | ||||
| -rw-r--r-- | drivers/net/mipsnet.c | 53 |
4 files changed, 41 insertions, 54 deletions
diff --git a/arch/mips/mips-boards/sim/Makefile b/arch/mips/mips-boards/sim/Makefile index 6aeebc9122f2..dc0bfda11427 100644 --- a/arch/mips/mips-boards/sim/Makefile +++ b/arch/mips/mips-boards/sim/Makefile | |||
| @@ -17,7 +17,8 @@ | |||
| 17 | # 59 Temple Place - Suite 330, Boston MA 02111-1307, USA. | 17 | # 59 Temple Place - Suite 330, Boston MA 02111-1307, USA. |
| 18 | # | 18 | # |
| 19 | 19 | ||
| 20 | obj-y := sim_setup.o sim_mem.o sim_time.o sim_int.o sim_cmdline.o | 20 | obj-y := sim_platform.o sim_setup.o sim_mem.o sim_time.o sim_int.o \ |
| 21 | sim_cmdline.o | ||
| 21 | 22 | ||
| 22 | obj-$(CONFIG_EARLY_PRINTK) += sim_console.o | 23 | obj-$(CONFIG_EARLY_PRINTK) += sim_console.o |
| 23 | obj-$(CONFIG_SMP) += sim_smp.o | 24 | obj-$(CONFIG_SMP) += sim_smp.o |
diff --git a/arch/mips/mips-boards/sim/sim_platform.c b/arch/mips/mips-boards/sim/sim_platform.c new file mode 100644 index 000000000000..53210a8c5dec --- /dev/null +++ b/arch/mips/mips-boards/sim/sim_platform.c | |||
| @@ -0,0 +1,35 @@ | |||
| 1 | /* | ||
| 2 | * This file is subject to the terms and conditions of the GNU General Public | ||
| 3 | * License. See the file "COPYING" in the main directory of this archive | ||
| 4 | * for more details. | ||
| 5 | * | ||
| 6 | * Copyright (C) 2007 by Ralf Baechle (ralf@linux-mips.org) | ||
| 7 | */ | ||
| 8 | #include <linux/init.h> | ||
| 9 | #include <linux/if_ether.h> | ||
| 10 | #include <linux/kernel.h> | ||
| 11 | #include <linux/platform_device.h> | ||
| 12 | |||
| 13 | static char mipsnet_string[] = "mipsnet"; | ||
| 14 | |||
| 15 | static struct platform_device eth1_device = { | ||
| 16 | .name = mipsnet_string, | ||
| 17 | .id = 0, | ||
| 18 | }; | ||
| 19 | |||
| 20 | /* | ||
| 21 | * Create a platform device for the GPI port that receives the | ||
| 22 | * image data from the embedded camera. | ||
| 23 | */ | ||
| 24 | static int __init mipsnet_devinit(void) | ||
| 25 | { | ||
| 26 | int err; | ||
| 27 | |||
| 28 | err = platform_device_register(ð1_device); | ||
| 29 | if (err) | ||
| 30 | printk(KERN_ERR "%s: registration failed\n", mipsnet_string); | ||
| 31 | |||
| 32 | return err; | ||
| 33 | } | ||
| 34 | |||
| 35 | device_initcall(mipsnet_devinit); | ||
diff --git a/drivers/net/Kconfig b/drivers/net/Kconfig index 3e9b37055ea4..ee920ad1a5f5 100644 --- a/drivers/net/Kconfig +++ b/drivers/net/Kconfig | |||
| @@ -486,8 +486,8 @@ config SGI_IOC3_ETH_HW_TX_CSUM | |||
| 486 | enables offloading for checksums on transmit. If unsure, say Y. | 486 | enables offloading for checksums on transmit. If unsure, say Y. |
| 487 | 487 | ||
| 488 | config MIPS_SIM_NET | 488 | config MIPS_SIM_NET |
| 489 | tristate "MIPS simulator Network device (EXPERIMENTAL)" | 489 | tristate "MIPS simulator Network device" |
| 490 | depends on MIPS_SIM && EXPERIMENTAL | 490 | depends on NET_ETHERNET && MIPS_SIM |
| 491 | help | 491 | help |
| 492 | The MIPSNET device is a simple Ethernet network device which is | 492 | The MIPSNET device is a simple Ethernet network device which is |
| 493 | emulated by the MIPS Simulator. | 493 | emulated by the MIPS Simulator. |
diff --git a/drivers/net/mipsnet.c b/drivers/net/mipsnet.c index 403f63afd201..638a279ec505 100644 --- a/drivers/net/mipsnet.c +++ b/drivers/net/mipsnet.c | |||
| @@ -26,8 +26,6 @@ struct mipsnet_priv { | |||
| 26 | struct net_device_stats stats; | 26 | struct net_device_stats stats; |
| 27 | }; | 27 | }; |
| 28 | 28 | ||
| 29 | static struct platform_device *mips_plat_dev; | ||
| 30 | |||
| 31 | static char mipsnet_string[] = "mipsnet"; | 29 | static char mipsnet_string[] = "mipsnet"; |
| 32 | 30 | ||
| 33 | /* | 31 | /* |
| @@ -297,64 +295,17 @@ static struct device_driver mipsnet_driver = { | |||
| 297 | .remove = __devexit_p(mipsnet_device_remove), | 295 | .remove = __devexit_p(mipsnet_device_remove), |
| 298 | }; | 296 | }; |
| 299 | 297 | ||
| 300 | static void mipsnet_platform_release(struct device *device) | ||
| 301 | { | ||
| 302 | struct platform_device *pldev; | ||
| 303 | |||
| 304 | /* free device */ | ||
| 305 | pldev = to_platform_device(device); | ||
| 306 | kfree(pldev); | ||
| 307 | } | ||
| 308 | |||
| 309 | static int __init mipsnet_init_module(void) | 298 | static int __init mipsnet_init_module(void) |
| 310 | { | 299 | { |
| 311 | struct platform_device *pldev; | ||
| 312 | int err; | 300 | int err; |
| 313 | 301 | ||
| 314 | printk(KERN_INFO "MIPSNet Ethernet driver. Version: %s. " | 302 | printk(KERN_INFO "MIPSNet Ethernet driver. Version: %s. " |
| 315 | "(c)2005 MIPS Technologies, Inc.\n", MIPSNET_VERSION); | 303 | "(c)2005 MIPS Technologies, Inc.\n", MIPSNET_VERSION); |
| 316 | 304 | ||
| 317 | if (driver_register(&mipsnet_driver)) { | 305 | err = driver_register(&mipsnet_driver); |
| 306 | if (err) | ||
| 318 | printk(KERN_ERR "Driver registration failed\n"); | 307 | printk(KERN_ERR "Driver registration failed\n"); |
| 319 | err = -ENODEV; | ||
| 320 | goto out; | ||
| 321 | } | ||
| 322 | |||
| 323 | if (!(pldev = kmalloc (sizeof (*pldev), GFP_KERNEL))) { | ||
| 324 | err = -ENOMEM; | ||
| 325 | goto out_unregister_driver; | ||
| 326 | } | ||
| 327 | |||
| 328 | memset (pldev, 0, sizeof (*pldev)); | ||
| 329 | pldev->name = mipsnet_string; | ||
| 330 | pldev->id = 0; | ||
| 331 | pldev->dev.release = mipsnet_platform_release; | ||
| 332 | 308 | ||
| 333 | if (platform_device_register(pldev)) { | ||
| 334 | err = -ENODEV; | ||
| 335 | goto out_free_pldev; | ||
| 336 | } | ||
| 337 | |||
| 338 | if (!pldev->dev.driver) { | ||
| 339 | /* | ||
| 340 | * The driver was not bound to this device, there was | ||
| 341 | * no hardware at this address. Unregister it, as the | ||
| 342 | * release fuction will take care of freeing the | ||
| 343 | * allocated structure | ||
| 344 | */ | ||
| 345 | platform_device_unregister (pldev); | ||
| 346 | } | ||
| 347 | |||
| 348 | mips_plat_dev = pldev; | ||
| 349 | |||
| 350 | return 0; | ||
| 351 | |||
| 352 | out_free_pldev: | ||
| 353 | kfree(pldev); | ||
| 354 | |||
| 355 | out_unregister_driver: | ||
| 356 | driver_unregister(&mipsnet_driver); | ||
| 357 | out: | ||
| 358 | return err; | 309 | return err; |
| 359 | } | 310 | } |
| 360 | 311 | ||
