[DRIVER MODEL] Convert platform drivers to use struct platform_driver
This allows us to eliminate the casts in the drivers, and eventually remove the use of the device_driver function pointer methods for platform device drivers. Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk> Acked-by: Greg Kroah-Hartman <gregkh@suse.de>
This commit is contained in:
committed by
Russell King
parent
00d3dcdd96
commit
3ae5eaec1d
@@ -149,7 +149,7 @@ typedef struct board_info {
|
||||
} board_info_t;
|
||||
|
||||
/* function declaration ------------------------------------- */
|
||||
static int dm9000_probe(struct device *);
|
||||
static int dm9000_probe(struct platform_device *);
|
||||
static int dm9000_open(struct net_device *);
|
||||
static int dm9000_start_xmit(struct sk_buff *, struct net_device *);
|
||||
static int dm9000_stop(struct net_device *);
|
||||
@@ -379,9 +379,8 @@ dm9000_release_board(struct platform_device *pdev, struct board_info *db)
|
||||
* Search DM9000 board, allocate space and register it
|
||||
*/
|
||||
static int
|
||||
dm9000_probe(struct device *dev)
|
||||
dm9000_probe(struct platform_device *pdev)
|
||||
{
|
||||
struct platform_device *pdev = to_platform_device(dev);
|
||||
struct dm9000_plat_data *pdata = pdev->dev.platform_data;
|
||||
struct board_info *db; /* Point a board information structure */
|
||||
struct net_device *ndev;
|
||||
@@ -399,7 +398,7 @@ dm9000_probe(struct device *dev)
|
||||
}
|
||||
|
||||
SET_MODULE_OWNER(ndev);
|
||||
SET_NETDEV_DEV(ndev, dev);
|
||||
SET_NETDEV_DEV(ndev, &pdev->dev);
|
||||
|
||||
PRINTK2("dm9000_probe()");
|
||||
|
||||
@@ -570,7 +569,7 @@ dm9000_probe(struct device *dev)
|
||||
printk("%s: Invalid ethernet MAC address. Please "
|
||||
"set using ifconfig\n", ndev->name);
|
||||
|
||||
dev_set_drvdata(dev, ndev);
|
||||
platform_set_drvdata(pdev, ndev);
|
||||
ret = register_netdev(ndev);
|
||||
|
||||
if (ret == 0) {
|
||||
@@ -1141,9 +1140,9 @@ dm9000_phy_write(struct net_device *dev, int phyaddr_unused, int reg, int value)
|
||||
}
|
||||
|
||||
static int
|
||||
dm9000_drv_suspend(struct device *dev, pm_message_t state)
|
||||
dm9000_drv_suspend(struct platform_device *dev, pm_message_t state)
|
||||
{
|
||||
struct net_device *ndev = dev_get_drvdata(dev);
|
||||
struct net_device *ndev = platform_get_drvdata(dev);
|
||||
|
||||
if (ndev) {
|
||||
if (netif_running(ndev)) {
|
||||
@@ -1155,9 +1154,9 @@ dm9000_drv_suspend(struct device *dev, pm_message_t state)
|
||||
}
|
||||
|
||||
static int
|
||||
dm9000_drv_resume(struct device *dev)
|
||||
dm9000_drv_resume(struct platform_device *dev)
|
||||
{
|
||||
struct net_device *ndev = dev_get_drvdata(dev);
|
||||
struct net_device *ndev = platform_get_drvdata(dev);
|
||||
board_info_t *db = (board_info_t *) ndev->priv;
|
||||
|
||||
if (ndev) {
|
||||
@@ -1173,12 +1172,11 @@ dm9000_drv_resume(struct device *dev)
|
||||
}
|
||||
|
||||
static int
|
||||
dm9000_drv_remove(struct device *dev)
|
||||
dm9000_drv_remove(struct platform_device *pdev)
|
||||
{
|
||||
struct platform_device *pdev = to_platform_device(dev);
|
||||
struct net_device *ndev = dev_get_drvdata(dev);
|
||||
struct net_device *ndev = platform_get_drvdata(pdev);
|
||||
|
||||
dev_set_drvdata(dev, NULL);
|
||||
platform_set_drvdata(pdev, NULL);
|
||||
|
||||
unregister_netdev(ndev);
|
||||
dm9000_release_board(pdev, (board_info_t *) ndev->priv);
|
||||
@@ -1189,13 +1187,14 @@ dm9000_drv_remove(struct device *dev)
|
||||
return 0;
|
||||
}
|
||||
|
||||
static struct device_driver dm9000_driver = {
|
||||
.name = "dm9000",
|
||||
.bus = &platform_bus_type,
|
||||
static struct platform_driver dm9000_driver = {
|
||||
.probe = dm9000_probe,
|
||||
.remove = dm9000_drv_remove,
|
||||
.suspend = dm9000_drv_suspend,
|
||||
.resume = dm9000_drv_resume,
|
||||
.driver = {
|
||||
.name = "dm9000",
|
||||
},
|
||||
};
|
||||
|
||||
static int __init
|
||||
@@ -1203,13 +1202,13 @@ dm9000_init(void)
|
||||
{
|
||||
printk(KERN_INFO "%s Ethernet Driver\n", CARDNAME);
|
||||
|
||||
return driver_register(&dm9000_driver); /* search board and register */
|
||||
return platform_driver_register(&dm9000_driver); /* search board and register */
|
||||
}
|
||||
|
||||
static void __exit
|
||||
dm9000_cleanup(void)
|
||||
{
|
||||
driver_unregister(&dm9000_driver);
|
||||
platform_driver_unregister(&dm9000_driver);
|
||||
}
|
||||
|
||||
module_init(dm9000_init);
|
||||
|
Reference in New Issue
Block a user