Re: SMC2662W V.4

Joerg Albert <[email protected]>
Newsgroups gmane.linux.drivers.at76c503a.user
Message-ID <[email protected]>
Hi Alex,

On Thu, 1 Jul 2004, Alex Schultz wrote:

> Yes, all I applied was the patch from your previous posting and the
> boardtype fix. About the keyboard lockups, what you said would indicate
> (if I understand correctly) that it's getting stuck in the middle of
> portions of the firmware download waiting for the device. Do you have
> any idea how this could be fixed/worked around or at least could you
> please tell me why it might be waiting on the device?

I guess it waits for the ack (on USB level) for the REMAP command which
never comes, because the REMAP actually restarts the ARM7 in the
adapter with the downloaded firmware, after it has remapped the RAM in the
memory space. Strangely all the firmware of the other AT76C50* behave
nicer. Attached a patch which decreases the timeout time of the REMAP
command from 1 to 0.1 s for the 505A. Please try if it makes the kbd lock
time shorter.

/Jörg
505a_remap_kbd_lock.patch (text/plain, 2.3 KB)
? .tmp_versions
? 4kstacks_crash.log
? 505a_remap_kbd_lock.patch
? Makefile.new
? at76c503-i3861-fw
? at76c503-i3863-fw
? at76c503-rfmd-0.90.2-140-fw
? at76c503-rfmd-acc-fw
? at76c503-rfmd-fw
? at76c503.o.dump.new
? at76c505-rfmd-fw
? at76c505-rfmd2958-fw
? at76c505a-rfmd-fw
? atmel_at76c503-i3861.bin
? atmel_at76c503-i3863.bin
? atmel_at76c503-rfmd-0.90.2-140.bin
? atmel_at76c503-rfmd-acc.bin
? atmel_at76c503-rfmd.bin
? atmel_at76c505-rfmd.bin
? atmel_at76c505-rfmd2958.bin
? atmel_at76c505a-rfmd2958.bin
? atuwi_rfmd2958-smc_fw.h
? config.sh
? delete_old
? detach.c
? fw-pkg-rfmd-0.90.2-200.h
? fw-rfmd-0.90.2-200.h
? fw_download_in_probe.patch
? gen_fw
? int.bin
? int.h
? jeremy.crash.diff
? monitor.mode
? opmode.patch
? rxtx.diff
? snap_fixed
? t.c
? t.o.dump
? testing
? usb_reset.patch
? wusb11_28.config.descr.lis
? wusb11v26_fw_0.101.x_joining_wrt54g
Index: at76c503.c
===================================================================
RCS file: /cvsroot/at76c503a/at76c503a/at76c503.c,v
retrieving revision 1.61
diff -u -r1.61 at76c503.c
--- at76c503.c	29 Jun 2004 21:26:24 -0000	1.61
+++ at76c503.c	4 Jul 2004 20:15:34 -0000
@@ -865,13 +865,13 @@
 #endif //#if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 5, 0)
 
 
-int at76c503_remap(struct usb_device *udev)
+int at76c503_remap(struct usb_device *udev, u32 board_type)
 {
 	int ret;
 	ret = usb_control_msg(udev, usb_sndctrlpipe(udev,0),
 			      0x0a, INTERFACE_VENDOR_REQUEST_OUT,
 			      0, 0,
-			      NULL, 0, HZ);
+			      NULL, 0, board_type != BOARDTYPE_505A_RFMD_2958 ? HZ : HZ/10);
 	if (ret < 0)
 		return ret;
 
@@ -2579,7 +2579,7 @@
  
 		dbg(DBG_DEVSTART, "sending REMAP");
 
-		if ((ret=at76c503_remap(dev->udev)) < 0) {
+		if ((ret=at76c503_remap(dev->udev, dev->board_type)) < 0) {
 			err("sending REMAP failed with %d",ret);
 			goto end_internal_fw;
 		}
@@ -6761,6 +6761,7 @@
 	return ret;
 }
 
+#if 0
 /**
  * 	at76c503_usbdfu_post
  *
@@ -6774,7 +6775,7 @@
 	int result;
 
 	dbg(DBG_DEVSTART, "Sending remap command...");
-	result = at76c503_remap(udev);
+	result = at76c503_remap(udev, dev->board_type);
 	if (result < 0) {
 		err("Remap command failed (%d)", result);
 		return result;
@@ -6782,8 +6783,7 @@
 	return 0;
 }
 
-/* == PROC == */
-
+#endif /* #if 0 */
 
 /**
  *	at76c503_init
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.