diff options
Diffstat (limited to 'drivers/atm/solos-pci.c')
-rw-r--r-- | drivers/atm/solos-pci.c | 16 |
1 files changed, 12 insertions, 4 deletions
diff --git a/drivers/atm/solos-pci.c b/drivers/atm/solos-pci.c index f46138ab38b6..73fb1c4f4cd4 100644 --- a/drivers/atm/solos-pci.c +++ b/drivers/atm/solos-pci.c | |||
@@ -166,7 +166,7 @@ static irqreturn_t solos_irq(int irq, void *dev_id); | |||
166 | static struct atm_vcc* find_vcc(struct atm_dev *dev, short vpi, int vci); | 166 | static struct atm_vcc* find_vcc(struct atm_dev *dev, short vpi, int vci); |
167 | static int list_vccs(int vci); | 167 | static int list_vccs(int vci); |
168 | static void release_vccs(struct atm_dev *dev); | 168 | static void release_vccs(struct atm_dev *dev); |
169 | static int atm_init(struct solos_card *); | 169 | static int atm_init(struct solos_card *, struct device *); |
170 | static void atm_remove(struct solos_card *); | 170 | static void atm_remove(struct solos_card *); |
171 | static int send_command(struct solos_card *card, int dev, const char *buf, size_t size); | 171 | static int send_command(struct solos_card *card, int dev, const char *buf, size_t size); |
172 | static void solos_bh(unsigned long); | 172 | static void solos_bh(unsigned long); |
@@ -1161,6 +1161,14 @@ static int fpga_probe(struct pci_dev *dev, const struct pci_device_id *id) | |||
1161 | dev_info(&dev->dev, "Solos FPGA Version %d.%02d svn-%d\n", | 1161 | dev_info(&dev->dev, "Solos FPGA Version %d.%02d svn-%d\n", |
1162 | major_ver, minor_ver, fpga_ver); | 1162 | major_ver, minor_ver, fpga_ver); |
1163 | 1163 | ||
1164 | if (fpga_ver < 37 && (fpga_upgrade || firmware_upgrade || | ||
1165 | db_fpga_upgrade || db_firmware_upgrade)) { | ||
1166 | dev_warn(&dev->dev, | ||
1167 | "FPGA too old; cannot upgrade flash. Use JTAG.\n"); | ||
1168 | fpga_upgrade = firmware_upgrade = 0; | ||
1169 | db_fpga_upgrade = db_firmware_upgrade = 0; | ||
1170 | } | ||
1171 | |||
1164 | if (card->fpga_version >= DMA_SUPPORTED){ | 1172 | if (card->fpga_version >= DMA_SUPPORTED){ |
1165 | card->using_dma = 1; | 1173 | card->using_dma = 1; |
1166 | } else { | 1174 | } else { |
@@ -1202,7 +1210,7 @@ static int fpga_probe(struct pci_dev *dev, const struct pci_device_id *id) | |||
1202 | if (db_firmware_upgrade) | 1210 | if (db_firmware_upgrade) |
1203 | flash_upgrade(card, 3); | 1211 | flash_upgrade(card, 3); |
1204 | 1212 | ||
1205 | err = atm_init(card); | 1213 | err = atm_init(card, &dev->dev); |
1206 | if (err) | 1214 | if (err) |
1207 | goto out_free_irq; | 1215 | goto out_free_irq; |
1208 | 1216 | ||
@@ -1225,7 +1233,7 @@ static int fpga_probe(struct pci_dev *dev, const struct pci_device_id *id) | |||
1225 | return err; | 1233 | return err; |
1226 | } | 1234 | } |
1227 | 1235 | ||
1228 | static int atm_init(struct solos_card *card) | 1236 | static int atm_init(struct solos_card *card, struct device *parent) |
1229 | { | 1237 | { |
1230 | int i; | 1238 | int i; |
1231 | 1239 | ||
@@ -1236,7 +1244,7 @@ static int atm_init(struct solos_card *card) | |||
1236 | skb_queue_head_init(&card->tx_queue[i]); | 1244 | skb_queue_head_init(&card->tx_queue[i]); |
1237 | skb_queue_head_init(&card->cli_queue[i]); | 1245 | skb_queue_head_init(&card->cli_queue[i]); |
1238 | 1246 | ||
1239 | card->atmdev[i] = atm_dev_register("solos-pci", &fpga_ops, -1, NULL); | 1247 | card->atmdev[i] = atm_dev_register("solos-pci", parent, &fpga_ops, -1, NULL); |
1240 | if (!card->atmdev[i]) { | 1248 | if (!card->atmdev[i]) { |
1241 | dev_err(&card->dev->dev, "Could not register ATM device %d\n", i); | 1249 | dev_err(&card->dev->dev, "Could not register ATM device %d\n", i); |
1242 | atm_remove(card); | 1250 | atm_remove(card); |