• Bartlomiej Zolnierkiewicz's avatar
    ide: add CS5536 host driver (v3) · a77dcc43
    Bartlomiej Zolnierkiewicz authored
    This is a port of libata's pata_cs5536.c (written by Martin K. Petersen)
    to IDE subsystem.
    
    Changes done while at it:
    
    * Reprogram PIO/MWDMA timings if needed before and after DMA transfer
      (chipset uses shared PIO/MWDMA timings).
    
    * Fix cable detection to report 80-wires cable if BIOS set it for any
      device on a port (IDE core will do drive-side cable detection later).
    
    * Don't disable UDMA while programming PIO timings.
    
    * Simplify PCI/MSR support.
    
    Pros of having IDE host driver in addition to libata's one:
    
    * IDE is much lighter than SCSI+libata, the host driver itself is also
      a bit smaller:
    
       text    data     bss     dec     hex filename
       1261     496       4    1761     6e1 drivers/ata/pata_cs5536.o
       1242     128       4    1374     55e drivers/ide/cs5536.o
    
    * This allows use of IDE features which are unavailable under libata.
    
    v2:
    * Fixes per review from Sergei:
      - simplify dependency check in Kconfig
      - use IDE_DRV_MASK also for ->drive_data
      - disable UDMA when programming MWDMA
      - program new DTC timings only when necessary
      - fix printk() level in cs5536_init_one()
    
    * Fix patch description according to comments from Alan and Sergei.
    
    v3:
    * Smarter masking of UDMA bits per Sergei's suggestion.
    
    Cc: Martin K. Petersen <mkp@mkp.net>
    Cc: Karl Auerbach <karl@iwl.com>
    Cc: Alan Cox <alan@lxorguk.ukuu.org.uk>
    Acked-by: default avatarSergei Shtylyov <sshtylyov@ru.mvista.com>
    Signed-off-by: default avatarBartlomiej Zolnierkiewicz <bzolnier@gmail.com>
    a77dcc43
cs5536.c 7.4 KB