Re: [PATCH v1 0/2] serial: 8250_pci: Split Pericom driver

From: Jay Dolan
Date: Tue Nov 23 2021 - 00:19:15 EST

On 11/22/21 4:48 AM, Andy Shevchenko wrote:
On Mon, Nov 22, 2021 at 02:47:20PM +0200, Andy Shevchenko wrote:
On Thu, Nov 18, 2021 at 10:32:51PM -0800, Jay Dolan wrote:
On 11/17/21 6:57 AM, Andy Shevchenko wrote:
Split Pericom driver to a separate module.
While at it, re-enable high baud rates.

Jay, can you, please, test this on as many hardware as you have?


* Add in pericom_do_startup() because the UPF_MAGIC_MULTIPLIER doesn't

Can't find an evidence that this is the case. Can you recheck this (reading
flags back via sysfs or so)? So, for v2 I'll leave my approach.

Otherwise how the other drivers which are using that flag survive? If it's
indeed an issue, it should be fixed on generic level.

I modified pericom_do_startup to log when the UPF_MAGIC_MULTIPLIER flag was present. Then tried to set the port to 3000000 a few times. The port
stayed at 9600. It looks like pericom_do_startup() is getting called twice per port on boot, and the flag is gone with the second one.

[ 4.925577] [J4D] flag present
[ 4.926121] [J4D[ flag not present
[ 4.926843] [J4D] flag present
[ 4.927415] [J4D[ flag not present
[ 4.928106] [J4D] flag present
[ 4.928673] [J4D[ flag not present
[ 4.929419] [J4D] flag present
[ 4.930447] [J4D[ flag not present

[ 49.528504] [J4D[ flag not present
[ 51.675240] [J4D[ flag not present
[ 59.617954] [J4D[ flag not present

Then I modified it to log when it was adding the flag in. The port was set to 3000000. Also the flag only needed to be added in once. It sticks after the first time.

[ 4.647546] [J4D] flag present
[ 4.648119] [J4D] flag not present(adding)
[ 4.648778] [J4D] flag present
[ 4.649330] [J4D] flag not present(adding)
[ 4.650001] [J4D] flag present
[ 4.650537] [J4D] flag not present(adding)
[ 4.651192] [J4D] flag present
[ 4.651718] [J4D] flag not present(adding)

[ 96.025668] [J4D] flag present
[ 100.130626] [J4D] flag present
[ 116.435436] [J4D] flag present

I mostly just guessed at do_startup() being the place to set the magic multiplier flag after it didn't stick in quirk in 8250_pci.c.