Linux Kernel  3.7.1
 All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Macros Groups Pages
Macros | Functions
psycho_common.c File Reference
#include <linux/kernel.h>
#include <linux/interrupt.h>
#include <asm/upa.h>
#include "pci_impl.h"
#include "iommu_common.h"
#include "psycho_common.h"

Go to the source code of this file.

Macros

#define PSYCHO_STRBUF_CTRL_DENAB   0x0000000000000002ULL
 
#define PSYCHO_STCERR_WRITE   0x0000000000000002ULL
 
#define PSYCHO_STCERR_READ   0x0000000000000001ULL
 
#define PSYCHO_STCTAG_PPN   0x0fffffff00000000ULL
 
#define PSYCHO_STCTAG_VPN   0x00000000ffffe000ULL
 
#define PSYCHO_STCTAG_VALID   0x0000000000000002ULL
 
#define PSYCHO_STCTAG_WRITE   0x0000000000000001ULL
 
#define PSYCHO_STCLINE_LINDX   0x0000000001e00000ULL
 
#define PSYCHO_STCLINE_SPTR   0x00000000001f8000ULL
 
#define PSYCHO_STCLINE_LADDR   0x0000000000007f00ULL
 
#define PSYCHO_STCLINE_EPTR   0x00000000000000fcULL
 
#define PSYCHO_STCLINE_VALID   0x0000000000000002ULL
 
#define PSYCHO_STCLINE_FOFN   0x0000000000000001ULL
 
#define PSYCHO_IOMMU_TAG   0xa580UL
 
#define PSYCHO_IOMMU_DATA   0xa600UL
 
#define PSYCHO_IOMMU_TAG_ERRSTS   (0x3UL << 23UL)
 
#define PSYCHO_IOMMU_TAG_ERR   (0x1UL << 22UL)
 
#define PSYCHO_IOMMU_TAG_WRITE   (0x1UL << 21UL)
 
#define PSYCHO_IOMMU_TAG_STREAM   (0x1UL << 20UL)
 
#define PSYCHO_IOMMU_TAG_SIZE   (0x1UL << 19UL)
 
#define PSYCHO_IOMMU_TAG_VPAGE   0x7ffffULL
 
#define PSYCHO_IOMMU_DATA_VALID   (1UL << 30UL)
 
#define PSYCHO_IOMMU_DATA_CACHE   (1UL << 28UL)
 
#define PSYCHO_IOMMU_DATA_PPAGE   0xfffffffULL
 
#define PSYCHO_IOMMU_CTRL_XLTESTAT   0x0000000006000000UL
 
#define PSYCHO_IOMMU_CTRL_XLTEERR   0x0000000001000000UL
 
#define PSYCHO_PCICTRL_SBH_ERR   0x0000000800000000UL
 
#define PSYCHO_PCICTRL_SERR   0x0000000400000000UL
 
#define PSYCHO_PCIAFSR_PMA   0x8000000000000000ULL
 
#define PSYCHO_PCIAFSR_PTA   0x4000000000000000ULL
 
#define PSYCHO_PCIAFSR_PRTRY   0x2000000000000000ULL
 
#define PSYCHO_PCIAFSR_PPERR   0x1000000000000000ULL
 
#define PSYCHO_PCIAFSR_SMA   0x0800000000000000ULL
 
#define PSYCHO_PCIAFSR_STA   0x0400000000000000ULL
 
#define PSYCHO_PCIAFSR_SRTRY   0x0200000000000000ULL
 
#define PSYCHO_PCIAFSR_SPERR   0x0100000000000000ULL
 
#define PSYCHO_PCIAFSR_RESV1   0x00ff000000000000ULL
 
#define PSYCHO_PCIAFSR_BMSK   0x0000ffff00000000ULL
 
#define PSYCHO_PCIAFSR_BLK   0x0000000080000000ULL
 
#define PSYCHO_PCIAFSR_RESV2   0x0000000040000000ULL
 
#define PSYCHO_PCIAFSR_MID   0x000000003e000000ULL
 
#define PSYCHO_PCIAFSR_RESV3   0x0000000001ffffffULL
 
#define PSYCHO_IOMMU_CONTROL   0x0200UL
 
#define PSYCHO_IOMMU_CTRL_TSBSZ   0x0000000000070000UL
 
#define PSYCHO_IOMMU_TSBSZ_1K   0x0000000000000000UL
 
#define PSYCHO_IOMMU_TSBSZ_2K   0x0000000000010000UL
 
#define PSYCHO_IOMMU_TSBSZ_4K   0x0000000000020000UL
 
#define PSYCHO_IOMMU_TSBSZ_8K   0x0000000000030000UL
 
#define PSYCHO_IOMMU_TSBSZ_16K   0x0000000000040000UL
 
#define PSYCHO_IOMMU_TSBSZ_32K   0x0000000000050000UL
 
#define PSYCHO_IOMMU_TSBSZ_64K   0x0000000000060000UL
 
#define PSYCHO_IOMMU_TSBSZ_128K   0x0000000000070000UL
 
#define PSYCHO_IOMMU_CTRL_TBWSZ   0x0000000000000004UL
 
#define PSYCHO_IOMMU_CTRL_DENAB   0x0000000000000002UL
 
#define PSYCHO_IOMMU_CTRL_ENAB   0x0000000000000001UL
 
#define PSYCHO_IOMMU_FLUSH   0x0210UL
 
#define PSYCHO_IOMMU_TSBBASE   0x0208UL
 

Functions

void psycho_check_iommu_error (struct pci_pbm_info *pbm, unsigned long afsr, unsigned long afar, enum psycho_error_type type)
 
irqreturn_t psycho_pcierr_intr (int irq, void *dev_id)
 
int psycho_iommu_init (struct pci_pbm_info *pbm, int tsbsize, u32 dvma_offset, u32 dma_mask, unsigned long write_complete_offset)
 
void psycho_pbm_init_common (struct pci_pbm_info *pbm, struct platform_device *op, const char *chip_name, int chip_type)
 

Macro Definition Documentation

#define PSYCHO_IOMMU_CONTROL   0x0200UL

Definition at line 382 of file psycho_common.c.

#define PSYCHO_IOMMU_CTRL_DENAB   0x0000000000000002UL

Definition at line 393 of file psycho_common.c.

#define PSYCHO_IOMMU_CTRL_ENAB   0x0000000000000001UL

Definition at line 394 of file psycho_common.c.

#define PSYCHO_IOMMU_CTRL_TBWSZ   0x0000000000000004UL

Definition at line 392 of file psycho_common.c.

#define PSYCHO_IOMMU_CTRL_TSBSZ   0x0000000000070000UL

Definition at line 383 of file psycho_common.c.

#define PSYCHO_IOMMU_CTRL_XLTEERR   0x0000000001000000UL

Definition at line 198 of file psycho_common.c.

#define PSYCHO_IOMMU_CTRL_XLTESTAT   0x0000000006000000UL

Definition at line 197 of file psycho_common.c.

#define PSYCHO_IOMMU_DATA   0xa600UL

Definition at line 122 of file psycho_common.c.

#define PSYCHO_IOMMU_DATA_CACHE   (1UL << 28UL)

Definition at line 149 of file psycho_common.c.

#define PSYCHO_IOMMU_DATA_PPAGE   0xfffffffULL

Definition at line 150 of file psycho_common.c.

#define PSYCHO_IOMMU_DATA_VALID   (1UL << 30UL)

Definition at line 148 of file psycho_common.c.

#define PSYCHO_IOMMU_FLUSH   0x0210UL

Definition at line 395 of file psycho_common.c.

#define PSYCHO_IOMMU_TAG   0xa580UL

Definition at line 121 of file psycho_common.c.

#define PSYCHO_IOMMU_TAG_ERR   (0x1UL << 22UL)

Definition at line 143 of file psycho_common.c.

#define PSYCHO_IOMMU_TAG_ERRSTS   (0x3UL << 23UL)

Definition at line 142 of file psycho_common.c.

#define PSYCHO_IOMMU_TAG_SIZE   (0x1UL << 19UL)

Definition at line 146 of file psycho_common.c.

#define PSYCHO_IOMMU_TAG_STREAM   (0x1UL << 20UL)

Definition at line 145 of file psycho_common.c.

#define PSYCHO_IOMMU_TAG_VPAGE   0x7ffffULL

Definition at line 147 of file psycho_common.c.

#define PSYCHO_IOMMU_TAG_WRITE   (0x1UL << 21UL)

Definition at line 144 of file psycho_common.c.

#define PSYCHO_IOMMU_TSBBASE   0x0208UL

Definition at line 396 of file psycho_common.c.

#define PSYCHO_IOMMU_TSBSZ_128K   0x0000000000070000UL

Definition at line 391 of file psycho_common.c.

#define PSYCHO_IOMMU_TSBSZ_16K   0x0000000000040000UL

Definition at line 388 of file psycho_common.c.

#define PSYCHO_IOMMU_TSBSZ_1K   0x0000000000000000UL

Definition at line 384 of file psycho_common.c.

#define PSYCHO_IOMMU_TSBSZ_2K   0x0000000000010000UL

Definition at line 385 of file psycho_common.c.

#define PSYCHO_IOMMU_TSBSZ_32K   0x0000000000050000UL

Definition at line 389 of file psycho_common.c.

#define PSYCHO_IOMMU_TSBSZ_4K   0x0000000000020000UL

Definition at line 386 of file psycho_common.c.

#define PSYCHO_IOMMU_TSBSZ_64K   0x0000000000060000UL

Definition at line 390 of file psycho_common.c.

#define PSYCHO_IOMMU_TSBSZ_8K   0x0000000000030000UL

Definition at line 387 of file psycho_common.c.

#define PSYCHO_PCIAFSR_BLK   0x0000000080000000ULL

Definition at line 298 of file psycho_common.c.

#define PSYCHO_PCIAFSR_BMSK   0x0000ffff00000000ULL

Definition at line 297 of file psycho_common.c.

#define PSYCHO_PCIAFSR_MID   0x000000003e000000ULL

Definition at line 300 of file psycho_common.c.

#define PSYCHO_PCIAFSR_PMA   0x8000000000000000ULL

Definition at line 288 of file psycho_common.c.

#define PSYCHO_PCIAFSR_PPERR   0x1000000000000000ULL

Definition at line 291 of file psycho_common.c.

#define PSYCHO_PCIAFSR_PRTRY   0x2000000000000000ULL

Definition at line 290 of file psycho_common.c.

#define PSYCHO_PCIAFSR_PTA   0x4000000000000000ULL

Definition at line 289 of file psycho_common.c.

#define PSYCHO_PCIAFSR_RESV1   0x00ff000000000000ULL

Definition at line 296 of file psycho_common.c.

#define PSYCHO_PCIAFSR_RESV2   0x0000000040000000ULL

Definition at line 299 of file psycho_common.c.

#define PSYCHO_PCIAFSR_RESV3   0x0000000001ffffffULL

Definition at line 301 of file psycho_common.c.

#define PSYCHO_PCIAFSR_SMA   0x0800000000000000ULL

Definition at line 292 of file psycho_common.c.

#define PSYCHO_PCIAFSR_SPERR   0x0100000000000000ULL

Definition at line 295 of file psycho_common.c.

#define PSYCHO_PCIAFSR_SRTRY   0x0200000000000000ULL

Definition at line 294 of file psycho_common.c.

#define PSYCHO_PCIAFSR_STA   0x0400000000000000ULL

Definition at line 293 of file psycho_common.c.

#define PSYCHO_PCICTRL_SBH_ERR   0x0000000800000000UL

Definition at line 248 of file psycho_common.c.

#define PSYCHO_PCICTRL_SERR   0x0000000400000000UL

Definition at line 249 of file psycho_common.c.

#define PSYCHO_STCERR_READ   0x0000000000000001ULL

Definition at line 16 of file psycho_common.c.

#define PSYCHO_STCERR_WRITE   0x0000000000000002ULL

Definition at line 15 of file psycho_common.c.

#define PSYCHO_STCLINE_EPTR   0x00000000000000fcULL

Definition at line 24 of file psycho_common.c.

#define PSYCHO_STCLINE_FOFN   0x0000000000000001ULL

Definition at line 26 of file psycho_common.c.

#define PSYCHO_STCLINE_LADDR   0x0000000000007f00ULL

Definition at line 23 of file psycho_common.c.

#define PSYCHO_STCLINE_LINDX   0x0000000001e00000ULL

Definition at line 21 of file psycho_common.c.

#define PSYCHO_STCLINE_SPTR   0x00000000001f8000ULL

Definition at line 22 of file psycho_common.c.

#define PSYCHO_STCLINE_VALID   0x0000000000000002ULL

Definition at line 25 of file psycho_common.c.

#define PSYCHO_STCTAG_PPN   0x0fffffff00000000ULL

Definition at line 17 of file psycho_common.c.

#define PSYCHO_STCTAG_VALID   0x0000000000000002ULL

Definition at line 19 of file psycho_common.c.

#define PSYCHO_STCTAG_VPN   0x00000000ffffe000ULL

Definition at line 18 of file psycho_common.c.

#define PSYCHO_STCTAG_WRITE   0x0000000000000001ULL

Definition at line 20 of file psycho_common.c.

#define PSYCHO_STRBUF_CTRL_DENAB   0x0000000000000002ULL

Definition at line 14 of file psycho_common.c.

Function Documentation

void psycho_check_iommu_error ( struct pci_pbm_info pbm,
unsigned long  afsr,
unsigned long  afar,
enum psycho_error_type  type 
)

Definition at line 200 of file psycho_common.c.

int psycho_iommu_init ( struct pci_pbm_info pbm,
int  tsbsize,
u32  dvma_offset,
u32  dma_mask,
unsigned long  write_complete_offset 
)

Definition at line 398 of file psycho_common.c.

void psycho_pbm_init_common ( struct pci_pbm_info pbm,
struct platform_device op,
const char chip_name,
int  chip_type 
)

Definition at line 450 of file psycho_common.c.

irqreturn_t psycho_pcierr_intr ( int  irq,
void dev_id 
)

Definition at line 303 of file psycho_common.c.