--- a/ar6000/hif/hif2.c 2009-03-25 00:23:38.000000000 +0300 +++ b/ar6000//hif/hif2.c 2009-03-30 00:23:14.000000000 +0400 @@ -25,9 +25,18 @@ #include #include #include -#include + +/* + * turn on GTA02 platform depened code. + * if you make driver for another, comment it. + */ +#define _GTA02_ + +#ifdef _GTA02_ #include #include +#include +#endif /* end _GTA02_ */ #include "athdefs.h" #include "a_types.h" @@ -132,9 +141,6 @@ /* ----- Request processing ------------------------------------------------ */ -#include - - static A_STATUS process_request(struct hif_request *req) { int ret; @@ -143,16 +149,20 @@ dev_dbg(&req->func->dev, "process_request(req %p)\n", req); sdio_claim_host(req->func); if (req->read) { +#ifdef _GTA02_ while (!s3c2410_gpio_getpin(S3C2410_GPE7)) { printk(KERN_INFO "READ WHILE BUSY !\n"); yield(); } +#endif /* end _GTA02_ */ ret = req->read(req->func, req->buf, req->addr, req->len); } else { +#ifdef _GTA02_ while (!s3c2410_gpio_getpin(S3C2410_GPE7)) { printk(KERN_INFO "WRITE WHILE BUSY !\n"); yield(); } +#endif /* end _GTA02_ */ ret = req->write(req->func, req->addr, req->buf, req->len); } sdio_release_host(req->func); @@ -599,6 +609,7 @@ } +#ifdef _GTA02_ static int ar6000_rfkill_cb(void *data, int on) { struct hif_device *hif = data; @@ -611,6 +622,7 @@ ar6000_deactivate(hif); return 0; } +#endif /* end _GTA02_ */ static int sdio_ar6000_probe(struct sdio_func *func, @@ -632,6 +644,7 @@ mutex_init(&hif->activate_lock); hif->active = 0; +#ifdef _GTA02_ if (gta02_wlan_query_rfkill_lock()) ret = ar6000_activate(hif); if (!ret) { @@ -639,6 +652,10 @@ return 0; } gta02_wlan_query_rfkill_unlock(); +#else /* not _GTA02_ */ + if (!(ret = ar6000_activate(hif))) + return 0; +#endif /* end _GTA02_ */ sdio_set_drvdata(func, NULL); kfree(hif); return ret; @@ -651,7 +668,9 @@ HIF_DEVICE *hif = sdio_get_drvdata(func); dev_dbg(dev, "sdio_ar6000_remove\n"); +#ifdef _GTA02_ gta02_wlan_clear_rfkill_cb(); +#endif /* end _GTA02_ */ ar6000_deactivate(hif); sdio_set_drvdata(func, NULL); kfree(hif); @@ -660,18 +679,25 @@ /* ----- Device registration/unregistration (called by HIF) ---------------- */ +/* + * define vendor/device IDs. Preffered keep it in this file, + * while it is not will added to official linux kernel. + */ +#define SDIO_VENDOR_ID_ATHEROS 0x271 +#define SDIO_DEVICE_ID_ATHEROS_AR6001 0x100 +#define SDIO_DEVICE_ID_ATHEROS_AR6002 0x200 #define ATHEROS_SDIO_DEVICE(id, offset) \ SDIO_DEVICE(SDIO_VENDOR_ID_ATHEROS, SDIO_DEVICE_ID_ATHEROS_##id | (offset)) static const struct sdio_device_id sdio_ar6000_ids[] = { - { ATHEROS_SDIO_DEVICE(AR6000, 0) }, - { ATHEROS_SDIO_DEVICE(AR6000, 0x1) }, - { ATHEROS_SDIO_DEVICE(AR6000, 0x8) }, - { ATHEROS_SDIO_DEVICE(AR6000, 0x9) }, - { ATHEROS_SDIO_DEVICE(AR6000, 0xa) }, - { ATHEROS_SDIO_DEVICE(AR6000, 0xb) }, - { /* end: all zeroes */ }, + { ATHEROS_SDIO_DEVICE(AR6002, 0x0) }, + { ATHEROS_SDIO_DEVICE(AR6002, 0x1) }, + { ATHEROS_SDIO_DEVICE(AR6001, 0x8) }, + { ATHEROS_SDIO_DEVICE(AR6001, 0x9) }, + { ATHEROS_SDIO_DEVICE(AR6001, 0xa) }, + { ATHEROS_SDIO_DEVICE(AR6001, 0xb) }, + { /* end: all zeroes */ }, }; MODULE_DEVICE_TABLE(sdio, sdio_ar6000_ids);