At 05:37 PM 12/4/2008, Mike Tancsa wrote:
At 05:20 PM 12/4/2008, Hans Petter Selasky wrote:
On Thursday 04 December 2008, Gabor wrote:
> Some more twists to this.  As I said if I kill off our program and restart
> it, it never sees carrier unless the module was reloaded. However, if I
> unplug the serial cable from the Windows box and re-plug it, carrier goes
> and comes back as expected but only as long as our software is running. If > our software is not running and we unplug the serial cable from the Windows > box, carrier does not come back when we start up our program with the cable
> plugged back in.

Maybe you can try setting the MSR to zero when the modem is opened in the
uftdi.c driver file.

In USB2 there is also a sysctl for UFTDI debugging which you can check.

Hi,
In the regular USB stack, I did run it with some debugging enabled. The diff between the first run and the second run is below using Gabor's check carrier program

I havent tried with debugging enabled and just pulling the serial cable out yet. I will try that tomorrow when back at the office!

While the program is running and has /dev/cuaU0 open and NOT seeing carrier (when it should) its just a series of

Dec  5 15:56:50 current kernel: ucomstartread: start
Dec  5 15:56:50 current kernel: ucomreadcb: status = 0
Dec  5 15:56:50 current kernel: ucomreadcb: got 2 chars, tp = 0xc4d19000
Dec  5 15:56:50 current kernel: uftdi_read: sc=0xc4568d80, port=1 count=2
Dec  5 15:56:50 current kernel: ucomstartread: start

with 4 ioctls in a 1 second span
# grep 15:56:50 all.log | grep ioc
Dec  5 15:56:50 current kernel: ucomioctl: cmd = 0x4004746a
Dec  5 15:56:50 current kernel: ucomioctl: cmd = 0x4004746a
Dec  5 15:56:50 current kernel: ucomioctl: cmd = 0x4004746a
Dec  5 15:56:50 current kernel: ucomioctl: cmd = 0x4004746a

When I go and unplug the serial cable and then plug it back in

I see

Dec  5 15:56:52 current kernel: ucomreadcb: status = 0
Dec  5 15:56:52 current kernel: ucomreadcb: got 2 chars, tp = 0xc4d19000
Dec  5 15:56:52 current kernel: uftdi_read: sc=0xc4568d80, port=1 count=2
Dec  5 15:56:52 current kernel: ucomstartread: start
Dec  5 15:56:52 current kernel: ucomreadcb: status = 0
Dec  5 15:56:52 current kernel: ucomreadcb: got 2 chars, tp = 0xc4d19000
Dec  5 15:56:52 current kernel: uftdi_read: sc=0xc4568d80, port=1 count=2
Dec 5 15:56:52 current kernel: uftdi_read: status change msr=0x20(0x00) lsr=0x60(0x60)
Dec  5 15:56:52 current kernel: uftdi_status: msr=0x20 lsr=0x60
Dec  5 15:56:52 current kernel: ucom_status_change: DCD changed to 1
Dec  5 15:56:52 current kernel: ucomstartread: start
Dec  5 15:56:52 current kernel: ucomreadcb: status = 0
Dec  5 15:56:52 current kernel: ucomreadcb: got 2 chars, tp = 0xc4d19000
Dec  5 15:56:52 current kernel: uftdi_read: sc=0xc4568d80, port=1 count=2
Dec  5 15:56:52 current kernel: ucomstartread: start
Dec  5 15:56:52 current kernel: ucomreadcb: status = 0
Dec  5 15:56:52 current kernel: ucomreadcb: got 2 chars, tp = 0xc4d19000
Dec  5 15:56:52 current kernel: uftdi_read: sc=0xc4568d80, port=1 count=2
Dec  5 15:56:52 current kernel: ucomstartread: start
Dec  5 15:56:52 current kernel: ucomreadcb: status = 0
Dec  5 15:56:52 current kernel: ucomreadcb: got 2 chars, tp = 0xc4d19000
Dec  5 15:56:52 current kernel: uftdi_read: sc=0xc4568d80, port=1 count=2
Dec  5 15:56:52 current kernel: ucomstartread: start
Dec  5 15:56:52 current kernel: ucomreadcb: status = 0
Dec  5 15:56:52 current kernel: ucomreadcb: got 2 chars, tp = 0xc4d19000
Dec  5 15:56:52 current kernel: uftdi_read: sc=0xc4568d80, port=1 count=2
Dec 5 15:56:52 current kernel: uftdi_read: status change msr=0xa0(0x20) lsr=0x60(0x60)
Dec  5 15:56:52 current kernel: uftdi_status: msr=0xa0 lsr=0x60
Dec  5 15:56:52 current kernel: ucomstartread: start
Dec  5 15:56:52 current kernel: ucomreadcb: status = 0
Dec  5 15:56:52 current kernel: ucomreadcb: got 2 chars, tp = 0xc4d19000
Dec  5 15:56:52 current kernel: uftdi_read: sc=0xc4568d80, port=1 count=2
Dec  5 15:56:52 current kernel: ucomstartread: start
Dec  5 15:56:52 current kernel: ucomreadcb: status = 0
Dec  5 15:56:52 current kernel: ucomreadcb: got 2 chars, tp = 0xc4d19000
Dec  5 15:56:52 current kernel: uftdi_read: sc=0xc4568d80, port=1 count=2
Dec  5 15:56:52 current kernel: ucomstartread: start
Dec  5 15:56:52 current kernel: ucomreadcb: status = 0
Dec  5 15:56:52 current kernel: ucomreadcb: got 2 chars, tp = 0xc4d19000
Dec  5 15:56:52 current kernel: uftdi_read: sc=0xc4568d80, port=1 count=2
Dec  5 15:56:52 current kernel: ucomstartread: start
Dec  5 15:56:52 current kernel: ucomreadcb: status = 0
Dec  5 15:56:52 current kernel: ucomreadcb: got 2 chars, tp = 0xc4d19000
Dec  5 15:56:52 current kernel: uftdi_read: sc=0xc4568d80, port=1 count=2
Dec  5 15:56:52 current kernel: ucomstartread: start
Dec  5 15:56:52 current kernel: ucomreadcb: status = 0
Dec  5 15:56:52 current kernel: ucomreadcb: got 2 chars, tp = 0xc4d19000
Dec  5 15:56:52 current kernel: uftdi_read: sc=0xc4568d80, port=1 count=2
Dec  5 15:56:52 current kernel: ucomstartread: start
Dec  5 15:56:52 current kernel: ucomioctl: cmd = 0x4004746a
Dec  5 15:56:52 current kernel: ucomtty_outwakeup: sc = 0xc4568d80
Dec 5 15:56:52 current kernel: uftdi_write: sc=0xc4568d80, port=1 tp=0xc4d19000, count=64
Dec  5 15:56:52 current kernel: ucomtty_outwakeup: 3 chars
Dec  5 15:56:52 current kernel: ucomioctl: cmd = 0x2000745e
Dec  5 15:56:52 current kernel: ucomwritecb: status = 0
Dec  5 15:56:52 current kernel: ucomwritecb: cc = 3
Dec  5 15:56:52 current kernel: ucomtty_outwakeup: sc = 0xc4568d80
Dec 5 15:56:52 current kernel: uftdi_write: sc=0xc4568d80, port=1 tp=0xc4d19000, count=64
Dec  5 15:56:52 current kernel: ucomtty_outwakeup: cnt == 0
Dec  5 15:56:52 current kernel: ucomreadcb: status = 0
Dec  5 15:56:52 current kernel: ucomreadcb: got 2 chars, tp = 0xc4d19000
Dec  5 15:56:52 current kernel: uftdi_read: sc=0xc4568d80, port=1 count=2
Dec  5 15:56:52 current kernel: ucomstartread: start
Dec  5 15:56:52 current kernel: ucomreadcb: status = 0
Dec  5 15:56:52 current kernel: ucomreadcb: got 2 chars, tp = 0xc4d19000
Dec  5 15:56:52 current kernel: uftdi_read: sc=0xc4568d80, port=1 count=2
Dec  5 15:56:52 current kernel: ucomstartread: start
Dec  5 15:56:52 current kernel: ucomreadcb: status = 0
Dec  5 15:56:52 current kernel: ucomreadcb: got 2 chars, tp = 0xc4d19000
Dec  5 15:56:52 current kernel: uftdi_read: sc=0xc4568d80, port=1 count=2
Dec 5 15:56:52 current kernel: uftdi_read: status change msr=0xb0(0xa0) lsr=0x60(0x60)
Dec  5 15:56:52 current kernel: uftdi_status: msr=0xb0 lsr=0x60
Dec  5 15:56:52 current kernel: ucomstartread: start
Dec  5 15:56:52 current kernel: ucomreadcb: status = 0
Dec  5 15:56:52 current kernel: ucomreadcb: got 2 chars, tp = 0xc4d19000
Dec  5 15:56:52 current kernel: uftdi_read: sc=0xc4568d80, port=1 count=2
Dec  5 15:56:52 current kernel: ucomstartread: start
Dec  5 15:56:52 current kernel: ucomreadcb: status = 0
Dec  5 15:56:52 current kernel: ucomreadcb: got 3 chars, tp = 0xc4d19000
Dec  5 15:56:52 current kernel: uftdi_read: sc=0xc4568d80, port=1 count=3
Dec 5 15:56:52 current kernel: uftdi_read: sc=0xc4568d80, port=1 count=3 data[0]=0x84
Dec  5 15:56:52 current kernel: ucomreadcb: char = 0x84
Dec  5 15:56:52 current kernel: ucomstartread: start
Dec  5 15:56:52 current kernel: ucomreadcb: status = 0
Dec  5 15:56:52 current kernel: ucomreadcb: got 2 chars, tp = 0xc4d19000
Dec  5 15:56:52 current kernel: uftdi_read: sc=0xc4568d80, port=1 count=2
Dec 5 15:56:52 current kernel: uftdi_read: status change msr=0xa0(0xb0) lsr=0x60(0x60)
Dec  5 15:56:52 current kernel: uftdi_status: msr=0xa0 lsr=0x60
Dec  5 15:56:52 current kernel: ucomstartread: start


# grep "15:56:5[1-4]" all.log | grep ioc
Dec  5 15:56:51 current kernel: ucomioctl: cmd = 0x4004746a
Dec  5 15:56:51 current kernel: ucomioctl: cmd = 0x4004746a
Dec  5 15:56:51 current kernel: ucomioctl: cmd = 0x4004746a
Dec  5 15:56:51 current kernel: ucomioctl: cmd = 0x4004746a
Dec  5 15:56:52 current kernel: ucomioctl: cmd = 0x4004746a
Dec  5 15:56:52 current kernel: ucomioctl: cmd = 0x4004746a
Dec  5 15:56:52 current kernel: ucomioctl: cmd = 0x4004746a
Dec  5 15:56:52 current kernel: ucomioctl: cmd = 0x4004746a
Dec  5 15:56:52 current kernel: ucomioctl: cmd = 0x2000745e
Dec  5 15:56:53 current kernel: ucomioctl: cmd = 0x4004746a
Dec  5 15:56:53 current kernel: ucomioctl: cmd = 0x2000745e
Dec  5 15:56:53 current kernel: ucomioctl: cmd = 0x4004746a
Dec  5 15:56:53 current kernel: ucomioctl: cmd = 0x2000745e
Dec  5 15:56:53 current kernel: ucomioctl: cmd = 0x4004746a
Dec  5 15:56:53 current kernel: ucomioctl: cmd = 0x2000745e
Dec  5 15:56:53 current kernel: ucomioctl: cmd = 0x4004746a
Dec  5 15:56:53 current kernel: ucomioctl: cmd = 0x2000745e
Dec  5 15:56:54 current kernel: ucomioctl: cmd = 0x4004746a
Dec  5 15:56:54 current kernel: ucomioctl: cmd = 0x2000745e
Dec  5 15:56:54 current kernel: ucomioctl: cmd = 0x4004746a
Dec  5 15:56:54 current kernel: ucomioctl: cmd = 0x2000745e
Dec  5 15:56:54 current kernel: ucomioctl: cmd = 0x4004746a
Dec  5 15:56:54 current kernel: ucomioctl: cmd = 0x2000745e
Dec  5 15:56:54 current kernel: ucomioctl: cmd = 0x4004746a
Dec  5 15:56:54 current kernel: ucomioctl: cmd = 0x2000745e


Any ideas ?

        ---Mike


In terms of setting the MSR to zero, do you mean in

static int uftdi_open(void *vsc, int portno)

?




First run where the program sees carrier

: ucom0 on uhub3
: ucomtty_param: sc = 0xc47faa80
: ucomstopread: enter
: ucomstopread: bulkin pipe NULL
: uftdi_param: sc=0xc47faa80
: ucomstartread: start
: ucom_dtr: onoff = 1
: uftdi_set: sc=0xc47faa80, port=1 reg=1 onoff=1
: ucom_rts: onoff = 1
: uftdi_set: sc=0xc47faa80, port=1 reg=2 onoff=1
: ucom0: ucomtty_open: tp = 0xc4c7c800
: ucom_dtr: onoff = 1
: uftdi_set: sc=0xc47faa80, port=1 reg=1 onoff=1
: ucom_rts: onoff = 1
: uftdi_set: sc=0xc47faa80, port=1 reg=2 onoff=1
: uftdi_open: sc=0xc47faa80
: uftdi_param: sc=0xc47faa80
: ucomtty_open: open pipes in = 129 out = 2
: ucomstartread: start
: ucomioctl: cmd = 0x402c7413
: ucomioctl: cmd = 0x802c7414
: ucomtty_param: sc = 0xc47faa80
: ucomstopread: enter
: ucomreadcb: status = 6
: ucomstopread: leave
: uftdi_param: sc=0xc47faa80
: ucomstartread: start
: ucomioctl: cmd = 0x8004667e
: ucomioctl: cmd = 0x8004667d
: ucomioctl: cmd = 0x4004746a
: ucomioctl: cmd = 0x4004746a
: ucomioctl: cmd = 0x8004746d
: ucom_dtr: onoff = 1
: uftdi_set: sc=0xc47faa80, port=1 reg=1 onoff=1
: ucomreadcb: status = 0
: ucomreadcb: got 2 chars, tp = 0xc4c7c800
: uftdi_read: status change msr=0xb0(0x00) lsr=0x60(0x00)
: uftdi_status: msr=0xb0 lsr=0x60
: ucom_status_change: about to check sc->sc_poll   it is 1
: ucom_status_change: DCD changed to 1
: ucomstartread: start
: ucom_rts: onoff = 1
: uftdi_set: sc=0xc47faa80, port=1 reg=2 onoff=1
: ucomioctl: cmd = 0x4004746a
: ucom0: ucomtty_close
: ucom_cleanup: closing pipes
: ucom_shutdown
: ucom_dtr: onoff = 0
: uftdi_set: sc=0xc47faa80, port=1 reg=1 onoff=0
: ucomreadcb: status = 0
: ucomreadcb: got 2 chars, tp = 0xc4c7c800
: uftdi_read: status change msr=0x00(0xb0) lsr=0x60(0x60)
: uftdi_status: msr=0x00 lsr=0x60
: ucom_status_change: about to check sc->sc_poll   it is 1
: ucom_status_change: DCD changed to 0
: ucomstartread: start
: ucom_rts: onoff = 1
: uftdi_set: sc=0xc47faa80, port=1 reg=2 onoff=1
: ucomreadcb: status = 0
: ucomreadcb: got 2 chars, tp = 0xc4c7c800
: uftdi_read: status change msr=0xb0(0x00) lsr=0x60(0x60)
: uftdi_status: msr=0xb0 lsr=0x60
: ucom_status_change: about to check sc->sc_poll   it is 1
: ucom_status_change: DCD changed to 1
: ucomstartread: start
: ucomreadcb: status = 6

and second run, where it does not



: ucomtty_param: sc = 0xc47faa80
: ucomstopread: enter
: ucomstopread: leave
: uftdi_param: sc=0xc47faa80
: ucomstartread: start
: ucom_dtr: onoff = 1
: uftdi_set: sc=0xc47faa80, port=1 reg=1 onoff=1
: ucom_rts: onoff = 1
: uftdi_set: sc=0xc47faa80, port=1 reg=2 onoff=1
: ucom0: ucomtty_open: tp = 0xc4c7c800
: ucom_dtr: onoff = 1
: uftdi_set: sc=0xc47faa80, port=1 reg=1 onoff=1
: ucom_rts: onoff = 1
: uftdi_set: sc=0xc47faa80, port=1 reg=2 onoff=1
: uftdi_open: sc=0xc47faa80
: uftdi_param: sc=0xc47faa80
: ucomtty_open: open pipes in = 129 out = 2
: ucomstartread: start
: ucomioctl: cmd = 0x402c7413
: ucomioctl: cmd = 0x802c7414
: ucomtty_param: sc = 0xc47faa80
: ucomstopread: enter
: ucomreadcb: status = 6
: ucomstopread: leave
: uftdi_param: sc=0xc47faa80
: ucomstartread: start
: ucomioctl: cmd = 0x8004667e
: ucomioctl: cmd = 0x8004667d
: ucomioctl: cmd = 0x4004746a
: ucomioctl: cmd = 0x4004746a
: ucomioctl: cmd = 0x8004746d
: ucom_dtr: onoff = 1
: uftdi_set: sc=0xc47faa80, port=1 reg=1 onoff=1
: ucomreadcb: status = 0
: ucomreadcb: got 2 chars, tp = 0xc4c7c800
: ucomstartread: start
: ucom_rts: onoff = 1
: uftdi_set: sc=0xc47faa80, port=1 reg=2 onoff=1
: ucomioctl: cmd = 0x4004746a
: ucom0: ucomtty_close
: ucom_cleanup: closing pipes
: ucom_shutdown
: ucom_dtr: onoff = 0
: uftdi_set: sc=0xc47faa80, port=1 reg=1 onoff=0
: ucomreadcb: status = 0
: ucomreadcb: got 2 chars, tp = 0xc4c7c800
: uftdi_read: status change msr=0x00(0xb0) lsr=0x60(0x60)
: uftdi_status: msr=0x00 lsr=0x60
: ucomstartread: start
: ucom_rts: onoff = 1
: uftdi_set: sc=0xc47faa80, port=1 reg=2 onoff=1
: ucomreadcb: status = 0
: ucomreadcb: got 2 chars, tp = 0xc4c7c800
: uftdi_read: status change msr=0xb0(0x00) lsr=0x60(0x60)
: uftdi_status: msr=0xb0 lsr=0x60
: ucom_status_change: about to check sc->sc_poll   it is 1
: ucom_status_change: DCD changed to 1
: ucomstartread: start
: ucomreadcb: status = 6




% diff a b
2d1
< : ucom0 on uhub3
5c4
< : ucomstopread: bulkin pipe NULL
---
> : ucomstopread: leave
38,41d36
< : uftdi_read: status change msr=0xb0(0x00) lsr=0x60(0x00)
< : uftdi_status: msr=0xb0 lsr=0x60
< : ucom_status_change: about to check sc->sc_poll   it is 1
< : ucom_status_change: DCD changed to 1
55,56d49
< : ucom_status_change: about to check sc->sc_poll   it is 1
< : ucom_status_change: DCD changed to 0

_______________________________________________
freebsd-usb@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-usb
To unsubscribe, send any mail to "[EMAIL PROTECTED]"

Reply via email to