diff options
Diffstat (limited to 'drivers/misc')
-rw-r--r-- | drivers/misc/tifm_7xx1.c | 17 | ||||
-rw-r--r-- | drivers/misc/tifm_core.c | 7 |
2 files changed, 24 insertions, 0 deletions
diff --git a/drivers/misc/tifm_7xx1.c b/drivers/misc/tifm_7xx1.c index 54380da343a5..63a089b29545 100644 --- a/drivers/misc/tifm_7xx1.c +++ b/drivers/misc/tifm_7xx1.c | |||
@@ -302,6 +302,21 @@ static int tifm_7xx1_resume(struct pci_dev *dev) | |||
302 | 302 | ||
303 | #endif /* CONFIG_PM */ | 303 | #endif /* CONFIG_PM */ |
304 | 304 | ||
305 | static int tifm_7xx1_dummy_has_ms_pif(struct tifm_adapter *fm, | ||
306 | struct tifm_dev *sock) | ||
307 | { | ||
308 | return 0; | ||
309 | } | ||
310 | |||
311 | static int tifm_7xx1_has_ms_pif(struct tifm_adapter *fm, struct tifm_dev *sock) | ||
312 | { | ||
313 | if (((fm->num_sockets == 4) && (sock->socket_id == 2)) | ||
314 | || ((fm->num_sockets == 2) && (sock->socket_id == 0))) | ||
315 | return 1; | ||
316 | |||
317 | return 0; | ||
318 | } | ||
319 | |||
305 | static int tifm_7xx1_probe(struct pci_dev *dev, | 320 | static int tifm_7xx1_probe(struct pci_dev *dev, |
306 | const struct pci_device_id *dev_id) | 321 | const struct pci_device_id *dev_id) |
307 | { | 322 | { |
@@ -336,6 +351,7 @@ static int tifm_7xx1_probe(struct pci_dev *dev, | |||
336 | 351 | ||
337 | INIT_WORK(&fm->media_switcher, tifm_7xx1_switch_media); | 352 | INIT_WORK(&fm->media_switcher, tifm_7xx1_switch_media); |
338 | fm->eject = tifm_7xx1_eject; | 353 | fm->eject = tifm_7xx1_eject; |
354 | fm->has_ms_pif = tifm_7xx1_has_ms_pif; | ||
339 | pci_set_drvdata(dev, fm); | 355 | pci_set_drvdata(dev, fm); |
340 | 356 | ||
341 | fm->addr = ioremap(pci_resource_start(dev, 0), | 357 | fm->addr = ioremap(pci_resource_start(dev, 0), |
@@ -377,6 +393,7 @@ static void tifm_7xx1_remove(struct pci_dev *dev) | |||
377 | int cnt; | 393 | int cnt; |
378 | 394 | ||
379 | fm->eject = tifm_7xx1_dummy_eject; | 395 | fm->eject = tifm_7xx1_dummy_eject; |
396 | fm->has_ms_pif = tifm_7xx1_dummy_has_ms_pif; | ||
380 | writel(TIFM_IRQ_SETALL, fm->addr + FM_CLEAR_INTERRUPT_ENABLE); | 397 | writel(TIFM_IRQ_SETALL, fm->addr + FM_CLEAR_INTERRUPT_ENABLE); |
381 | mmiowb(); | 398 | mmiowb(); |
382 | free_irq(dev->irq, fm); | 399 | free_irq(dev->irq, fm); |
diff --git a/drivers/misc/tifm_core.c b/drivers/misc/tifm_core.c index 97544052e768..82dc72a1484f 100644 --- a/drivers/misc/tifm_core.c +++ b/drivers/misc/tifm_core.c | |||
@@ -284,6 +284,13 @@ void tifm_eject(struct tifm_dev *sock) | |||
284 | } | 284 | } |
285 | EXPORT_SYMBOL(tifm_eject); | 285 | EXPORT_SYMBOL(tifm_eject); |
286 | 286 | ||
287 | int tifm_has_ms_pif(struct tifm_dev *sock) | ||
288 | { | ||
289 | struct tifm_adapter *fm = dev_get_drvdata(sock->dev.parent); | ||
290 | return fm->has_ms_pif(fm, sock); | ||
291 | } | ||
292 | EXPORT_SYMBOL(tifm_has_ms_pif); | ||
293 | |||
287 | int tifm_map_sg(struct tifm_dev *sock, struct scatterlist *sg, int nents, | 294 | int tifm_map_sg(struct tifm_dev *sock, struct scatterlist *sg, int nents, |
288 | int direction) | 295 | int direction) |
289 | { | 296 | { |