usb: serial: ti_usb_3410_5052: add MOXA UPORT 11x0 support
PATCH 1/1 usb: serial: ti_usb_3410_5052: add MOXA UPORT 11x0 support
In reply to a message not in the archiveHi Johan,
Thanks for your review.
Quoted 8 lines
Looks like this code could use a few vid/pid temporaries.
I'm not sure it makes sense to try to load a "ti_usb-v110a-p1150.fw" firmware before requesting the moxa firmware. Avoids a confusing:
usb 1-2.2: Direct firmware load for ti_usb-v110a-p1150.fw failed with error -2
message too.
I'm not sure to get your point here, shall I rename moxa firmwares in linux-firmware repo to be compliant with ti_usb-v%04x-p%04x.fw format ?
Quoted 4 lines
I did a quick test of the patch using a Moxa 1150-device. Works at 115200, but communication appeared broken at 9600. Looks like the baud rate calculations are similar but not identical to what the Moxa driver does. Is this something you have looked into?
Well, on my moxa 1110 communication is working at 9600, 115200 and other baud rates. However, I think baud rate calculation may be wrong for TI3410 chips.
According to table 5-13 in datasheet http://www.ti.com/lit/ds/symlink/tusb3410.pdf
the baud rate calculation formula, is :
baud_rate = 923077 / (desired_baud_rate)
So, we get :
desired_baud = 9600 -> baud_rate = 923077 / 9600 = 96desired_baud = 115200 -> baud_rate = 923077 / 115200 = 8
...
In ti_usb_3410_5052 driver, the formula used for 3410 is :
baud_rate = (923077 + desired_baud_rate/2) / desired_baud_rate
so,
desired_baud = 9600 -> baud_rate = (923077 + 9600/2) / 9600 = 97 (!= 96)desired_baud = 115200 -> baud_rate = (923077 + 115200/2) / 115200 = 9 (!= 8)
It seems the formula is wrong but some firmware deal with it anyway. Should I correct the formula or use a quirk for moxa devices ?
Thank you,
Mathieu
Quoted 9 lines · Mathieu OTHACEHE
Hi Johan,
Thanks for your review.
Quoted 4 lines
Looks like this code could use a few vid/pid temporaries.
I'm not sure it makes sense to try to load a "ti_usb-v110a-p1150.fw" firmware before requesting the moxa firmware. Avoids a confusing:
Quoted 6 lines
Quoted 3 lines
usb 1-2.2: Direct firmware load for ti_usb-v110a-p1150.fw failed with error -2
message too.
I'm not sure to get your point here, shall I rename moxa firmwares in linux-firmware repo to be compliant with ti_usb-v%04x-p%04x.fw format ?
No, I was trying to say that the we should not attempt to load a firmware on the "ti_usb-v%04x-p%04x.fw" format before loading the moxa firmware.
I guess the moxa firmware names have been chosen by Moxa and it might be confusing if we renamed them, but that could be an option too.
Quoted 7 lines
Quoted 4 lines
I did a quick test of the patch using a Moxa 1150-device. Works at 115200, but communication appeared broken at 9600. Looks like the baud rate calculations are similar but not identical to what the Moxa driver does. Is this something you have looked into?
Well, on my moxa 1110 communication is working at 9600, 115200 and other baud rates.
I must have messed something up in my test, as now 9600 seems to work.
Quoted 17 lines
However, I think baud rate calculation may be wrong for TI3410 chips.
According to table 5-13 in datasheet http://www.ti.com/lit/ds/symlink/tusb3410.pdf
the baud rate calculation formula, is :
baud_rate= 923077 / (desired_baud_rate)So, we get :
desired_baud= 9600 ->baud_rate= 923077 / 9600 = 96desired_baud= 115200 ->baud_rate= 923077 / 115200 = 8
...In
ti_usb_3410_5052driver, the formula used for 3410 is :
baud_rate= (923077 + desired_baud_rate/2) /desired_baud_rate
Quoted 7 lines
so,
desired_baud= 9600 ->baud_rate= (923077 + 9600/2) / 9600 = 97 (!= 96)desired_baud= 115200 ->baud_rate= (923077 + 115200/2) / 115200 = 9 (!= 8)It seems the formula is wrong but some firmware deal with it anyway. Should I correct the formula or use a quirk for moxa devices ?
No, that's just integer-division with rounding. Remember that the divisions above are integer divisions so the results are actually 96 and 8 as expected.
Thanks,
Johan
Quoted 4 lines
No, I was trying to say that the we should not attempt to load a firmware on the "ti_usb-v%04x-p%04x.fw" format before loading the moxa firmware.
For MTS devices (mts_*.fw) and for devices using generic firmware (ti_3410.fw and ti_5052.fw), ti_usb-v%04x-p%04x.fw loading is already failing.
So, I can patch the driver to request firmwares in this order :
1. VID dependant (MTS and MOXA now)
2. ti_usb-v%04x-p%04x.fw format
3. Generic firmware
But, for generic firmware users, ti_usb-v%04x-p%04x.fw loading will still always fail ...
Or we can get rid of ti_usb-v%04x-p%04x.fw loading because no one has defined a firmware with this format in linux-firmware repository ?
Quoted 3 lines
No, that's just integer-division with rounding. Remember that the divisions above are integer divisions so the results are actually 96 and 8 as expected.
You're right, sorry !
Thank you,
Mathieu
Quoted 13 lines · Mathieu OTHACEHE
Quoted 3 lines
No, I was trying to say that the we should not attempt to load a firmware on the "ti_usb-v%04x-p%04x.fw" format before loading the moxa firmware.
For MTS devices (mts_*.fw) and for devices using generic firmware (ti_3410.fw and ti_5052.fw), ti_usb-v%04x-p%04x.fw loading is already failing.
So, I can patch the driver to request firmwares in this order :
1. VID dependant (MTS and MOXA now)
2. ti_usb-v%04x-p%04x.fw format
3. Generic firmware
Quoted 5 lines
But, for generic firmware users, ti_usb-v%04x-p%04x.fw loading will still always fail ...
Or we can get rid of ti_usb-v%04x-p%04x.fw loading because no one has defined a firmware with this format in linux-firmware repository ?
Let's try to be conservative and not necessarily change the current behaviour right away. Just make sure the Moxa firmware is loaded directly, without fallback, and we can see about possibly cleaning up the legacy behaviour later (in incremental patches that can easily be reverted if anyone complains).
Thanks,
Johan