Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

tty: 8250: Add Brainboxes Oxford Semiconductor-based quirks

Some of the later revisions of the Brainboxes PX cards are based
on the Oxford Semiconductor chipset. Due to the chip's unique setup
these cards need to be initialised.
Previously these were tested against a reference card with the same broken
baudrate on another PC, cancelling out the effect. With this patch they
work and can transfer/receive find against an FTDI-based device.

Add all of the cards which require this setup to the quirks table.
Thanks to Maciej W. Rozycki for clarification on this chip.

Fixes: ef5a03a26c87 ("tty: 8250: Add support for Brainboxes PX cards.")
Cc: stable@vger.kernel.org
Signed-off-by: Cameron Williams <cang1@live.co.uk>
Link: https://lore.kernel.org/r/DU0PR02MB7899D222A4AB2A4E8C57108FC4DBA@DU0PR02MB7899.eurprd02.prod.outlook.com
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

authored by

Cameron Williams and committed by
Greg Kroah-Hartman
e4876dac 62d2ec2d

+147
+147
drivers/tty/serial/8250/8250_pci.c
··· 2478 2478 .init = pci_oxsemi_tornado_init, 2479 2479 .setup = pci_oxsemi_tornado_setup, 2480 2480 }, 2481 + /* 2482 + * Brainboxes devices - all Oxsemi based 2483 + */ 2484 + { 2485 + .vendor = PCI_VENDOR_ID_INTASHIELD, 2486 + .device = 0x4027, 2487 + .subvendor = PCI_ANY_ID, 2488 + .subdevice = PCI_ANY_ID, 2489 + .init = pci_oxsemi_tornado_init, 2490 + .setup = pci_oxsemi_tornado_setup, 2491 + }, 2492 + { 2493 + .vendor = PCI_VENDOR_ID_INTASHIELD, 2494 + .device = 0x4028, 2495 + .subvendor = PCI_ANY_ID, 2496 + .subdevice = PCI_ANY_ID, 2497 + .init = pci_oxsemi_tornado_init, 2498 + .setup = pci_oxsemi_tornado_setup, 2499 + }, 2500 + { 2501 + .vendor = PCI_VENDOR_ID_INTASHIELD, 2502 + .device = 0x4029, 2503 + .subvendor = PCI_ANY_ID, 2504 + .subdevice = PCI_ANY_ID, 2505 + .init = pci_oxsemi_tornado_init, 2506 + .setup = pci_oxsemi_tornado_setup, 2507 + }, 2508 + { 2509 + .vendor = PCI_VENDOR_ID_INTASHIELD, 2510 + .device = 0x4019, 2511 + .subvendor = PCI_ANY_ID, 2512 + .subdevice = PCI_ANY_ID, 2513 + .init = pci_oxsemi_tornado_init, 2514 + .setup = pci_oxsemi_tornado_setup, 2515 + }, 2516 + { 2517 + .vendor = PCI_VENDOR_ID_INTASHIELD, 2518 + .device = 0x4016, 2519 + .subvendor = PCI_ANY_ID, 2520 + .subdevice = PCI_ANY_ID, 2521 + .init = pci_oxsemi_tornado_init, 2522 + .setup = pci_oxsemi_tornado_setup, 2523 + }, 2524 + { 2525 + .vendor = PCI_VENDOR_ID_INTASHIELD, 2526 + .device = 0x4015, 2527 + .subvendor = PCI_ANY_ID, 2528 + .subdevice = PCI_ANY_ID, 2529 + .init = pci_oxsemi_tornado_init, 2530 + .setup = pci_oxsemi_tornado_setup, 2531 + }, 2532 + { 2533 + .vendor = PCI_VENDOR_ID_INTASHIELD, 2534 + .device = 0x400A, 2535 + .subvendor = PCI_ANY_ID, 2536 + .subdevice = PCI_ANY_ID, 2537 + .init = pci_oxsemi_tornado_init, 2538 + .setup = pci_oxsemi_tornado_setup, 2539 + }, 2540 + { 2541 + .vendor = PCI_VENDOR_ID_INTASHIELD, 2542 + .device = 0x400E, 2543 + .subvendor = PCI_ANY_ID, 2544 + .subdevice = PCI_ANY_ID, 2545 + .init = pci_oxsemi_tornado_init, 2546 + .setup = pci_oxsemi_tornado_setup, 2547 + }, 2548 + { 2549 + .vendor = PCI_VENDOR_ID_INTASHIELD, 2550 + .device = 0x400C, 2551 + .subvendor = PCI_ANY_ID, 2552 + .subdevice = PCI_ANY_ID, 2553 + .init = pci_oxsemi_tornado_init, 2554 + .setup = pci_oxsemi_tornado_setup, 2555 + }, 2556 + { 2557 + .vendor = PCI_VENDOR_ID_INTASHIELD, 2558 + .device = 0x400B, 2559 + .subvendor = PCI_ANY_ID, 2560 + .subdevice = PCI_ANY_ID, 2561 + .init = pci_oxsemi_tornado_init, 2562 + .setup = pci_oxsemi_tornado_setup, 2563 + }, 2564 + { 2565 + .vendor = PCI_VENDOR_ID_INTASHIELD, 2566 + .device = 0x400F, 2567 + .subvendor = PCI_ANY_ID, 2568 + .subdevice = PCI_ANY_ID, 2569 + .init = pci_oxsemi_tornado_init, 2570 + .setup = pci_oxsemi_tornado_setup, 2571 + }, 2572 + { 2573 + .vendor = PCI_VENDOR_ID_INTASHIELD, 2574 + .device = 0x4010, 2575 + .subvendor = PCI_ANY_ID, 2576 + .subdevice = PCI_ANY_ID, 2577 + .init = pci_oxsemi_tornado_init, 2578 + .setup = pci_oxsemi_tornado_setup, 2579 + }, 2580 + { 2581 + .vendor = PCI_VENDOR_ID_INTASHIELD, 2582 + .device = 0x4011, 2583 + .subvendor = PCI_ANY_ID, 2584 + .subdevice = PCI_ANY_ID, 2585 + .init = pci_oxsemi_tornado_init, 2586 + .setup = pci_oxsemi_tornado_setup, 2587 + }, 2588 + { 2589 + .vendor = PCI_VENDOR_ID_INTASHIELD, 2590 + .device = 0x401D, 2591 + .subvendor = PCI_ANY_ID, 2592 + .subdevice = PCI_ANY_ID, 2593 + .init = pci_oxsemi_tornado_init, 2594 + .setup = pci_oxsemi_tornado_setup, 2595 + }, 2596 + { 2597 + .vendor = PCI_VENDOR_ID_INTASHIELD, 2598 + .device = 0x401E, 2599 + .subvendor = PCI_ANY_ID, 2600 + .subdevice = PCI_ANY_ID, 2601 + .init = pci_oxsemi_tornado_init, 2602 + .setup = pci_oxsemi_tornado_setup, 2603 + }, 2604 + { 2605 + .vendor = PCI_VENDOR_ID_INTASHIELD, 2606 + .device = 0x4013, 2607 + .subvendor = PCI_ANY_ID, 2608 + .subdevice = PCI_ANY_ID, 2609 + .init = pci_oxsemi_tornado_init, 2610 + .setup = pci_oxsemi_tornado_setup, 2611 + }, 2612 + { 2613 + .vendor = PCI_VENDOR_ID_INTASHIELD, 2614 + .device = 0x4017, 2615 + .subvendor = PCI_ANY_ID, 2616 + .subdevice = PCI_ANY_ID, 2617 + .init = pci_oxsemi_tornado_init, 2618 + .setup = pci_oxsemi_tornado_setup, 2619 + }, 2620 + { 2621 + .vendor = PCI_VENDOR_ID_INTASHIELD, 2622 + .device = 0x4018, 2623 + .subvendor = PCI_ANY_ID, 2624 + .subdevice = PCI_ANY_ID, 2625 + .init = pci_oxsemi_tornado_init, 2626 + .setup = pci_oxsemi_tornado_setup, 2627 + }, 2481 2628 { 2482 2629 .vendor = PCI_VENDOR_ID_INTEL, 2483 2630 .device = 0x8811,