• Bartlomiej Zolnierkiewicz's avatar
    sis5513: DMA setup fixes · c77a89cd
    Bartlomiej Zolnierkiewicz authored
    * Add sis_ata133_get_base() helper function for obtaining the address of
      the drive control registers on chipset_family == ATA_133 chipsets.
    * Add three helper functions for programming PIO/MWDMA timings:
      - sis_ata16_program_timings()  (for ATA_16/33/66/100a chipset families)
      - sis_ata100_program_timings() (for ATA_100/133a chipset families)
      - sis_ata133_program_timings() (for ATA_133 chipset family)
      MWDMA timings are taken from datasheets and they match ATA spec.
    * Add generic helper function sis_program_timings() and use it in
      ->set_pio_mode and ->set_dma_mode methods (previously the driver
      depended on BIOS to program the correct MWDMA timings).
    * Remove redundant !chipset_family check from init_hwif_sis5513()
      (init_chipset_sis5513() guarantees that we will never get here if
       chipset_family cannot be determined).
    * SWDMA seems to be unsupported by SiS chipsets (no info about SWDMA in
      datasheets and for SWDMA0 mode timing requirements are impossible to
      fulfill) so remove ->swdma_mask from init_hwif_sis5513() and handling
      of SWDMA modes from sis_set_dma_mode().
    * Enable DMA support for chipset_family == ATA_16.
    * Bump driver version.
    Acked-by: default avatarSergei Shtylyov <sshtylyov@ru.mvista.com>
    Signed-off-by: default avatarBartlomiej Zolnierkiewicz <bzolnier@gmail.com>
sis5513.c 25.6 KB