aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/misc
diff options
context:
space:
mode:
authorAlex Dubov <oakad@yahoo.com>2008-02-09 13:20:54 -0500
committerLinus Torvalds <torvalds@woody.linux-foundation.org>2008-02-09 14:08:34 -0500
commitbaf8532a147d5b76681ce040e2c8f25a3f0e718d (patch)
tree69c228046709295c1152f2063321327789c3b9f4 /drivers/misc
parent941edd030b9725f9f85bd62dfdb68cde3a50fb66 (diff)
memstick: initial commit for Sony MemoryStick support
Sony MemoryStick cards are used in many products manufactured by Sony. They are available both as storage and as IO expansion cards. Currently, only MemoryStick Pro storage cards are supported via TI FlashMedia MemoryStick interface. [mboton@gmail.com: biuld fix] [akpm@linux-foundation.org: build fix] Signed-off-by: Alex Dubov <oakad@yahoo.com> Signed-off-by: Miguel Boton <mboton@gmail.co> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Diffstat (limited to 'drivers/misc')
-rw-r--r--drivers/misc/tifm_7xx1.c17
-rw-r--r--drivers/misc/tifm_core.c7
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
305static int tifm_7xx1_dummy_has_ms_pif(struct tifm_adapter *fm,
306 struct tifm_dev *sock)
307{
308 return 0;
309}
310
311static 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
305static int tifm_7xx1_probe(struct pci_dev *dev, 320static 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}
285EXPORT_SYMBOL(tifm_eject); 285EXPORT_SYMBOL(tifm_eject);
286 286
287int 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}
292EXPORT_SYMBOL(tifm_has_ms_pif);
293
287int tifm_map_sg(struct tifm_dev *sock, struct scatterlist *sg, int nents, 294int tifm_map_sg(struct tifm_dev *sock, struct scatterlist *sg, int nents,
288 int direction) 295 int direction)
289{ 296{