]> git.ipfire.org Git - ipfire-2.x.git/blob - src/patches/linux-h12y-mmio-quirks.patch
Merge branch 'master' into openswan
[ipfire-2.x.git] / src / patches / linux-h12y-mmio-quirks.patch
1 --- linux/drivers/pci/quirks.c 2008-09-08 20:33:16.000000000 +0200
2 +++ linux/drivers/pci/quirks.c 2008-10-06 16:37:35.000000000 +0200
3 @@ -1381,6 +1381,82 @@
4 PCI_DEVICE_ID_TOSHIBA_TC86C001_IDE,
5 quirk_tc86c001_ide);
6
7 +/*
8 + * The Twinhad H12Y assign mmio (0xffbfe800-0xffbfecff)
9 + * resources that seems to be used by an unknown device.
10 + * This quirk reserve more than really used mmio space to
11 + * force change the mmio area of the cardreader and the network chip.
12 + * See http://bugzilla.kernel.org/show_bug.cgi?id=10231
13 + * and http://bugzilla.kernel.org/show_bug.cgi?id=9905
14 + * for more details
15 + */
16 +static void __init quirk_h12y_1_mmio(struct pci_dev *dev)
17 +{
18 +/*
19 + * Network Device: Realtek 8139C of Twinhead H12Y
20 + * PCI VENDOR: 0x10EC PCI ID:0x8139
21 + * SUB VENDOR: 0x14FF SUB ID:0xA003
22 + */
23 + struct resource *r = &dev->resource[1];
24 + if ((dev->subsystem_vendor) == 0x14FF &&
25 + (dev->subsystem_device) == 0xA003) {
26 + r->start = 0;
27 + r->end = 0x03ff;
28 + }
29 +}
30 +DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_REALTEK,
31 + PCI_DEVICE_ID_REALTEK_8139,
32 + quirk_h12y_1_mmio);
33 +
34 +static void __init quirk_h12y_2_mmio(struct pci_dev *dev)
35 +{
36 +/*
37 + * SD-Cardreader Device: O2 7120 of Twinhead H12Y
38 + * PCI VENDOR: 0x1217 PCI ID:0x7120
39 + * SUB VENDOR: 0x14FF SUB ID:0xA003
40 + */
41 + struct resource *r = &dev->resource[0];
42 + if ((dev->subsystem_vendor) == 0x14FF &&
43 + (dev->subsystem_device) == 0xA003) {
44 + r->start = 0;
45 + r->end = 0x03ff;
46 + }
47 +}
48 +DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_O2,0x7120,quirk_h12y_2_mmio);
49 +
50 +static void __init quirk_h12y_3_mmio(struct pci_dev *dev)
51 +{
52 +/*
53 + * Firewire Device: O2 00F7 of Twinhead H12Y
54 + * PCI VENDOR: 0x1217 PCI ID:0x00F7
55 + * SUB VENDOR: 0x14FF SUB ID:0xA003
56 + */
57 + struct resource *r = &dev->resource[1];
58 + if ((dev->subsystem_vendor) == 0x14FF &&
59 + (dev->subsystem_device) == 0xA003) {
60 + r->start = 0;
61 + r->end = 0x0fff;
62 + }
63 +}
64 +DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_O2,0x00F7,quirk_h12y_3_mmio);
65 +
66 +static void __init quirk_h12y_4_mmio(struct pci_dev *dev)
67 +{
68 +/*
69 + * MS-Cardreader Device: O2 7130 of Twinhead H12Y
70 + * PCI VENDOR: 0x1217 PCI ID:0x7130
71 + * SUB VENDOR: 0x14FF SUB ID:0xA003
72 + */
73 + struct resource *r = &dev->resource[0];
74 + if ((dev->subsystem_vendor) == 0x14FF &&
75 + (dev->subsystem_device) == 0xA003) {
76 + r->start = 0;
77 + r->end = 0x1fff;
78 + }
79 +}
80 +DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_O2,0x7130,quirk_h12y_4_mmio);
81 +
82 +
83 static void __devinit quirk_netmos(struct pci_dev *dev)
84 {
85 unsigned int num_parallel = (dev->subsystem_device & 0xf0) >> 4;