Skip to contentSkip to conversation

usb: serial: ti_usb_3410_5052: add MOXA UPORT 11x0 support

PATCH Superseded Mathieu OTHACEHE 2 participants 4 messages May 2, 2016 – May 4, 2016 1 message not in the archive

v1 of 2 Superseded Latest is v2 →

lore
Share & tools
lore

A message that is not in the archive (sent off-list or not yet received): [email protected]

#1 lore raw

PATCH 1/1 usb: serial: ti_usb_3410_5052: add MOXA UPORT 11x0 support

Hi 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 = 96
desired_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

#2 lore raw
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 = 96
desired_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

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

#3 lore raw
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

#4 lore raw
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