aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorproski <proski>2006-08-02 02:50:35 +0000
committerproski <proski>2006-08-02 02:50:35 +0000
commit2a3a239f8062c650728f1d1b7e0572fcaa9db6dc (patch)
treee94442c3101b3c3ec41339f631a692ac3888c02f
parent7a412d66c349a57d79bcd83ae92ae350cae5f844 (diff)
Join modules into one, call it at76_usb
Install it in kernel/drivers/net/wireless - no need to have a subdirectory for just one module. "make install" removes the old modules first. Simplify "make uninstall". Remove module stuff from at76_usbdfu.c. Reuse common debug facility, use DBG_DFU for DFU related debug.
-rw-r--r--Makefile15
-rw-r--r--at76_usbdfu.c83
-rw-r--r--at76c503.c46
-rw-r--r--at76c503.h43
4 files changed, 76 insertions, 111 deletions
diff --git a/Makefile b/Makefile
index 7afc0d6..a3bb898 100644
--- a/Makefile
+++ b/Makefile
@@ -31,7 +31,9 @@ KERNELRELEASE = $(shell sed -ne 's/"//g;s/^\#define UTS_RELEASE //p' \
$(VERSION_HEADER))
-obj-m = at76c503.o at76_usbdfu.o
+obj-m = at76_usb.o
+
+at76_usb-objs = at76c503.o at76_usbdfu.o
SRCS = at76c503.c at76_usbdfu.c
@@ -47,7 +49,7 @@ DISTNAME = at76c503-$(VERSION)
DISTDIR = $(DISTNAME)
endif
-INSTALL_MOD_DIR = kernel/drivers/net/wireless/at76c503
+INSTALL_MOD_DIR = kernel/drivers/net/wireless
MODULE_DIR = $(DESTDIR)/lib/modules/$(KERNELRELEASE)/$(INSTALL_MOD_DIR)
DEPMOD = /sbin/depmod
@@ -68,14 +70,13 @@ check:
$(MAKE) $(KBUILD_FLAGS) C=2 CF="$(SPARSE_FLAGS)"
install:
+ rm -rf $(MODULE_DIR)/at76*
$(MAKE) $(KBUILD_FLAGS) modules_install \
INSTALL_MOD_DIR="$(INSTALL_MOD_DIR)"
$(DEPMOD) -ae
uninstall:
- for f in $(obj-m:%.o=%.ko); do rm -f $(MODULE_DIR)/$$f; done
-
-.PHONY: all dist kernel_patch rmmod install modules
+ rm -rf $(MODULE_DIR)/at76*
TAGS:
rm -f TAGS
@@ -97,7 +98,9 @@ dist:
tar zcvf $(DISTNAME).tar.gz $(DISTNAME)
kernel_patch:
- DRV_SRC="$(SRCS)" DRV_HDR="$(HDRS)" ./kernel_patch.sh $(KERNEL_PATH)
+ DRV_SRC="$(SRCS)" DRV_HDR="$(HDRS)" ./kernel_patch.sh $(KERNEL_PATH)
rmmod:
-rmmod $(obj-m:%.o=%)
+
+.PHONY: all modules check install uninstall clean dist kernel_patch rmmod
diff --git a/at76_usbdfu.c b/at76_usbdfu.c
index 0dad557..8e0f8ef 100644
--- a/at76_usbdfu.c
+++ b/at76_usbdfu.c
@@ -33,32 +33,14 @@
#include "at76c503.h" /* for DRIVER_VERSION only */
#include "at76_usbdfu.h"
-static int debug = 0;
-
-/* Use our own dbg macro */
-#undef dbg
-#define dbg(format, arg...) \
- do { if (debug) \
- printk(KERN_DEBUG __FILE__ ": " format "\n" , ## arg);\
- } while (0)
-
#ifdef DEBUG_SEM
- #define dfu_down(sem) do { dbg("sem %s down", #sem); down(sem); } while (0)
- #define dfu_up(sem) do { dbg("sem %s up", #sem); up(sem); } while (0)
+ #define dfu_down(sem) do { dbg(DBG_DFU, "sem %s down", #sem); down(sem); } while (0)
+ #define dfu_up(sem) do { dbg(DBG_DFU, "sem %s up", #sem); up(sem); } while (0)
#else
#define dfu_down(sem) down(sem)
#define dfu_up(sem) up(sem)
#endif
-/* Version Information */
-#define DRIVER_AUTHOR \
-"Oliver Kurth <oku@masqmail.cx>, Joerg Albert <joerg.albert@gmx.de>, Alex <alex@foogod.com>"
-#define DRIVER_DESC "USB Device Firmware Upgrade (DFU) handler"
-
-/* Module paramaters */
-module_param(debug, bool, 0400);
-MODULE_PARM_DESC(debug, "debug on/off");
-
/* DFU states */
#define STATE_IDLE 0x00
@@ -112,7 +94,7 @@ int dfu_detach(struct usb_device *udev)
{
int result;
- dbg("dfu_detach");
+ dbg(DBG_DFU, "dfu_detach");
result = usb_control_msg(udev, usb_sndctrlpipe(udev,0),
DFU_DETACH,
@@ -134,7 +116,7 @@ int dfu_download_block(struct dfu_ctx *ctx, u8 *buffer,
u8 *tmpbuf = ctx->buf;
struct usb_device *udev = ctx->udev;
- dbg("dfu_download_block(): buffer=%p, bytes=%d, block=%d", buffer, bytes, block);
+ dbg(DBG_DFU, "dfu_download_block(): buffer=%p, bytes=%d, block=%d", buffer, bytes, block);
if(tmpbuf == NULL)
return -ENOMEM;
@@ -158,7 +140,7 @@ int dfu_get_status(struct dfu_ctx *ctx, struct dfu_status *status)
int result;
struct usb_device *udev = ctx->udev;
-// dbg("dfu_get_status()");
+// dbg(DBG_DFU, "dfu_get_status()");
result = usb_control_msg(udev, usb_rcvctrlpipe(udev, 0),
DFU_GETSTATUS,
@@ -177,7 +159,7 @@ u8 dfu_get_state(struct usb_device *udev, u8 *state)
{
int result;
-// dbg("dfu_get_state()");
+// dbg(DBG_DFU, "dfu_get_state()");
result = usb_control_msg(udev, usb_rcvctrlpipe(udev, 0),
DFU_GETSTATE, /* Request */
@@ -232,7 +214,7 @@ int usbdfu_download(struct usb_device *udev, u8 *dfu_buffer, u32 dfu_len,
int dfu_block_bytes = 0, dfu_bytes_left = dfu_len, dfu_buffer_offset = 0;
int dfu_block_cnt = 0;
- dbg("%s( %p, %u, %d)", __FUNCTION__, dfu_buffer,
+ dbg(DBG_DFU, "%s( %p, %u, %d)", __FUNCTION__, dfu_buffer,
dfu_len, manifest_sync_timeout);
if (dfu_len == 0) {
@@ -259,7 +241,7 @@ int usbdfu_download(struct usb_device *udev, u8 *dfu_buffer, u32 dfu_len,
switch (dfu_state) {
case STATE_DFU_DOWNLOAD_SYNC:
- dbg("STATE_DFU_DOWNLOAD_SYNC");
+ dbg(DBG_DFU, "STATE_DFU_DOWNLOAD_SYNC");
status = dfu_get_status(ctx, dfu_stat_buf);
if (USB_SUCCESS(status)) {
dfu_state = dfu_stat_buf->bState;
@@ -270,23 +252,23 @@ int usbdfu_download(struct usb_device *udev, u8 *dfu_buffer, u32 dfu_len,
break;
case STATE_DFU_DOWNLOAD_BUSY:
- dbg("STATE_DFU_DOWNLOAD_BUSY");
+ dbg(DBG_DFU, "STATE_DFU_DOWNLOAD_BUSY");
need_dfu_state = 1;
if (dfu_timeout >= 0){
- dbg("DFU: Resetting device");
+ dbg(DBG_DFU, "DFU: Resetting device");
set_current_state( TASK_INTERRUPTIBLE );
schedule_timeout(1+dfu_timeout*HZ/1000);
}else
- dbg("DFU: In progress");
+ dbg(DBG_DFU, "DFU: In progress");
break;
case STATE_DFU_DOWNLOAD_IDLE:
- dbg("DOWNLOAD...");
+ dbg(DBG_DFU, "DOWNLOAD...");
/* fall through */
case STATE_DFU_IDLE:
- dbg("DFU IDLE");
+ dbg(DBG_DFU, "DFU IDLE");
if (dfu_bytes_left <= DFU_PACKETSIZE)
dfu_block_bytes = dfu_bytes_left;
@@ -308,7 +290,7 @@ int usbdfu_download(struct usb_device *udev, u8 *dfu_buffer, u32 dfu_len,
break;
case STATE_DFU_MANIFEST_SYNC:
- dbg("STATE_DFU_MANIFEST_SYNC");
+ dbg(DBG_DFU, "STATE_DFU_MANIFEST_SYNC");
status = dfu_get_status(ctx, dfu_stat_buf);
@@ -323,38 +305,38 @@ int usbdfu_download(struct usb_device *udev, u8 *dfu_buffer, u32 dfu_len,
dfu_timeout = manifest_sync_timeout;
if (dfu_timeout >= 0){
- dbg("DFU: Waiting for manifest phase");
+ dbg(DBG_DFU, "DFU: Waiting for manifest phase");
set_current_state( TASK_INTERRUPTIBLE );
schedule_timeout((dfu_timeout*HZ+999)/1000);
}else
- dbg("DFU: In progress");
+ dbg(DBG_DFU, "DFU: In progress");
}
break;
case STATE_DFU_MANIFEST:
- dbg("STATE_DFU_MANIFEST");
+ dbg(DBG_DFU, "STATE_DFU_MANIFEST");
is_done = 1;
break;
case STATE_DFU_MANIFEST_WAIT_RESET:
- dbg("STATE_DFU_MANIFEST_WAIT_RESET");
+ dbg(DBG_DFU, "STATE_DFU_MANIFEST_WAIT_RESET");
// usb_reset_device(udev);
is_done = 1;
break;
case STATE_DFU_UPLOAD_IDLE:
- dbg("STATE_DFU_UPLOAD_IDLE");
+ dbg(DBG_DFU, "STATE_DFU_UPLOAD_IDLE");
break;
case STATE_DFU_ERROR:
- dbg("STATE_DFU_ERROR");
+ dbg(DBG_DFU, "STATE_DFU_ERROR");
// usb_reset_device(udev);
status = -EPIPE;
break;
default:
- dbg("DFU UNKNOWN STATE (%d)", dfu_state);
+ dbg(DBG_DFU, "DFU UNKNOWN STATE (%d)", dfu_state);
status = -EINVAL;
break;
}
@@ -368,26 +350,3 @@ int usbdfu_download(struct usb_device *udev, u8 *dfu_buffer, u32 dfu_len,
return 0;
}
-static int __init usbdfu_init(void)
-{
- info(DRIVER_DESC " " DRIVER_VERSION " loading");
- return 0;
-}
-
-/**
- * usbdfu_exit
- */
-static void __exit usbdfu_exit(void)
-{
- info(DRIVER_DESC " " DRIVER_VERSION " unloading");
-}
-
-module_init (usbdfu_init);
-module_exit (usbdfu_exit);
-
-EXPORT_SYMBOL(usbdfu_download);
-
-MODULE_AUTHOR(DRIVER_AUTHOR);
-MODULE_DESCRIPTION(DRIVER_DESC);
-MODULE_LICENSE("GPL");
-
diff --git a/at76c503.c b/at76c503.c
index b62011b..443d1cc 100644
--- a/at76c503.c
+++ b/at76c503.c
@@ -182,49 +182,7 @@ static inline struct urb *alloc_urb(int iso_pk, gfp_t mem_flags) {
#define FILL_BULK_URB(a,b,c,d,e,f,g) usb_fill_bulk_urb(a,b,c,d,e,f,g)
#endif
-/* debug bits */
-#define DBG_PROGRESS 0x00000001 /* progress of scan-join-(auth-assoc)-connected */
-#define DBG_BSS_TABLE 0x00000002 /* show the bss table after scans */
-#define DBG_IOCTL 0x00000004 /* ioctl calls / settings */
-#define DBG_KEVENT 0x00000008 /* kevents */
-#define DBG_TX_DATA 0x00000010 /* tx header */
-#define DBG_TX_DATA_CONTENT 0x00000020 /* tx content */
-#define DBG_TX_MGMT 0x00000040
-#define DBG_RX_DATA 0x00000080 /* rx data header */
-#define DBG_RX_DATA_CONTENT 0x00000100 /* rx data content */
-#define DBG_RX_MGMT 0x00000200 /* rx mgmt header except beacon and probe responses */
-#define DBG_RX_BEACON 0x00000400 /* rx beacon */
-#define DBG_RX_CTRL 0x00000800 /* rx control */
-#define DBG_RX_MGMT_CONTENT 0x00001000 /* rx mgmt content */
-#define DBG_RX_FRAGS 0x00002000 /* rx data fragment handling */
-#define DBG_DEVSTART 0x00004000 /* fw download, device start */
-#define DBG_URB 0x00008000 /* rx urb status, ... */
-#define DBG_RX_ATMEL_HDR 0x00010000 /* the Atmel specific header of each rx packet */
-#define DBG_PROC_ENTRY 0x00020000 /* procedure entries and exits */
-#define DBG_PM 0x00040000 /* power management settings */
-#define DBG_BSS_MATCH 0x00080000 /* show why a certain bss did not match */
-#define DBG_PARAMS 0x00100000 /* show the configured parameters */
-#define DBG_WAIT_COMPLETE 0x00200000 /* show the wait_completion progress */
-#define DBG_RX_FRAGS_SKB 0x00400000 /* show skb header for incoming rx fragments */
-#define DBG_BSS_TABLE_RM 0x00800000 /* inform on removal of old bss table entries */
-#define DBG_MONITOR_MODE 0x01000000 /* debugs from monitor mode */
-#define DBG_MIB 0x02000000 /* dump all MIBs in startup_device */
-#define DBG_MGMT_TIMER 0x04000000 /* dump mgmt_timer ops */
-#define DBG_WE_EVENTS 0x08000000 /* dump wireless events */
-#define DBG_FW 0x10000000 /* firmware download */
-
-#define DBG_DEFAULTS 0
-static int debug = DBG_DEFAULTS;
-
-static const u8 zeros[32];
-
-/* Use our own dbg macro */
-#undef dbg
-#define dbg(bits, format, arg...) \
- do { \
- if (debug & (bits)) \
- printk(KERN_DEBUG __FILE__ ": " format "\n" , ## arg);\
- } while (0)
+int debug = DBG_DEFAULTS;
/* uncond. debug output */
#define dbg_uc(format, arg...) \
@@ -576,6 +534,8 @@ static char *hex2str(char *obuf, u8 *buf, int len, char delim)
*/
static inline int is_cloaked_ssid(u8 *ssid, int length)
{
+ static const u8 zeros[32];
+
return (length == 0) ||
(length == 1 && *ssid == ' ') ||
(length > 0 && !memcmp(ssid,zeros,length));
diff --git a/at76c503.h b/at76c503.h
index 727af4a..0d78d79 100644
--- a/at76c503.h
+++ b/at76c503.h
@@ -702,4 +702,47 @@ typedef struct p80211msg_lnxind_wlansniffrm
p80211item_uint32_t frmlen;
} __attribute__ ((packed)) p80211msg_lnxind_wlansniffrm_t;
+/* debug bits */
+#define DBG_PROGRESS 0x00000001 /* progress of scan-join-(auth-assoc)-connected */
+#define DBG_BSS_TABLE 0x00000002 /* show the bss table after scans */
+#define DBG_IOCTL 0x00000004 /* ioctl calls / settings */
+#define DBG_KEVENT 0x00000008 /* kevents */
+#define DBG_TX_DATA 0x00000010 /* tx header */
+#define DBG_TX_DATA_CONTENT 0x00000020 /* tx content */
+#define DBG_TX_MGMT 0x00000040
+#define DBG_RX_DATA 0x00000080 /* rx data header */
+#define DBG_RX_DATA_CONTENT 0x00000100 /* rx data content */
+#define DBG_RX_MGMT 0x00000200 /* rx mgmt header except beacon and probe responses */
+#define DBG_RX_BEACON 0x00000400 /* rx beacon */
+#define DBG_RX_CTRL 0x00000800 /* rx control */
+#define DBG_RX_MGMT_CONTENT 0x00001000 /* rx mgmt content */
+#define DBG_RX_FRAGS 0x00002000 /* rx data fragment handling */
+#define DBG_DEVSTART 0x00004000 /* fw download, device start */
+#define DBG_URB 0x00008000 /* rx urb status, ... */
+#define DBG_RX_ATMEL_HDR 0x00010000 /* the Atmel specific header of each rx packet */
+#define DBG_PROC_ENTRY 0x00020000 /* procedure entries and exits */
+#define DBG_PM 0x00040000 /* power management settings */
+#define DBG_BSS_MATCH 0x00080000 /* show why a certain bss did not match */
+#define DBG_PARAMS 0x00100000 /* show the configured parameters */
+#define DBG_WAIT_COMPLETE 0x00200000 /* show the wait_completion progress */
+#define DBG_RX_FRAGS_SKB 0x00400000 /* show skb header for incoming rx fragments */
+#define DBG_BSS_TABLE_RM 0x00800000 /* inform on removal of old bss table entries */
+#define DBG_MONITOR_MODE 0x01000000 /* debugs from monitor mode */
+#define DBG_MIB 0x02000000 /* dump all MIBs in startup_device */
+#define DBG_MGMT_TIMER 0x04000000 /* dump mgmt_timer ops */
+#define DBG_WE_EVENTS 0x08000000 /* dump wireless events */
+#define DBG_FW 0x10000000 /* firmware download */
+#define DBG_DFU 0x20000000 /* device firmware upgrade */
+
+#define DBG_DEFAULTS 0
+extern int debug;
+
+/* Use our own dbg macro */
+#undef dbg
+#define dbg(bits, format, arg...) \
+ do { \
+ if (debug & (bits)) \
+ printk(KERN_DEBUG __FILE__ ": " format "\n" , ## arg);\
+ } while (0)
+
#endif /* _AT76C503_H */