Re: patch question - brainboxes UC260 card detection support

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Wed, 2018-02-07 at 22:18 +0100, Nikola Ciprich wrote:
> Hi,
> 
> based upon discussion with Andy few days ago, when testing patches
> to fix multiport serial card fixes + brainboxes 4100 detection support
> I created experimental patch to add another brainboxes card detection
> (this one has 4 serial ports, no parport, so I added it to 8250_pci.c)
> 
> here's lspci output:
> 
> 03:01.0 Multiport serial controller: Brain Boxes Device 0d21 (rev 01)
> 	Subsystem: Brain Boxes Device 0633
> 	Flags: medium devsel, IRQ 11
> 	Memory at febffc00 (32-bit, non-prefetchable) [size=128]
> 	I/O ports at ec00 [size=128]
> 	I/O ports at e880 [size=64]
> 	I/O ports at e800 [size=16]
> 	Memory at febff800 (32-bit, non-prefetchable) [size=64]
> 	Memory at febff400 (32-bit, non-prefetchable) [size=16]
> 	Capabilities: [40] Power Management version 2
> 00: 5a 13 21 0d 0b 00 10 02 01 00 02 07 00 00 00 00
> 10: 00 fc bf fe 01 ec 00 00 81 e8 00 00 01 e8 00 00
> 20: 00 f8 bf fe 00 f4 bf fe 00 00 00 00 5a 13 33 06
> 30: 00 00 00 00 40 00 00 00 00 00 00 00 0b 01 00 00
> 40: 01 00 22 00 00 00 00 00 00 00 00 00 00 00 00 00
> 50: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
> 60: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
> 70: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
> 80: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
> 90: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
> a0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
> b0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
> c0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
> d0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
> e0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
> f0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
> 
> manual card setup is possible as follows:
> 
> /bin/setserial /dev/ttyS2 port 0xE880 irq 11 spd_normal skip_test
> autoconfig
> /bin/setserial /dev/ttyS3 port 0xE888 irq 11 spd_normal skip_test
> autoconfig
> /bin/setserial /dev/ttyS4 port 0xE890 irq 11 spd_normal skip_test
> autoconfig
> /bin/setserial /dev/ttyS5 port 0xE898 irq 11 spd_normal skip_test
> autoconfig

According to the script you are using BAR 2 with I/O resource.

> 
> here's my patch:
> 
> diff --git a/drivers/tty/serial/8250/8250_pci.c
> b/drivers/tty/serial/8250/8250_pci.c
> index 54adf8d..b654bc0 100644
> --- a/drivers/tty/serial/8250/8250_pci.c
> +++ b/drivers/tty/serial/8250/8250_pci.c
> @@ -1734,7 +1734,9 @@ static int pci_eg20t_init(struct pci_dev *dev)
>  #define PCI_DEVICE_ID_ACCESIO_PCIE_COM_8SM	0x10E9
>  #define PCI_DEVICE_ID_ACCESIO_PCIE_ICM_4SM	0x11D8
>  
> -
> +#define PCI_VENDOR_ID_BRAINBOXES		0x135A

This is already defined as INTASHIELD vendor (which is part of
brainboxes nowadays).

> +#define PCI_DEVICE_ID_BRAINBOXES_UC260_1	0x0D21
> +#define PCI_DEVICE_ID_BRAINBOXES_UC260_2	0x0E34
>  
>  /* Unknown vendors/cards - this should not be in linux/pci_ids.h */
>  #define PCI_SUBDEVICE_ID_UNKNOWN_0x1584	0x1584
> @@ -4699,6 +4707,15 @@ static SIMPLE_DEV_PM_OPS(pciserial_pm_ops,
> pciserial_suspend_one,
>  		PCI_ANY_ID, PCI_ANY_ID, 0, 0,    /* 135a.0dc0 */
>  		pbn_b2_4_115200 },
>  	/*
> +	 * BrainBoxes UC260
> +	*/
> +	{	PCI_VENDOR_ID_BRAINBOXES, 

> PCI_DEVICE_ID_BRAINBOXES_UC260_1,

Use plain hex just here w/o definition.

> +		PCI_ANY_ID, PCI_ANY_ID, 0, 0,

Shouldn't be
   PCI_CLASS_COMMUNICATION_MULTISERIAL << 8, 0xffff00,

instead of 0, 0 above?

> +		pbn_b2_4_115200 },
> +	{	PCI_VENDOR_ID_BRAINBOXES,
> PCI_DEVICE_ID_BRAINBOXES_UC260_2,
> +		PCI_ANY_ID, PCI_ANY_ID, 0, 0,
> +		pbn_b2_4_115200 },

> (tested on latest head with Andy's multiport fixes applied)
> 
> the problem is, it doesn't work.

Elaborate "doesn't work".

>  One thing I'm not sure and I'd like to
> ask is how do I find out which FL_BASE value should I use?

Compare your script to your lspci output. Match with BAR number.

>  I tried FL_BASE0
> and FL_BASE2, but instead of trying all possible values, I though it'd
> be better
> to actually KNOW what should go there and why..

Yes, but since you have hardware  you are the best person to answer this
question (or vendor of hardware themselves otherwise).

> One more thing to note, the card only works for me (using setserial
> manual
> setup) when I disable APIC.. this is probably worth some investigation
> as well..

This I can't help with. 
Try fist to boot with 'apic=debug'.

> If somebody would give me some guidance, I'd be grateful

-- 
Andy Shevchenko <andriy.shevchenko@xxxxxxxxxxxxxxx>
Intel Finland Oy
--
To unsubscribe from this list: send the line "unsubscribe linux-serial" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html



[Index of Archives]     [Kernel Newbies]     [Security]     [Netfilter]     [Bugtraq]     [Linux PPP]     [Linux FS]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Samba]     [Video 4 Linux]     [Linmodem]     [Device Mapper]     [Linux Kernel for ARM]

  Powered by Linux