diff options
author | Alex Dubov <oakad@yahoo.com> | 2008-02-09 13:20:54 -0500 |
---|---|---|
committer | Linus Torvalds <torvalds@woody.linux-foundation.org> | 2008-02-09 14:08:34 -0500 |
commit | baf8532a147d5b76681ce040e2c8f25a3f0e718d (patch) | |
tree | 69c228046709295c1152f2063321327789c3b9f4 /drivers/misc | |
parent | 941edd030b9725f9f85bd62dfdb68cde3a50fb66 (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.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 | { |