Hi
OK, I have now given away the Dell laptop I borrowed, so my SMC driver
development is over for now.
For those of you that want to continue development, you should know that
you can find the latest changes in Linux-2.2.14 + pre-patch-2.2.15-5.
The driver should now sort of work. SIR should be stable, and it should be
possible to get FIR running. I have successfully tried (IrLAN at FIR
speeds):
o Telnet
o X-redirect with Xscreensaver (may run for 30 min before it reboots)
o ping -f
... But FTP will give instant reboot, especially with GET!!
The problem is probably not very easy to fix :-( I will now try to explain
what I think we need to do to the driver in order to make it stable:
1) The SMC IrCC chip will tri-state the DMA request line if you disable
DMA. It is therefore very important to enable chip DMA _before_ you enable
the DMA controller, and also very important to disable the DMA controller
before you disable chip DMA. I've tried to do this, but then the whole
thing stopped working for me. Don't know what I did wrong.
2) The _receive_complete() function must be changed so it doesn't deliver
the frame before it's fully transferred to main memory:
o Check that message count has increased
o If message count > 1 for IrCC 1.0 then just discard all received
frames, since there is no way to separate them from each other. The
IrCC 2.0 can separate multiple received back-to-back frames, so we
need to have special code for this.
o Disable Rx for the IrCC 1.0 when you enter _receive_complete().
o Must wait a few us to make sure the end of the frame is out of the Rx
FIFO. Wait until the Rx FIFO is empty for IrCC 1.0
o Finally, check the LSR register for any errors before delivering the
frame(s)
3) Good luck, you'll need it. Remember to save _every_ working version is a
directory like this: smc-ircc.c.good.29012000. Then you can diff out the
changes in case the driver suddenly stops working for you. I had to
revoke one day of development because the driver suddenly stopped
working, and I didn't know which change had caused the fault :-(
Cheers
-- Dag
--
/ Dag Brattli | The Linux-IrDA Project /
// University of Tromsoe, Norway | Infrared communication for Linux //
/// http://www.cs.uit.no/~dagb | http://www.cs.uit.no/linux-irda/ ///
_______________________________________________
Linux-IrDA mailing list - [EMAIL PROTECTED]
http://www4.pasta.cs.UiT.No/mailman/listinfo/linux-irda