Linux Kernel  3.7.1
 All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Macros Groups Pages
Data Structures | Macros | Typedefs | Enumerations
drv_trio_intf.h File Reference
#include <arch/trio.h>

Go to the source code of this file.

Data Structures

struct  pcie_port_property
 
struct  pcie_trio_ports_property
 

Macros

#define TILERA_VENDOR_ID   0x1a41
 
#define TILERA_GX36_DEV_ID   0x0200
 
#define TILERA_GX36_RC_DEV_ID   0x2000
 
#define TILEGX_NUM_TRIO   2
 
#define TILEGX_TRIO_PCIES   3
 
#define HV_TRIO_CONFIG_OFFSET
 
#define HV_TRIO_CONFIG_SIZE   (1ULL << TRIO_CFG_REGION_ADDR__REGION_SHIFT)
 
#define HV_TRIO_CONFIG_IOREMAP_SIZE   ((uint64_t) 1 << TRIO_CFG_REGION_ADDR__PROT_SHIFT)
 
#define HV_TRIO_SQ_OFFSET(queue)
 
#define HV_TRIO_SQ_SIZE   (1ULL << TRIO_MAP_SQ_REGION_ADDR__SQ_SEL_SHIFT)
 
#define HV_TRIO_FIRST_PIO_REGION   8
 
#define HV_TRIO_PIO_OFFSET(region)
 
#define HV_TRIO_PIO_SIZE   (1ULL << TRIO_PIO_REGIONS_ADDR__ADDR_WIDTH)
 
#define HV_TRIO_PUSH_DMA_OFFSET(ring)
 
#define HV_TRIO_PULL_DMA_OFFSET(ring)
 
#define HV_TRIO_DMA_REGION_SIZE   (1ULL << TRIO_PUSH_DMA_REGION_ADDR__RING_SEL_SHIFT)
 
#define HV_TRIO_MEM_MAP_INTR_OFFSET(map)
 
#define HV_TRIO_MEM_MAP_INTR_SIZE   (1ULL << TRIO_MAP_MEM_REGION_ADDR__MAP_SEL_SHIFT)
 
#define HV_TRIO_ALLOC_FIXED   0x01
 
#define HV_TRIO_PAGE_SHIFT   12
 
#define HV_TRIO_PAGE_SIZE   (1ull << HV_TRIO_PAGE_SHIFT)
 
#define HV_TRIO_FLAG_TC_SHIFT   4
 
#define HV_TRIO_FLAG_TC_RMASK   0xf
 
#define HV_TRIO_FLAG_TC(N)   ((((N) & HV_TRIO_FLAG_TC_RMASK) + 1) << HV_TRIO_FLAG_TC_SHIFT)
 
#define HV_TRIO_FLAG_VFUNC_SHIFT   8
 
#define HV_TRIO_FLAG_VFUNC_RMASK   0xff
 
#define HV_TRIO_FLAG_VFUNC(N)   ((((N) & HV_TRIO_FLAG_VFUNC_RMASK) + 1) << HV_TRIO_FLAG_VFUNC_SHIFT)
 
#define HV_TRIO_PIO_FLAG_ORDERED   (1 << 16)
 
#define HV_TRIO_PIO_FLAG_SPACE_SHIFT   17
 
#define HV_TRIO_PIO_FLAG_SPACE_MASK   (0x3 << HV_TRIO_PIO_FLAG_SPACE_SHIFT)
 
#define HV_TRIO_PIO_FLAG_CONFIG_SPACE   (0x1 << HV_TRIO_PIO_FLAG_SPACE_SHIFT)
 
#define HV_TRIO_PIO_FLAG_IO_SPACE   (0x2 << HV_TRIO_PIO_FLAG_SPACE_SHIFT)
 

Typedefs

typedef enum
pcie_stream_intr_config_sel_e 
pcie_stream_intr_config_sel_t
 

Enumerations

enum  pcie_stream_intr_config_sel_e { MEM_MAP_SEL, PUSH_DMA_SEL, PULL_DMA_SEL }
 

Macro Definition Documentation

#define HV_TRIO_ALLOC_FIXED   0x01

A flag bit indicating a fixed resource allocation.

Definition at line 157 of file drv_trio_intf.h.

#define HV_TRIO_CONFIG_IOREMAP_SIZE   ((uint64_t) 1 << TRIO_CFG_REGION_ADDR__PROT_SHIFT)

Size of the config region mapped into client. We can't use TRIO_MMIO_ADDRESS_SPACE__OFFSET_WIDTH because it will require the kernel to allocate 4GB VA space from the VMALLOC region which has a total range of 4GB.

Definition at line 102 of file drv_trio_intf.h.

#define HV_TRIO_CONFIG_OFFSET
Value:
((unsigned long long)TRIO_MMIO_ADDRESS_SPACE__REGION_VAL_CFG << \
TRIO_MMIO_ADDRESS_SPACE__REGION_SHIFT)

The mmap file offset (PA) of the TRIO config region.

Definition at line 88 of file drv_trio_intf.h.

#define HV_TRIO_CONFIG_SIZE   (1ULL << TRIO_CFG_REGION_ADDR__REGION_SHIFT)

The maximum size of the TRIO config region.

Definition at line 93 of file drv_trio_intf.h.

#define HV_TRIO_DMA_REGION_SIZE   (1ULL << TRIO_PUSH_DMA_REGION_ADDR__RING_SEL_SHIFT)

The maximum size of a DMA region.

Definition at line 141 of file drv_trio_intf.h.

#define HV_TRIO_FIRST_PIO_REGION   8

The "hardware MMIO region" of the first PIO region.

Definition at line 117 of file drv_trio_intf.h.

#define HV_TRIO_FLAG_TC (   N)    ((((N) & HV_TRIO_FLAG_TC_RMASK) + 1) << HV_TRIO_FLAG_TC_SHIFT)

Definition at line 175 of file drv_trio_intf.h.

#define HV_TRIO_FLAG_TC_RMASK   0xf

Definition at line 174 of file drv_trio_intf.h.

#define HV_TRIO_FLAG_TC_SHIFT   4

Definition at line 173 of file drv_trio_intf.h.

#define HV_TRIO_FLAG_VFUNC (   N)    ((((N) & HV_TRIO_FLAG_VFUNC_RMASK) + 1) << HV_TRIO_FLAG_VFUNC_SHIFT)

Definition at line 181 of file drv_trio_intf.h.

#define HV_TRIO_FLAG_VFUNC_RMASK   0xff

Definition at line 180 of file drv_trio_intf.h.

#define HV_TRIO_FLAG_VFUNC_SHIFT   8

Definition at line 179 of file drv_trio_intf.h.

#define HV_TRIO_MEM_MAP_INTR_OFFSET (   map)
Value:
(((unsigned long long)TRIO_MMIO_ADDRESS_SPACE__REGION_VAL_MAP_MEM << \
TRIO_MMIO_ADDRESS_SPACE__REGION_SHIFT) | \
((map) << TRIO_MAP_MEM_REGION_ADDR__MAP_SEL_SHIFT))

The mmap file offset (PA) of a Mem-Map interrupt region.

Definition at line 146 of file drv_trio_intf.h.

#define HV_TRIO_MEM_MAP_INTR_SIZE   (1ULL << TRIO_MAP_MEM_REGION_ADDR__MAP_SEL_SHIFT)

The maximum size of a Mem-Map interrupt region.

Definition at line 152 of file drv_trio_intf.h.

#define HV_TRIO_PAGE_SHIFT   12

TRIO requires that all mappings have 4kB aligned start addresses.

Definition at line 160 of file drv_trio_intf.h.

#define HV_TRIO_PAGE_SIZE   (1ull << HV_TRIO_PAGE_SHIFT)

TRIO requires that all mappings have 4kB aligned start addresses.

Definition at line 163 of file drv_trio_intf.h.

#define HV_TRIO_PIO_FLAG_CONFIG_SPACE   (0x1 << HV_TRIO_PIO_FLAG_SPACE_SHIFT)

Definition at line 191 of file drv_trio_intf.h.

#define HV_TRIO_PIO_FLAG_IO_SPACE   (0x2 << HV_TRIO_PIO_FLAG_SPACE_SHIFT)

Definition at line 192 of file drv_trio_intf.h.

#define HV_TRIO_PIO_FLAG_ORDERED   (1 << 16)

Definition at line 186 of file drv_trio_intf.h.

#define HV_TRIO_PIO_FLAG_SPACE_MASK   (0x3 << HV_TRIO_PIO_FLAG_SPACE_SHIFT)

Definition at line 190 of file drv_trio_intf.h.

#define HV_TRIO_PIO_FLAG_SPACE_SHIFT   17

Definition at line 189 of file drv_trio_intf.h.

#define HV_TRIO_PIO_OFFSET (   region)
Value:

The mmap file offset (PA) of a PIO region.

Definition at line 120 of file drv_trio_intf.h.

#define HV_TRIO_PIO_SIZE   (1ULL << TRIO_PIO_REGIONS_ADDR__ADDR_WIDTH)

The maximum size of a PIO region.

Definition at line 125 of file drv_trio_intf.h.

#define HV_TRIO_PULL_DMA_OFFSET (   ring)
Value:
(((unsigned long long)TRIO_MMIO_ADDRESS_SPACE__REGION_VAL_PULL_DMA << \
TRIO_MMIO_ADDRESS_SPACE__REGION_SHIFT) | \
((ring) << TRIO_PULL_DMA_REGION_ADDR__RING_SEL_SHIFT))

The mmap file offset (PA) of a pull DMA region.

Definition at line 135 of file drv_trio_intf.h.

#define HV_TRIO_PUSH_DMA_OFFSET (   ring)
Value:
(((unsigned long long)TRIO_MMIO_ADDRESS_SPACE__REGION_VAL_PUSH_DMA << \
TRIO_MMIO_ADDRESS_SPACE__REGION_SHIFT) | \
((ring) << TRIO_PUSH_DMA_REGION_ADDR__RING_SEL_SHIFT))

The mmap file offset (PA) of a push DMA region.

Definition at line 129 of file drv_trio_intf.h.

#define HV_TRIO_SQ_OFFSET (   queue)
Value:
(((unsigned long long)TRIO_MMIO_ADDRESS_SPACE__REGION_VAL_MAP_SQ << \
TRIO_MMIO_ADDRESS_SPACE__REGION_SHIFT) | \
((queue) << TRIO_MAP_SQ_REGION_ADDR__SQ_SEL_SHIFT))

The mmap file offset (PA) of a scatter queue region.

Definition at line 106 of file drv_trio_intf.h.

#define HV_TRIO_SQ_SIZE   (1ULL << TRIO_MAP_SQ_REGION_ADDR__SQ_SEL_SHIFT)

The maximum size of a scatter queue region.

Definition at line 112 of file drv_trio_intf.h.

#define TILEGX_NUM_TRIO   2

Maximum number of TRIO interfaces.

Definition at line 34 of file drv_trio_intf.h.

#define TILEGX_TRIO_PCIES   3

Gx36 has max 3 PCIe MACs per TRIO interface.

Definition at line 37 of file drv_trio_intf.h.

#define TILERA_GX36_DEV_ID   0x0200

The device ID for the Gx36 processor.

Definition at line 28 of file drv_trio_intf.h.

#define TILERA_GX36_RC_DEV_ID   0x2000

Device ID for our internal bridge when running as RC.

Definition at line 31 of file drv_trio_intf.h.

#define TILERA_VENDOR_ID   0x1a41

Interface definitions for the trio driver.The vendor ID for all Tilera processors.

Definition at line 25 of file drv_trio_intf.h.

Typedef Documentation

Configurations can be issued to configure a char stream interrupt.

Enumeration Type Documentation

Configurations can be issued to configure a char stream interrupt.

Enumerator:
MEM_MAP_SEL 

Interrupt configuration for memory map regions.

PUSH_DMA_SEL 

Interrupt configuration for push DMAs.

PULL_DMA_SEL 

Interrupt configuration for pull DMAs.

Definition at line 73 of file drv_trio_intf.h.