linux/drivers/ata
Mark Lord 39f25e70ca libata-pmp: clear hob for pmp register accesses
>> Mark Lord wrote:
>>> Tejun, I've added PMP to sata_mv, and am now trying to get it
>>> to work with a Marvell PM attached.
>>>
>>> And the behaviour I see is very bizarre.
>>>
>>> After hard+soft resets, the PM signature is found,
>>> and libata interrogates the PM registers.
>>>
>>> It successfully reads register 0, and then register 1.
>>> But all subsequent registers read out (incorrectly) as zeros.
...

This behavior has been confirmed by Marvell with a SATA analyzer.
The Marvell port-multiplier apparently likes to see clean HOB
information when accessing PMP registers.

Since sata_mv uses PIO shadow register access, this doesn't happen
automatically, as it might in a more purely FIS-based driver (eg. ahci).

One way to fix this is to flag these commands with ATA_TFLAG_LBA48,
forcing libata to write out the HOB fields with known (zero) values.

Signed-off-by: Saeed Bishara <saeed@marvell.com>
Acked-by: Mark Lord <mlord@pobox.com>
Signed-off-by: Jeff Garzik <jeff@garzik.org>
2008-02-24 00:28:23 -05:00
..
ahci.c PM: Introduce PM_EVENT_HIBERNATE callback state 2008-02-23 10:40:04 -08:00
ata_generic.c ata_generic: Cenatek support 2008-01-23 05:24:17 -05:00
ata_piix.c PM: Introduce PM_EVENT_HIBERNATE callback state 2008-02-23 10:40:04 -08:00
Kconfig sata_mv: Remove PCI dependency 2008-02-01 12:26:37 -05:00
libata-acpi.c libata: reimplement ata_acpi_cbl_80wire() using ata_acpi_gtm_xfermask() 2008-01-23 05:24:12 -05:00
libata-core.c libata: automatically use DMADIR if drive/bridge requires it 2008-02-24 00:27:33 -05:00
libata-eh.c libata: implement libata.force module parameter 2008-02-20 12:12:28 -05:00
libata-pmp.c libata-pmp: clear hob for pmp register accesses 2008-02-24 00:28:23 -05:00
libata-scsi.c libata: automatically use DMADIR if drive/bridge requires it 2008-02-24 00:27:33 -05:00
libata-sff.c libata: factor out ata_pci_activate_sff_host() from ata_pci_one() 2008-01-23 05:24:16 -05:00
libata.h libata: implement libata.force module parameter 2008-02-20 12:12:28 -05:00
Makefile Merge branch 'linux-2.6' 2008-01-31 11:25:51 +11:00
pata_acpi.c ata: fix sparse warning in pata_acpi.c 2008-02-15 13:51:33 -05:00
pata_ali.c libata: checkpatch fixes 2008-01-23 05:24:10 -05:00
pata_amd.c ata: sparse fixes for pata_amd.c 2008-02-15 13:51:24 -05:00
pata_artop.c
pata_at32.c drivers/ata/: Spelling fixes 2008-02-03 17:08:11 +02:00
pata_atiixp.c pata_atiixp: Use 255 sector limit 2008-02-24 00:27:23 -05:00
pata_bf54x.c Blackfin pata-bf54x driver: fix compiling bug - no ata_port struct in struct ata_device any more 2008-02-01 12:26:43 -05:00
pata_cmd64x.c
pata_cmd640.c
pata_cs5520.c PCI: Remove users of pci_enable_device_bars() 2008-02-01 15:04:27 -08:00
pata_cs5530.c
pata_cs5535.c
pata_cs5536.c ata: fix sparse warning in pata_cs5536.c 2008-02-15 13:51:27 -05:00
pata_cypress.c
pata_efar.c drivers/ata/: Spelling fixes 2008-02-03 17:08:11 +02:00
pata_hpt3x2n.c
pata_hpt3x3.c
pata_hpt37x.c pata_hpt37x: checkpatch fixes 2008-01-23 05:24:13 -05:00
pata_hpt366.c
pata_icside.c libata: eliminate the home grown dma padding in favour of 2008-02-19 11:36:56 +01:00
pata_isapnp.c
pata_it821x.c libata/pata_it821x: Improve handling of poorly compatible emulations 2008-01-23 05:24:15 -05:00
pata_it8213.c drivers/ata/: Spelling fixes 2008-02-03 17:08:11 +02:00
pata_ixp4xx_cf.c libata: update ->data_xfer hook for ATAPI 2008-01-23 05:24:14 -05:00
pata_jmicron.c ata: fix sparse warning in pata_jmicron.c 2008-02-15 13:51:29 -05:00
pata_legacy.c ata: fix sparse warnings in pata_legacy.c 2008-02-20 12:08:15 -05:00
pata_marvell.c ata: fix sparse warning in pata_marvell.c 2008-02-15 13:51:30 -05:00
pata_mpc52xx.c Merge branch 'linux-2.6' 2008-01-31 11:25:51 +11:00
pata_mpiix.c
pata_netcell.c
pata_ninja32.c pata_ninja32: setup changes 2008-02-11 14:30:07 -05:00
pata_ns87410.c
pata_ns87415.c
pata_of_platform.c Rename: linux/pata_platform.h to linux/ata_platform.h 2008-02-06 06:54:17 -05:00
pata_oldpiix.c
pata_opti.c
pata_optidma.c
pata_pcmcia.c pata_pcmcia: convert to new data_xfer prototype 2008-01-23 05:24:15 -05:00
pata_pdc202xx_old.c libata: rename ATA_PROT_ATAPI_* to ATAPI_PROT_* 2008-01-23 05:24:14 -05:00
pata_pdc2027x.c libata annotations and fixes 2008-01-23 05:24:15 -05:00
pata_platform.c Rename: linux/pata_platform.h to linux/ata_platform.h 2008-02-06 06:54:17 -05:00
pata_qdi.c libata: update ->data_xfer hook for ATAPI 2008-01-23 05:24:14 -05:00
pata_radisys.c
pata_rz1000.c
pata_sc1200.c
pata_scc.c pata_scc.c: add thaw ops 2008-02-15 13:51:22 -05:00
pata_serverworks.c pata_serverworks: Fix cable types and cosmetics 2008-01-23 05:24:17 -05:00
pata_sil680.c
pata_sis.c drivers/ata/: Spelling fixes 2008-02-03 17:08:11 +02:00
pata_sl82c105.c pata_sl82c105: dual channel support 2008-02-01 12:26:40 -05:00
pata_triflex.c
pata_via.c pata_via: fix SATA cable detection on cx700 2008-02-11 14:29:42 -05:00
pata_winbond.c pata_winbond: error return 2008-01-23 05:24:17 -05:00
pdc_adma.c libata: convert to chained sg 2008-01-23 05:24:14 -05:00
sata_fsl.c libata: eliminate the home grown dma padding in favour of 2008-02-19 11:36:56 +01:00
sata_inic162x.c iommu sg merging: sata_inic162x: use pci_set_dma_max_seg_size 2008-02-05 09:44:11 -08:00
sata_mv.c sata_mv: remove iounmap in mv_platform_remove and use devm_iomap 2008-02-20 12:20:46 -05:00
sata_nv.c sata_nv: fix ATAPI issues with memory over 4GB (v7) 2008-02-06 07:00:27 -05:00
sata_promise.c ata: fix sparse warning in sata_promise.c 2008-02-15 13:50:59 -05:00
sata_promise.h libata annotations and fixes 2008-01-23 05:24:15 -05:00
sata_qstor.c libata: convert to chained sg 2008-01-23 05:24:14 -05:00
sata_sil24.c libata: eliminate the home grown dma padding in favour of 2008-02-19 11:36:56 +01:00
sata_sil.c libata: implement protocol tests 2008-01-23 05:24:10 -05:00
sata_sis.c
sata_svw.c
sata_sx4.c libata annotations and fixes 2008-01-23 05:24:15 -05:00
sata_uli.c
sata_via.c ata: fix sparse warning in sata_via.c 2008-02-15 13:51:01 -05:00
sata_vsc.c
sis.h