ath9k: Register id table for platform device
authorVasanthakumar Thiagarajan <vasanth@atheros.com>
Tue, 12 Apr 2011 07:12:22 +0000 (12:42 +0530)
committerJohn W. Linville <linville@tuxdriver.com>
Tue, 12 Apr 2011 20:59:51 +0000 (16:59 -0400)
Currently the device id in the platform driver is hardcoded to an id
which is specific to AR9130/AR9132 SOCs as it supports only wmac (wireless mac)
of these SOCs. But this needs to be dynamic when we want to support different
wmac of SOCs. So add id_table to driver to make it extendable to more SOCs.

Signed-off-by: Vasanthakumar Thiagarajan <vasanth@atheros.com>
Acked-by: Gabor Juhos <juhosg@openwrt.org>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
drivers/net/wireless/ath/ath9k/ahb.c

index 9cb0efa9b4c0873710c99d28d7dbd6ab5feee696..5193ed58a17b781516bd0a6773762b68fdb5f3f8 100644 (file)
 #include <linux/ath9k_platform.h>
 #include "ath9k.h"
 
+const struct platform_device_id ath9k_platform_id_table[] = {
+       {
+               .name = "ath9k",
+               .driver_data = AR5416_AR9100_DEVID,
+       },
+       {},
+};
+
 /* return bus cachesize in 4B word units */
 static void ath_ahb_read_cachesize(struct ath_common *common, int *csz)
 {
@@ -57,6 +65,7 @@ static int ath_ahb_probe(struct platform_device *pdev)
        struct ath_softc *sc;
        struct ieee80211_hw *hw;
        struct resource *res;
+       const struct platform_device_id *id = platform_get_device_id(pdev);
        int irq;
        int ret = 0;
        struct ath_hw *ah;
@@ -116,7 +125,7 @@ static int ath_ahb_probe(struct platform_device *pdev)
                goto err_free_hw;
        }
 
-       ret = ath9k_init_device(AR5416_AR9100_DEVID, sc, 0x0, &ath_ahb_bus_ops);
+       ret = ath9k_init_device(id->driver_data, sc, 0x0, &ath_ahb_bus_ops);
        if (ret) {
                dev_err(&pdev->dev, "failed to initialize device\n");
                goto err_irq;
@@ -165,8 +174,11 @@ static struct platform_driver ath_ahb_driver = {
                .name   = "ath9k",
                .owner  = THIS_MODULE,
        },
+       .id_table    = ath9k_platform_id_table,
 };
 
+MODULE_DEVICE_TABLE(platform, ath9k_platform_id_table);
+
 int ath_ahb_init(void)
 {
        return platform_driver_register(&ath_ahb_driver);