From 659408e431d8130fe2e7477c2a54ca98e4c250da Mon Sep 17 00:00:00 2001 From: Krzysztof Mazur Date: Sat, 25 Oct 2014 15:46:09 +0200 Subject: [PATCH 1/2] ds1104: fix dSPACE DS1104 BAR0 resource length The dSpace DS1104 card have 32 MiB on-card RAM and we want to map the whole on-card RAM. However, the DS1104 firmware sets only 4 KiB window. The DS1104 driver will expand it 32 MiB, so reserve PCI memory earlier. Signed-off-by: Krzysztof Mazur --- drivers/pci/quirks.c | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/drivers/pci/quirks.c b/drivers/pci/quirks.c index 80c2d01..f93fa62 100644 --- a/drivers/pci/quirks.c +++ b/drivers/pci/quirks.c @@ -305,6 +305,22 @@ DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_S3, PCI_DEVICE_ID_S3_868, quirk_s3_64M); DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_S3, PCI_DEVICE_ID_S3_968, quirk_s3_64M); /* + * The DS1104 cards have configurable BAR0 size. We will reconfigure + * it to 32 MiB. Fixup it early to reallocate resources. + */ +static void quirk_ds1104_32M(struct pci_dev *dev) +{ + struct resource *r = &dev->resource[0]; + + if ((r->start & 0x1ffffff) || r->end != r->start + 0x1ffffff) { + r->flags |= IORESOURCE_UNSET; + r->start = 0; + r->end = 0x1ffffff; + } +} +DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_MOTOROLA, 0x0003, quirk_ds1104_32M); + +/* * Some CS5536 BIOSes (for example, the Soekris NET5501 board w/ comBIOS * ver. 1.33 20070103) don't set the correct ISA PCI region header info. * BAR0 should be 8 bytes; instead, it may be set to something like 8k -- 2.1.2