diff options
Diffstat (limited to 'drivers/net/skge.c')
| -rw-r--r-- | drivers/net/skge.c | 18 |
1 files changed, 17 insertions, 1 deletions
diff --git a/drivers/net/skge.c b/drivers/net/skge.c index 40e5c46e7571..465ae7e84507 100644 --- a/drivers/net/skge.c +++ b/drivers/net/skge.c | |||
| @@ -43,6 +43,7 @@ | |||
| 43 | #include <linux/seq_file.h> | 43 | #include <linux/seq_file.h> |
| 44 | #include <linux/mii.h> | 44 | #include <linux/mii.h> |
| 45 | #include <linux/slab.h> | 45 | #include <linux/slab.h> |
| 46 | #include <linux/dmi.h> | ||
| 46 | #include <asm/irq.h> | 47 | #include <asm/irq.h> |
| 47 | 48 | ||
| 48 | #include "skge.h" | 49 | #include "skge.h" |
| @@ -3868,6 +3869,8 @@ static void __devinit skge_show_addr(struct net_device *dev) | |||
| 3868 | netif_info(skge, probe, skge->netdev, "addr %pM\n", dev->dev_addr); | 3869 | netif_info(skge, probe, skge->netdev, "addr %pM\n", dev->dev_addr); |
| 3869 | } | 3870 | } |
| 3870 | 3871 | ||
| 3872 | static int only_32bit_dma; | ||
| 3873 | |||
| 3871 | static int __devinit skge_probe(struct pci_dev *pdev, | 3874 | static int __devinit skge_probe(struct pci_dev *pdev, |
| 3872 | const struct pci_device_id *ent) | 3875 | const struct pci_device_id *ent) |
| 3873 | { | 3876 | { |
| @@ -3889,7 +3892,7 @@ static int __devinit skge_probe(struct pci_dev *pdev, | |||
| 3889 | 3892 | ||
| 3890 | pci_set_master(pdev); | 3893 | pci_set_master(pdev); |
| 3891 | 3894 | ||
| 3892 | if (!pci_set_dma_mask(pdev, DMA_BIT_MASK(64))) { | 3895 | if (!only_32bit_dma && !pci_set_dma_mask(pdev, DMA_BIT_MASK(64))) { |
| 3893 | using_dac = 1; | 3896 | using_dac = 1; |
| 3894 | err = pci_set_consistent_dma_mask(pdev, DMA_BIT_MASK(64)); | 3897 | err = pci_set_consistent_dma_mask(pdev, DMA_BIT_MASK(64)); |
| 3895 | } else if (!(err = pci_set_dma_mask(pdev, DMA_BIT_MASK(32)))) { | 3898 | } else if (!(err = pci_set_dma_mask(pdev, DMA_BIT_MASK(32)))) { |
| @@ -4147,8 +4150,21 @@ static struct pci_driver skge_driver = { | |||
| 4147 | .shutdown = skge_shutdown, | 4150 | .shutdown = skge_shutdown, |
| 4148 | }; | 4151 | }; |
| 4149 | 4152 | ||
| 4153 | static struct dmi_system_id skge_32bit_dma_boards[] = { | ||
| 4154 | { | ||
| 4155 | .ident = "Gigabyte nForce boards", | ||
| 4156 | .matches = { | ||
| 4157 | DMI_MATCH(DMI_BOARD_VENDOR, "Gigabyte Technology Co"), | ||
| 4158 | DMI_MATCH(DMI_BOARD_NAME, "nForce"), | ||
| 4159 | }, | ||
| 4160 | }, | ||
| 4161 | {} | ||
| 4162 | }; | ||
| 4163 | |||
| 4150 | static int __init skge_init_module(void) | 4164 | static int __init skge_init_module(void) |
| 4151 | { | 4165 | { |
| 4166 | if (dmi_check_system(skge_32bit_dma_boards)) | ||
| 4167 | only_32bit_dma = 1; | ||
| 4152 | skge_debug_init(); | 4168 | skge_debug_init(); |
| 4153 | return pci_register_driver(&skge_driver); | 4169 | return pci_register_driver(&skge_driver); |
| 4154 | } | 4170 | } |
