Linux Kernel  3.7.1
 All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Macros Groups Pages
Data Structures | Macros | Enumerations | Functions
pata_macio.c File Reference
#include <linux/kernel.h>
#include <linux/module.h>
#include <linux/init.h>
#include <linux/blkdev.h>
#include <linux/ata.h>
#include <linux/libata.h>
#include <linux/adb.h>
#include <linux/pmu.h>
#include <linux/scatterlist.h>
#include <linux/of.h>
#include <linux/gfp.h>
#include <scsi/scsi.h>
#include <scsi/scsi_host.h>
#include <scsi/scsi_device.h>
#include <asm/macio.h>
#include <asm/io.h>
#include <asm/dbdma.h>
#include <asm/pci-bridge.h>
#include <asm/machdep.h>
#include <asm/pmac_feature.h>
#include <asm/mediabay.h>

Go to the source code of this file.

Data Structures

struct  pata_macio_priv
 
struct  pata_macio_timing
 

Macros

#define dev_dbgdma(dev, format, arg...)   ({ if (0) dev_printk(KERN_DEBUG, dev, format, ##arg); 0; })
 
#define DRV_NAME   "pata_macio"
 
#define DRV_VERSION   "0.9"
 
#define IDE_TIMING_CONFIG   0x200
 
#define IDE_INTERRUPT   0x300
 
#define IDE_KAUAI_PIO_CONFIG   0x200
 
#define IDE_KAUAI_ULTRA_CONFIG   0x210
 
#define IDE_KAUAI_POLL_CONFIG   0x220
 
#define SYSCLK_TICKS(t)   (((t) + IDE_SYSCLK_NS - 1) / IDE_SYSCLK_NS)
 
#define SYSCLK_TICKS_66(t)   (((t) + IDE_SYSCLK_66_NS - 1) / IDE_SYSCLK_66_NS)
 
#define IDE_SYSCLK_NS   30 /* 33Mhz cell */
 
#define IDE_SYSCLK_66_NS   15 /* 66Mhz cell */
 
#define TR_133_PIOREG_PIO_MASK   0xff000fff
 
#define TR_133_PIOREG_MDMA_MASK   0x00fff800
 
#define TR_133_UDMAREG_UDMA_MASK   0x0003ffff
 
#define TR_133_UDMAREG_UDMA_EN   0x00000001
 
#define TR_100_PIO_ADDRSETUP_MASK   0xff000000 /* Size of field unknown */
 
#define TR_100_PIO_ADDRSETUP_SHIFT   24
 
#define TR_100_MDMA_MASK   0x00fff000
 
#define TR_100_MDMA_RECOVERY_MASK   0x00fc0000
 
#define TR_100_MDMA_RECOVERY_SHIFT   18
 
#define TR_100_MDMA_ACCESS_MASK   0x0003f000
 
#define TR_100_MDMA_ACCESS_SHIFT   12
 
#define TR_100_PIO_MASK   0xff000fff
 
#define TR_100_PIO_RECOVERY_MASK   0x00000fc0
 
#define TR_100_PIO_RECOVERY_SHIFT   6
 
#define TR_100_PIO_ACCESS_MASK   0x0000003f
 
#define TR_100_PIO_ACCESS_SHIFT   0
 
#define TR_100_UDMAREG_UDMA_MASK   0x0000ffff
 
#define TR_100_UDMAREG_UDMA_EN   0x00000001
 
#define TR_66_UDMA_MASK   0xfff00000
 
#define TR_66_UDMA_EN   0x00100000 /* Enable Ultra mode for DMA */
 
#define TR_66_PIO_ADDRSETUP_MASK   0xe0000000 /* Address setup */
 
#define TR_66_PIO_ADDRSETUP_SHIFT   29
 
#define TR_66_UDMA_RDY2PAUS_MASK   0x1e000000 /* Ready 2 pause time */
 
#define TR_66_UDMA_RDY2PAUS_SHIFT   25
 
#define TR_66_UDMA_WRDATASETUP_MASK   0x01e00000 /* Write data setup time */
 
#define TR_66_UDMA_WRDATASETUP_SHIFT   21
 
#define TR_66_MDMA_MASK   0x000ffc00
 
#define TR_66_MDMA_RECOVERY_MASK   0x000f8000
 
#define TR_66_MDMA_RECOVERY_SHIFT   15
 
#define TR_66_MDMA_ACCESS_MASK   0x00007c00
 
#define TR_66_MDMA_ACCESS_SHIFT   10
 
#define TR_66_PIO_MASK   0xe00003ff
 
#define TR_66_PIO_RECOVERY_MASK   0x000003e0
 
#define TR_66_PIO_RECOVERY_SHIFT   5
 
#define TR_66_PIO_ACCESS_MASK   0x0000001f
 
#define TR_66_PIO_ACCESS_SHIFT   0
 
#define TR_33_MDMA_MASK   0x003ff800
 
#define TR_33_MDMA_RECOVERY_MASK   0x001f0000
 
#define TR_33_MDMA_RECOVERY_SHIFT   16
 
#define TR_33_MDMA_ACCESS_MASK   0x0000f800
 
#define TR_33_MDMA_ACCESS_SHIFT   11
 
#define TR_33_MDMA_HALFTICK   0x00200000
 
#define TR_33_PIO_MASK   0x000007ff
 
#define TR_33_PIO_E   0x00000400
 
#define TR_33_PIO_RECOVERY_MASK   0x000003e0
 
#define TR_33_PIO_RECOVERY_SHIFT   5
 
#define TR_33_PIO_ACCESS_MASK   0x0000001f
 
#define TR_33_PIO_ACCESS_SHIFT   0
 
#define IDE_INTR_DMA   0x80000000
 
#define IDE_INTR_DEVICE   0x40000000
 
#define KAUAI_FCR_UATA_MAGIC   0x00000004
 
#define KAUAI_FCR_UATA_RESET_N   0x00000002
 
#define KAUAI_FCR_UATA_ENABLE   0x00000001
 
#define MAX_DCMDS   256
 
#define MAX_DBDMA_SEG   0xff00
 
#define IDE_WAKEUP_DELAY_MS   1000
 

Enumerations

enum  {
  controller_ohare, controller_heathrow, controller_kl_ata3, controller_kl_ata4,
  controller_un_ata6, controller_k2_ata6, controller_sh_ata6
}
 

Functions

 MODULE_DEVICE_TABLE (pci, pata_macio_pci_match)
 
 module_init (pata_macio_init)
 
 module_exit (pata_macio_exit)
 
 MODULE_AUTHOR ("Benjamin Herrenschmidt")
 
 MODULE_DESCRIPTION ("Apple MacIO PATA driver")
 
 MODULE_LICENSE ("GPL")
 
 MODULE_VERSION (DRV_VERSION)
 

Macro Definition Documentation

#define dev_dbgdma (   dev,
  format,
  arg... 
)    ({ if (0) dev_printk(KERN_DEBUG, dev, format, ##arg); 0; })

Definition at line 42 of file pata_macio.c.

#define DRV_NAME   "pata_macio"

Definition at line 46 of file pata_macio.c.

#define DRV_VERSION   "0.9"

Definition at line 47 of file pata_macio.c.

#define IDE_INTERRUPT   0x300

Definition at line 74 of file pata_macio.c.

#define IDE_INTR_DEVICE   0x40000000

Definition at line 193 of file pata_macio.c.

#define IDE_INTR_DMA   0x80000000

Definition at line 192 of file pata_macio.c.

#define IDE_KAUAI_PIO_CONFIG   0x200

Definition at line 77 of file pata_macio.c.

#define IDE_KAUAI_POLL_CONFIG   0x220

Definition at line 79 of file pata_macio.c.

#define IDE_KAUAI_ULTRA_CONFIG   0x210

Definition at line 78 of file pata_macio.c.

#define IDE_SYSCLK_66_NS   15 /* 66Mhz cell */

Definition at line 89 of file pata_macio.c.

#define IDE_SYSCLK_NS   30 /* 33Mhz cell */

Definition at line 88 of file pata_macio.c.

#define IDE_TIMING_CONFIG   0x200

Definition at line 73 of file pata_macio.c.

#define IDE_WAKEUP_DELAY_MS   1000

Definition at line 222 of file pata_macio.c.

#define KAUAI_FCR_UATA_ENABLE   0x00000001

Definition at line 200 of file pata_macio.c.

#define KAUAI_FCR_UATA_MAGIC   0x00000004

Definition at line 198 of file pata_macio.c.

#define KAUAI_FCR_UATA_RESET_N   0x00000002

Definition at line 199 of file pata_macio.c.

#define MAX_DBDMA_SEG   0xff00

Definition at line 207 of file pata_macio.c.

#define MAX_DCMDS   256

Definition at line 204 of file pata_macio.c.

#define SYSCLK_TICKS (   t)    (((t) + IDE_SYSCLK_NS - 1) / IDE_SYSCLK_NS)

Definition at line 86 of file pata_macio.c.

#define SYSCLK_TICKS_66 (   t)    (((t) + IDE_SYSCLK_66_NS - 1) / IDE_SYSCLK_66_NS)

Definition at line 87 of file pata_macio.c.

#define TR_100_MDMA_ACCESS_MASK   0x0003f000

Definition at line 117 of file pata_macio.c.

#define TR_100_MDMA_ACCESS_SHIFT   12

Definition at line 118 of file pata_macio.c.

#define TR_100_MDMA_MASK   0x00fff000

Definition at line 114 of file pata_macio.c.

#define TR_100_MDMA_RECOVERY_MASK   0x00fc0000

Definition at line 115 of file pata_macio.c.

#define TR_100_MDMA_RECOVERY_SHIFT   18

Definition at line 116 of file pata_macio.c.

#define TR_100_PIO_ACCESS_MASK   0x0000003f

Definition at line 122 of file pata_macio.c.

#define TR_100_PIO_ACCESS_SHIFT   0

Definition at line 123 of file pata_macio.c.

#define TR_100_PIO_ADDRSETUP_MASK   0xff000000 /* Size of field unknown */

Definition at line 112 of file pata_macio.c.

#define TR_100_PIO_ADDRSETUP_SHIFT   24

Definition at line 113 of file pata_macio.c.

#define TR_100_PIO_MASK   0xff000fff

Definition at line 119 of file pata_macio.c.

#define TR_100_PIO_RECOVERY_MASK   0x00000fc0

Definition at line 120 of file pata_macio.c.

#define TR_100_PIO_RECOVERY_SHIFT   6

Definition at line 121 of file pata_macio.c.

#define TR_100_UDMAREG_UDMA_EN   0x00000001

Definition at line 126 of file pata_macio.c.

#define TR_100_UDMAREG_UDMA_MASK   0x0000ffff

Definition at line 125 of file pata_macio.c.

#define TR_133_PIOREG_MDMA_MASK   0x00fff800

Definition at line 97 of file pata_macio.c.

#define TR_133_PIOREG_PIO_MASK   0xff000fff

Definition at line 96 of file pata_macio.c.

#define TR_133_UDMAREG_UDMA_EN   0x00000001

Definition at line 99 of file pata_macio.c.

#define TR_133_UDMAREG_UDMA_MASK   0x0003ffff

Definition at line 98 of file pata_macio.c.

#define TR_33_MDMA_ACCESS_MASK   0x0000f800

Definition at line 178 of file pata_macio.c.

#define TR_33_MDMA_ACCESS_SHIFT   11

Definition at line 179 of file pata_macio.c.

#define TR_33_MDMA_HALFTICK   0x00200000

Definition at line 180 of file pata_macio.c.

#define TR_33_MDMA_MASK   0x003ff800

Definition at line 175 of file pata_macio.c.

#define TR_33_MDMA_RECOVERY_MASK   0x001f0000

Definition at line 176 of file pata_macio.c.

#define TR_33_MDMA_RECOVERY_SHIFT   16

Definition at line 177 of file pata_macio.c.

#define TR_33_PIO_ACCESS_MASK   0x0000001f

Definition at line 185 of file pata_macio.c.

#define TR_33_PIO_ACCESS_SHIFT   0

Definition at line 186 of file pata_macio.c.

#define TR_33_PIO_E   0x00000400

Definition at line 182 of file pata_macio.c.

#define TR_33_PIO_MASK   0x000007ff

Definition at line 181 of file pata_macio.c.

#define TR_33_PIO_RECOVERY_MASK   0x000003e0

Definition at line 183 of file pata_macio.c.

#define TR_33_PIO_RECOVERY_SHIFT   5

Definition at line 184 of file pata_macio.c.

#define TR_66_MDMA_ACCESS_MASK   0x00007c00

Definition at line 156 of file pata_macio.c.

#define TR_66_MDMA_ACCESS_SHIFT   10

Definition at line 157 of file pata_macio.c.

#define TR_66_MDMA_MASK   0x000ffc00

Definition at line 153 of file pata_macio.c.

#define TR_66_MDMA_RECOVERY_MASK   0x000f8000

Definition at line 154 of file pata_macio.c.

#define TR_66_MDMA_RECOVERY_SHIFT   15

Definition at line 155 of file pata_macio.c.

#define TR_66_PIO_ACCESS_MASK   0x0000001f

Definition at line 161 of file pata_macio.c.

#define TR_66_PIO_ACCESS_SHIFT   0

Definition at line 162 of file pata_macio.c.

#define TR_66_PIO_ADDRSETUP_MASK   0xe0000000 /* Address setup */

Definition at line 147 of file pata_macio.c.

#define TR_66_PIO_ADDRSETUP_SHIFT   29

Definition at line 148 of file pata_macio.c.

#define TR_66_PIO_MASK   0xe00003ff

Definition at line 158 of file pata_macio.c.

#define TR_66_PIO_RECOVERY_MASK   0x000003e0

Definition at line 159 of file pata_macio.c.

#define TR_66_PIO_RECOVERY_SHIFT   5

Definition at line 160 of file pata_macio.c.

#define TR_66_UDMA_EN   0x00100000 /* Enable Ultra mode for DMA */

Definition at line 146 of file pata_macio.c.

#define TR_66_UDMA_MASK   0xfff00000

Definition at line 145 of file pata_macio.c.

#define TR_66_UDMA_RDY2PAUS_MASK   0x1e000000 /* Ready 2 pause time */

Definition at line 149 of file pata_macio.c.

#define TR_66_UDMA_RDY2PAUS_SHIFT   25

Definition at line 150 of file pata_macio.c.

#define TR_66_UDMA_WRDATASETUP_MASK   0x01e00000 /* Write data setup time */

Definition at line 151 of file pata_macio.c.

#define TR_66_UDMA_WRDATASETUP_SHIFT   21

Definition at line 152 of file pata_macio.c.

Enumeration Type Documentation

anonymous enum
Enumerator:
controller_ohare 
controller_heathrow 
controller_kl_ata3 
controller_kl_ata4 
controller_un_ata6 
controller_k2_ata6 
controller_sh_ata6 

Definition at line 50 of file pata_macio.c.

Function Documentation

MODULE_AUTHOR ( "Benjamin Herrenschmidt"  )
MODULE_DESCRIPTION ( "Apple MacIO PATA driver )
MODULE_DEVICE_TABLE ( pci  ,
pata_macio_pci_match   
)
module_exit ( pata_macio_exit  )
module_init ( pata_macio_init  )
MODULE_LICENSE ( "GPL"  )
MODULE_VERSION ( DRV_VERSION  )