diff options
-rw-r--r-- | drivers/mmc/host/s3cmci.c | 71 |
1 files changed, 24 insertions, 47 deletions
diff --git a/drivers/mmc/host/s3cmci.c b/drivers/mmc/host/s3cmci.c index 84e088c44540..20ed46cef13b 100644 --- a/drivers/mmc/host/s3cmci.c +++ b/drivers/mmc/host/s3cmci.c | |||
@@ -1244,11 +1244,14 @@ static inline void s3cmci_cpufreq_deregister(struct s3cmci_host *host) | |||
1244 | } | 1244 | } |
1245 | #endif | 1245 | #endif |
1246 | 1246 | ||
1247 | static int __devinit s3cmci_probe(struct platform_device *pdev, int is2440) | 1247 | static int __devinit s3cmci_probe(struct platform_device *pdev) |
1248 | { | 1248 | { |
1249 | struct s3cmci_host *host; | 1249 | struct s3cmci_host *host; |
1250 | struct mmc_host *mmc; | 1250 | struct mmc_host *mmc; |
1251 | int ret; | 1251 | int ret; |
1252 | int is2440; | ||
1253 | |||
1254 | is2440 = platform_get_device_id(pdev)->driver_data; | ||
1252 | 1255 | ||
1253 | mmc = mmc_alloc_host(sizeof(struct s3cmci_host), &pdev->dev); | 1256 | mmc = mmc_alloc_host(sizeof(struct s3cmci_host), &pdev->dev); |
1254 | if (!mmc) { | 1257 | if (!mmc) { |
@@ -1473,20 +1476,22 @@ static int __devexit s3cmci_remove(struct platform_device *pdev) | |||
1473 | return 0; | 1476 | return 0; |
1474 | } | 1477 | } |
1475 | 1478 | ||
1476 | static int __devinit s3cmci_2410_probe(struct platform_device *dev) | 1479 | static struct platform_device_id s3cmci_driver_ids[] = { |
1477 | { | 1480 | { |
1478 | return s3cmci_probe(dev, 0); | 1481 | .name = "s3c2410-sdi", |
1479 | } | 1482 | .driver_data = 0, |
1483 | }, { | ||
1484 | .name = "s3c2412-sdi", | ||
1485 | .driver_data = 1, | ||
1486 | }, { | ||
1487 | .name = "s3c2440-sdi", | ||
1488 | .driver_data = 1, | ||
1489 | }, | ||
1490 | { } | ||
1491 | }; | ||
1480 | 1492 | ||
1481 | static int __devinit s3cmci_2412_probe(struct platform_device *dev) | 1493 | MODULE_DEVICE_TABLE(platform, s3cmci_driver_ids); |
1482 | { | ||
1483 | return s3cmci_probe(dev, 1); | ||
1484 | } | ||
1485 | 1494 | ||
1486 | static int __devinit s3cmci_2440_probe(struct platform_device *dev) | ||
1487 | { | ||
1488 | return s3cmci_probe(dev, 1); | ||
1489 | } | ||
1490 | 1495 | ||
1491 | #ifdef CONFIG_PM | 1496 | #ifdef CONFIG_PM |
1492 | 1497 | ||
@@ -1510,50 +1515,25 @@ static int s3cmci_resume(struct platform_device *dev) | |||
1510 | #endif /* CONFIG_PM */ | 1515 | #endif /* CONFIG_PM */ |
1511 | 1516 | ||
1512 | 1517 | ||
1513 | static struct platform_driver s3cmci_2410_driver = { | 1518 | static struct platform_driver s3cmci_driver = { |
1514 | .driver.name = "s3c2410-sdi", | 1519 | .driver.name = "s3c-sdi", |
1515 | .driver.owner = THIS_MODULE, | ||
1516 | .probe = s3cmci_2410_probe, | ||
1517 | .remove = __devexit_p(s3cmci_remove), | ||
1518 | .shutdown = s3cmci_shutdown, | ||
1519 | .suspend = s3cmci_suspend, | ||
1520 | .resume = s3cmci_resume, | ||
1521 | }; | ||
1522 | |||
1523 | static struct platform_driver s3cmci_2412_driver = { | ||
1524 | .driver.name = "s3c2412-sdi", | ||
1525 | .driver.owner = THIS_MODULE, | ||
1526 | .probe = s3cmci_2412_probe, | ||
1527 | .remove = __devexit_p(s3cmci_remove), | ||
1528 | .shutdown = s3cmci_shutdown, | ||
1529 | .suspend = s3cmci_suspend, | ||
1530 | .resume = s3cmci_resume, | ||
1531 | }; | ||
1532 | |||
1533 | static struct platform_driver s3cmci_2440_driver = { | ||
1534 | .driver.name = "s3c2440-sdi", | ||
1535 | .driver.owner = THIS_MODULE, | 1520 | .driver.owner = THIS_MODULE, |
1536 | .probe = s3cmci_2440_probe, | 1521 | .id_table = s3cmci_driver_ids, |
1522 | .probe = s3cmci_probe, | ||
1537 | .remove = __devexit_p(s3cmci_remove), | 1523 | .remove = __devexit_p(s3cmci_remove), |
1538 | .shutdown = s3cmci_shutdown, | 1524 | .shutdown = s3cmci_shutdown, |
1539 | .suspend = s3cmci_suspend, | 1525 | .suspend = s3cmci_suspend, |
1540 | .resume = s3cmci_resume, | 1526 | .resume = s3cmci_resume, |
1541 | }; | 1527 | }; |
1542 | 1528 | ||
1543 | |||
1544 | static int __init s3cmci_init(void) | 1529 | static int __init s3cmci_init(void) |
1545 | { | 1530 | { |
1546 | platform_driver_register(&s3cmci_2410_driver); | 1531 | return platform_driver_register(&s3cmci_driver); |
1547 | platform_driver_register(&s3cmci_2412_driver); | ||
1548 | platform_driver_register(&s3cmci_2440_driver); | ||
1549 | return 0; | ||
1550 | } | 1532 | } |
1551 | 1533 | ||
1552 | static void __exit s3cmci_exit(void) | 1534 | static void __exit s3cmci_exit(void) |
1553 | { | 1535 | { |
1554 | platform_driver_unregister(&s3cmci_2410_driver); | 1536 | platform_driver_unregister(&s3cmci_driver); |
1555 | platform_driver_unregister(&s3cmci_2412_driver); | ||
1556 | platform_driver_unregister(&s3cmci_2440_driver); | ||
1557 | } | 1537 | } |
1558 | 1538 | ||
1559 | module_init(s3cmci_init); | 1539 | module_init(s3cmci_init); |
@@ -1562,6 +1542,3 @@ module_exit(s3cmci_exit); | |||
1562 | MODULE_DESCRIPTION("Samsung S3C MMC/SD Card Interface driver"); | 1542 | MODULE_DESCRIPTION("Samsung S3C MMC/SD Card Interface driver"); |
1563 | MODULE_LICENSE("GPL v2"); | 1543 | MODULE_LICENSE("GPL v2"); |
1564 | MODULE_AUTHOR("Thomas Kleffel <tk@maintech.de>, Ben Dooks <ben-linux@fluff.org>"); | 1544 | MODULE_AUTHOR("Thomas Kleffel <tk@maintech.de>, Ben Dooks <ben-linux@fluff.org>"); |
1565 | MODULE_ALIAS("platform:s3c2410-sdi"); | ||
1566 | MODULE_ALIAS("platform:s3c2412-sdi"); | ||
1567 | MODULE_ALIAS("platform:s3c2440-sdi"); | ||