linux/drivers/ata
Ondrej Zary 246a1c4c6b ata: pata_parport: add driver (PARIDE replacement)
The pata_parport is a libata-based replacement of the old PARIDE
subsystem - driver for parallel port IDE devices.
It uses the original paride low-level protocol drivers but does not
need the high-level drivers (pd, pcd, pf, pt, pg). The IDE devices
behind parallel port adapters are handled by the ATA layer.

This will allow paride and its high-level drivers to be removed.

Unfortunately, libata drivers cannot sleep so pata_parport claims
parport before activating the ata host and keeps it claimed (and
protocol connected) until the ata host is removed. This means that
no devices can be chained (neither other pata_parport devices nor
a printer).

paride and pata_parport are mutually exclusive because the compiled
protocol drivers are incompatible.

Tested with:
 - Imation SuperDisk LS-120 and HP C4381A (EPAT)
 - Freecom Parallel CD (FRPW)
 - Toshiba Mobile CD-RW 2793008 w/Freecom Parallel Cable rev.903 (FRIQ)
 - Backpack CD-RW 222011 and CD-RW 19350 (BPCK6)

The following bugs in low-level protocol drivers were found and will
be fixed later:

Note: EPP-32 mode is buggy in EPAT - and also in all other protocol
drivers - they don't handle non-multiple-of-4 block transfers
correctly. This causes problems with LS-120 drive.
There is also another bug in EPAT: EPP modes don't work unless a 4-bit
or 8-bit mode is used first (probably some initialization missing?).
Once the device is initialized, EPP works until power cycle.

So after device power on, you have to:
echo "parport0 epat 0" >/sys/bus/pata_parport/new_device
echo pata_parport.0 >/sys/bus/pata_parport/delete_device
echo "parport0 epat 4" >/sys/bus/pata_parport/new_device
(autoprobe will initialize correctly as it tries the slowest modes
first but you'll get the broken EPP-32 mode)

Note: EPP modes are buggy in FRPW, only modes 0 and 1 work.

Signed-off-by: Ondrej Zary <linux@zary.sk>
Reviewed-by: Christoph Hellwig <hch@lst.de>
Reviewed-by: Hannes Reinecke <hare@suse.de>
Acked-by: Jens Axboe <axboe@kernel.dk>
Signed-off-by: Damien Le Moal <damien.lemoal@opensource.wdc.com>
2023-01-31 09:34:41 +09:00
..
acard-ahci.c ata: libata: simplify qc_fill_rtf port operation interface 2023-01-04 13:37:45 +09:00
ahci_brcm.c ata: ahci_brcm: Fix compilation warning 2022-10-18 08:01:57 +09:00
ahci_ceva.c ata: Drop commas after OF match table sentinels 2022-03-07 11:49:10 +09:00
ahci_da850.c ata: libahci_platform: Convert to using devm bulk clocks API 2022-09-17 01:39:22 +09:00
ahci_dm816.c ata: libahci_platform: Convert to using devm bulk clocks API 2022-09-17 01:39:22 +09:00
ahci_dwc.c ata: ahci-dwc: Add Baikal-T1 AHCI SATA interface support 2022-09-17 01:40:31 +09:00
ahci_imx.c ata: ahci_imx: Fix compilation warning 2022-10-18 08:02:14 +09:00
ahci_mtk.c ata: libahci_platform: Parse ports-implemented property in resources getter 2022-09-17 01:39:30 +09:00
ahci_mvebu.c Char/Misc and other driver updates for 5.18-rc1 2022-03-28 12:27:35 -07:00
ahci_octeon.c ata: octeon: Drop empty platform remove function 2023-01-03 08:39:41 +09:00
ahci_platform.c ata: ahci: Add DWC AHCI SATA controller support 2022-09-17 01:40:15 +09:00
ahci_qoriq.c ata: ahci_qoriq: Fix compilation warning 2022-10-18 08:02:14 +09:00
ahci_seattle.c
ahci_st.c ata: ahci_st: Fix compilation warning 2022-10-17 22:01:57 +09:00
ahci_sunxi.c ata: Drop commas after OF match table sentinels 2022-03-07 11:49:10 +09:00
ahci_tegra.c ata: ahci_tegra: call tegra_powergate_power_off only when PM domain is not present 2021-04-11 20:35:08 -06:00
ahci_xgene.c ata: ahci_xgene: Fix compilation warning 2022-10-18 08:02:14 +09:00
ahci.c ata: ahci: Fix PCS quirk application for suspend 2022-12-27 11:06:57 +09:00
ahci.h ata changes for 6.2 2022-12-13 10:54:19 -08:00
ata_generic.c ata: ata_generic: Fix misspelling of 'ata_generic_init_one()' 2021-03-30 20:21:26 -06:00
ata_piix.c ata: libata: make ata_host_suspend() *void* 2022-02-19 11:18:35 +09:00
Kconfig ata: pata_parport: add driver (PARIDE replacement) 2023-01-31 09:34:41 +09:00
libahci_platform.c ata: libahci_platform: ahci_platform_find_clk: oops, NULL pointer 2022-12-07 08:36:37 +09:00
libahci.c ata: libata: respect successfully completed commands during errors 2023-01-04 13:39:19 +09:00
libata-acpi.c ata: make use of ata_port_is_frozen() helper 2022-10-18 13:53:27 +09:00
libata-core.c ata: libata: exclude FUA support for known buggy drives 2023-01-14 07:32:45 +09:00
libata-eh.c ata: scsi: rename flag ATA_QCFLAG_FAILED to ATA_QCFLAG_EH 2023-01-04 13:36:26 +09:00
libata-pata-timings.c ata: separate PATA timings code from libata-core.c 2020-03-26 10:28:19 -06:00
libata-pmp.c ata: libata: add tracepoints for ATA error handling 2022-01-05 19:33:01 +09:00
libata-sata.c ata: libata: read the shared status for successful NCQ commands once 2023-01-04 13:38:14 +09:00
libata-scsi.c ata: libata: cleanup fua support detection 2023-01-14 07:32:42 +09:00
libata-sff.c ata: libata: simplify qc_fill_rtf port operation interface 2023-01-04 13:37:45 +09:00
libata-trace.c ata: scsi: rename flag ATA_QCFLAG_FAILED to ATA_QCFLAG_EH 2023-01-04 13:36:26 +09:00
libata-transport.c ata: libata-transport: fix error handling in ata_tdev_add() 2022-11-11 17:26:05 +09:00
libata-transport.h
libata-zpodd.c
libata.h ata: libata: only set sense valid flag if sense data is valid 2022-10-17 11:31:52 +09:00
Makefile ata: pata_parport: add driver (PARIDE replacement) 2023-01-31 09:34:41 +09:00
pata_acpi.c ata: make transfer mode masks *unsigned int* 2022-06-17 16:35:02 +09:00
pata_ali.c ata: make transfer mode masks *unsigned int* 2022-06-17 16:35:02 +09:00
pata_amd.c ata: make transfer mode masks *unsigned int* 2022-06-17 16:35:02 +09:00
pata_arasan_cf.c ata: libata: make ata_host_suspend() *void* 2022-02-19 11:18:35 +09:00
pata_artop.c ata: pata_artop: use *switch* in atp8xx_fixup() 2022-02-19 11:18:42 +09:00
pata_atiixp.c ata: pata_atiixp: make static read-only arrays const 2022-01-31 09:58:32 +09:00
pata_atp867x.c ata: pata_atp867x: convert printk() calls 2022-01-05 19:33:02 +09:00
pata_buddha.c
pata_cmd64x.c ata: pata_cmd64x: convert printk() calls 2022-01-05 19:33:03 +09:00
pata_cmd640.c ata: pata_cmd640: convert printk() calls 2022-01-05 19:33:02 +09:00
pata_cs5520.c ata: libata: make ata_host_suspend() *void* 2022-02-19 11:18:35 +09:00
pata_cs5530.c ata: pata_cs5530: Avoid overwriting initialised field in 'cs5530_sht' 2021-06-16 06:50:25 -06:00
pata_cs5535.c ata: pata_cs5535: Fix W=1 warnings 2022-06-30 08:21:43 +09:00
pata_cs5536.c ata: pata_cs5536: convert printk() calls 2022-01-05 19:33:03 +09:00
pata_cypress.c ata: pata_cypress: convert printk() calls 2022-01-05 19:33:03 +09:00
pata_efar.c
pata_ep93xx.c ata: pata_ep93xx: use devm_platform_get_and_ioremap_resource() 2022-11-12 10:58:56 +09:00
pata_falcon.c pata_falcon: Avoid type warnings from sparse 2021-11-29 20:28:13 +09:00
pata_ftide010.c ata: pata_ftide010: Remove build dependency on OF 2022-10-18 08:05:10 +09:00
pata_gayle.c
pata_hpt3x2n.c ata: make transfer mode masks *unsigned int* 2022-06-17 16:35:02 +09:00
pata_hpt3x3.c
pata_hpt37x.c ata: make transfer mode masks *unsigned int* 2022-06-17 16:35:02 +09:00
pata_hpt366.c ata: make transfer mode masks *unsigned int* 2022-06-17 16:35:02 +09:00
pata_icside.c ata: Avoid comma separated statements 2021-01-31 08:05:46 -07:00
pata_imx.c ata: libata: make ata_host_suspend() *void* 2022-02-19 11:18:35 +09:00
pata_isapnp.c
pata_it821x.c ata: fix read_id() ata port operation interface 2022-01-14 15:17:16 +09:00
pata_it8213.c
pata_ixp4xx_cf.c ata: Drop commas after OF match table sentinels 2022-03-07 11:49:10 +09:00
pata_jmicron.c ata: pata_jmicron: Fix incorrectly documented function parameter 2021-03-12 07:28:31 -07:00
pata_legacy.c ata: pata_legacy: fix pdc20230_set_piomode() 2022-10-31 20:27:27 +09:00
pata_macio.c ata: pata_macio: Remove unneeded word in comments 2022-09-16 23:24:06 +09:00
pata_marvell.c ata: pata_marvell: Check the 'bmdma_addr' beforing reading 2022-04-22 08:45:06 +09:00
pata_mpc52xx.c ata: pata_mpc52xx: Replace NO_IRQ with 0 2022-10-17 11:38:15 +09:00
pata_mpiix.c
pata_netcell.c ata: fix read_id() ata port operation interface 2022-01-14 15:17:16 +09:00
pata_ninja32.c
pata_ns87410.c
pata_ns87415.c ata: add/use ata_taskfile::{error|status} fields 2022-02-20 09:06:05 +09:00
pata_octeon_cf.c ata: pata_octeon_cf: Fix refcount leak in octeon_cf_probe 2022-06-06 09:52:17 +09:00
pata_of_platform.c ata: Drop commas after OF match table sentinels 2022-03-07 11:49:10 +09:00
pata_oldpiix.c
pata_opti.c ata: pata_opti: Fix spelling issue of 'val' in 'opti_write_reg()' 2021-03-30 20:21:26 -06:00
pata_optidma.c pata_optidma: fix checking of DMA state 2021-10-12 17:46:59 +09:00
pata_palmld.c ata: palmld: fix return value check in palmld_pata_probe() 2022-10-31 20:28:05 +09:00
pata_parport.c ata: pata_parport: add driver (PARIDE replacement) 2023-01-31 09:34:41 +09:00
pata_pcmcia.c pata_pcmia: add SanDisk High (>8G) CF card to supported list 2020-01-29 20:54:51 -07:00
pata_pdc202xx_old.c ata: pata_pdc202xx_old: make static read-only array pio_timing const 2022-01-31 09:58:32 +09:00
pata_pdc2027x.c ata: make transfer mode masks *unsigned int* 2022-06-17 16:35:02 +09:00
pata_piccolo.c ata: pata_piccolo: 'ata_tosh_init()' is misnamed in its header 2021-03-30 20:21:25 -06:00
pata_platform.c ata: pata_platform: Make use of platform_get_mem_or_io() 2022-01-31 09:58:31 +09:00
pata_pxa.c ata: pata_pxa: Use platform_get_irq() to get the interrupt 2022-03-10 11:17:59 +09:00
pata_radisys.c pata_radisys: fix checking of DMA state 2021-10-12 17:47:02 +09:00
pata_rb532_cf.c ata: rb532_cf: remove redundant codes 2021-06-24 18:49:01 -06:00
pata_rdc.c
pata_rz1000.c ata: pata_rz1000: convert printk() calls 2022-01-05 19:33:03 +09:00
pata_samsung_cf.c ata: add/use ata_taskfile::{error|status} fields 2022-02-20 09:06:05 +09:00
pata_sc1200.c ata: pata_sc1200: sc1200_sht'Avoid overwriting initialised field in ' 2021-06-16 06:50:25 -06:00
pata_sch.c
pata_serverworks.c ata: make transfer mode masks *unsigned int* 2022-06-17 16:35:02 +09:00
pata_sil680.c ata: pata_sil680: fix result type of sil680_sel{dev|reg}() 2022-04-13 12:42:51 +09:00
pata_sis.c ata: make transfer mode masks *unsigned int* 2022-06-17 16:35:02 +09:00
pata_sl82c105.c ata: pata_sl82c105: Fix potential doc-rot 2021-03-30 20:21:25 -06:00
pata_triflex.c ata: libata: make ata_host_suspend() *void* 2022-02-19 11:18:35 +09:00
pata_via.c ata: make transfer mode masks *unsigned int* 2022-06-17 16:35:02 +09:00
pdc_adma.c ata: pdc_adma: Drop pointless VPRINTK() calls and remove disabled NCQ debugging 2022-01-05 19:33:01 +09:00
sata_dwc_460ex.c ata: sata_dwc_460ex: Check !irq instead of irq == NO_IRQ 2022-11-12 11:00:04 +09:00
sata_fsl.c ata: libata: simplify qc_fill_rtf port operation interface 2023-01-04 13:37:45 +09:00
sata_gemini.c ata: sata_gemini: Remove dependency on OF for compile tests 2022-10-18 08:04:46 +09:00
sata_gemini.h
sata_highbank.c ata: Drop commas after OF match table sentinels 2022-03-07 11:49:10 +09:00
sata_inic162x.c ata: libata: simplify qc_fill_rtf port operation interface 2023-01-04 13:37:45 +09:00
sata_mv.c ata: sata_mv: Fixes expected number of resources now IRQs are gone 2022-08-03 07:59:12 +09:00
sata_nv.c ata: make use of ata_port_is_frozen() helper 2022-10-18 13:53:27 +09:00
sata_promise.c ata: scsi: rename flag ATA_QCFLAG_FAILED to ATA_QCFLAG_EH 2023-01-04 13:36:26 +09:00
sata_promise.h
sata_qstor.c ata: sata_qstor: Drop pointless VPRINTK() calls 2022-01-05 19:33:02 +09:00
sata_rcar.c ata: sata_rcar: Fix compilation warning 2022-10-18 08:01:45 +09:00
sata_sil.c ata: sata_sil: Drop pointless VPRINTK() calls 2022-01-05 19:33:02 +09:00
sata_sil24.c ata: libata: simplify qc_fill_rtf port operation interface 2023-01-04 13:37:45 +09:00
sata_sis.c
sata_svw.c ata: add/use ata_taskfile::{error|status} fields 2022-02-20 09:06:05 +09:00
sata_sx4.c ata: scsi: rename flag ATA_QCFLAG_FAILED to ATA_QCFLAG_EH 2023-01-04 13:36:26 +09:00
sata_uli.c
sata_via.c
sata_vsc.c ata: add/use ata_taskfile::{error|status} fields 2022-02-20 09:06:05 +09:00
sis.h