tsi148.h 9.34 KB
Newer Older
1 2 3 4 5 6 7
/*
 * (C) Copyright 2009 Reinhard Arlt, reinhard.arlt@esd-electronics.com
 *
 * base on universe.h by
 *
 * (C) Copyright 2003 Stefan Roese, stefan.roese@esd-electronics.com
 *
8
 * SPDX-License-Identifier:	GPL-2.0+
9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202
 */

#ifndef _tsi148_h
#define _tsi148_h

#ifndef PCI_DEVICE_ID_TUNDRA_TSI148
#define PCI_DEVICE_ID_TUNDRA_TSI148 0x0148
#endif

typedef struct _TSI148 TSI148;
typedef struct _OUTBOUND OUTBOUND;
typedef struct _INBOUND  INBOUND;
typedef struct _TDMA_CMD_PACKET TDMA_CMD_PACKET;

struct _OUTBOUND {
	unsigned int otsau;                   /* 0x000 Outbound start       upper */
	unsigned int otsal;                   /* 0x004 Outbouud start       lower */
	unsigned int oteau;                   /* 0x008 Outbound end         upper */
	unsigned int oteal;                   /* 0x00c Outbound end         lower */
	unsigned int otofu;                   /* 0x010 Outbound translation upper */
	unsigned int otofl;                   /* 0x014 Outbound translation lower */
	unsigned int otbs;                    /* 0x018 Outbound translation 2eSST */
	unsigned int otat;                    /* 0x01c Outbound translation attr  */
};

struct _INBOUND {
	unsigned int itsau;                   /* 0x000 inbound  start       upper */
	unsigned int itsal;                   /* 0x004 inbouud  start       lower */
	unsigned int iteau;                   /* 0x008 inbound  end         upper */
	unsigned int iteal;                   /* 0x00c inbound  end         lower */
	unsigned int itofu;                   /* 0x010 inbound  translation upper */
	unsigned int itofl;                   /* 0x014 inbound  translation lower */
	unsigned int itat;                    /* 0x018 inbound  translation attr  */
	unsigned int spare;                   /* 0x01c not used                   */
};

struct _TSI148 {
	unsigned int pci_id;                  /* 0x000         */
	unsigned int pci_csr;                 /* 0x004         */
	unsigned int pci_class;               /* 0x008         */
	unsigned int pci_misc0;               /* 0x00c         */
	unsigned int pci_mbarl;               /* 0x010         */
	unsigned int pci_mbarh;               /* 0x014         */
	unsigned int spare0[(0x03c-0x018)/4]; /* 0x018         */
	unsigned int pci_misc1;               /* 0x03c         */
	unsigned int pci_pcixcap;             /* 0x040         */
	unsigned int pci_pcixstat;            /* 0x044         */
	unsigned int spare1[(0x100-0x048)/4]; /* 0x048         */
	OUTBOUND     outbound[8];             /* 0x100         */
	unsigned int viack[8];                /* 0x204         */
	unsigned int rmwau;                   /* 0x220         */
	unsigned int rmwal;                   /* 0x224         */
	unsigned int rmwen;                   /* 0x228         */
	unsigned int rmwc;                    /* 0x22c         */
	unsigned int rmws;                    /* 0x230         */
	unsigned int vmctrl;                  /* 0x234         */
	unsigned int vctrl;                   /* 0x238         */
	unsigned int vstat;                   /* 0x23c         */
	unsigned int pcsr;                    /* 0x240         */
	unsigned int spare2[3];               /* 0x244 - 0x24c */
	unsigned int vmefl;                   /* 0x250         */
	unsigned int spare3[3];               /* 0x254 - 0x25c */
	unsigned int veau;                    /* 0x260         */
	unsigned int veal;                    /* 0x264         */
	unsigned int veat;                    /* 0x268         */
	unsigned int spare4[1];               /* 0x26c         */
	unsigned int edpau;                   /* 0x270         */
	unsigned int edpal;                   /* 0x274         */
	unsigned int edpxa;                   /* 0x278         */
	unsigned int edpxs;                   /* 0x27c         */
	unsigned int edpat;                   /* 0x280         */
	unsigned int spare5[31];              /* 0x284 - 0x2fc */
	INBOUND      inbound[8];              /* 0x100         */
	unsigned int gbau;                    /* 0x400         */
	unsigned int gbal;                    /* 0x404         */
	unsigned int gcsrat;                  /* 0x408         */
	unsigned int cbau;                    /* 0x40c         */
	unsigned int cbal;                    /* 0x410         */
	unsigned int crgat;                   /* 0x414         */
	unsigned int crou;                    /* 0x418         */
	unsigned int crol;                    /* 0x41c         */
	unsigned int crat;                    /* 0x420         */
	unsigned int lmbau;                   /* 0x424         */
	unsigned int lmbal;                   /* 0x428         */
	unsigned int lmat;                    /* 0x42c         */
	unsigned int r64bcu;                  /* 0x430         */
	unsigned int r64bcl;                  /* 0x434         */
	unsigned int bpgtr;                   /* 0x438         */
	unsigned int bpctr;                   /* 0x43c         */
	unsigned int vicr;                    /* 0x440         */
	unsigned int spare6[1];               /* 0x444         */
	unsigned int inten;                   /* 0x448         */
	unsigned int inteo;                   /* 0x44c         */
	unsigned int ints;                    /* 0x450         */
	unsigned int intc;                    /* 0x454         */
	unsigned int intm1;                   /* 0x458         */
	unsigned int intm2;                   /* 0x45c         */
	unsigned int spare7[40];              /* 0x460 - 0x4fc */
	unsigned int dctl0;                   /* 0x500         */
	unsigned int dsta0;                   /* 0x504         */
	unsigned int dcsau0;                  /* 0x508         */
	unsigned int dcsal0;                  /* 0x50c         */
	unsigned int dcdau0;                  /* 0x510         */
	unsigned int dcdal0;                  /* 0x514         */
	unsigned int dclau0;                  /* 0x518         */
	unsigned int dclal0;                  /* 0x51c         */
	unsigned int dsau0;                   /* 0x520         */
	unsigned int dsal0;                   /* 0x524         */
	unsigned int ddau0;                   /* 0x528         */
	unsigned int ddal0;                   /* 0x52c         */
	unsigned int dsat0;                   /* 0x530         */
	unsigned int ddat0;                   /* 0x534         */
	unsigned int dnlau0;                  /* 0x538         */
	unsigned int dnlal0;                  /* 0x53c         */
	unsigned int dcnt0;                   /* 0x540         */
	unsigned int ddbs0;                   /* 0x544         */
	unsigned int r20[14];                 /* 0x548 - 0x57c */
	unsigned int dctl1;                   /* 0x580         */
	unsigned int dsta1;                   /* 0x584         */
	unsigned int dcsau1;                  /* 0x588         */
	unsigned int dcsal1;                  /* 0x58c         */
	unsigned int dcdau1;                  /* 0x590         */
	unsigned int dcdal1;                  /* 0x594         */
	unsigned int dclau1;                  /* 0x598         */
	unsigned int dclal1;                  /* 0x59c         */
	unsigned int dsau1;                   /* 0x5a0         */
	unsigned int dsal1;                   /* 0x5a4         */
	unsigned int ddau1;                   /* 0x5a8         */
	unsigned int ddal1;                   /* 0x5ac         */
	unsigned int dsat1;                   /* 0x5b0         */
	unsigned int ddat1;                   /* 0x5b4         */
	unsigned int dnlau1;                  /* 0x5b8         */
	unsigned int dnlal1;                  /* 0x5bc         */
	unsigned int dcnt1;                   /* 0x5c0         */
	unsigned int ddbs1;                   /* 0x5c4         */
	unsigned int r21[14];                 /* 0x5c8 - 0x5fc */
	unsigned int devi_veni_2;             /* 0x600         */
	unsigned int gctrl_ga_revid;          /* 0x604         */
	unsigned int semaphore0_1_2_3;        /* 0x608         */
	unsigned int semaphore4_5_6_7;        /* 0x60c         */
	unsigned int mbox0;                   /* 0x610         */
	unsigned int mbox1;                   /* 0x614         */
	unsigned int mbox2;                   /* 0x618         */
	unsigned int mbox3;                   /* 0x61c         */
	unsigned int r22[629];                /* 0x620 - 0xff0 */
	unsigned int csrbcr;                  /* 0xff4         */
	unsigned int csrbsr;                  /* 0xff8         */
	unsigned int cbar;                    /* 0xffc         */
};

#define IRQ_VOWN	0x0001
#define IRQ_VIRQ1	0x0002
#define IRQ_VIRQ2	0x0004
#define IRQ_VIRQ3	0x0008
#define IRQ_VIRQ4	0x0010
#define IRQ_VIRQ5	0x0020
#define IRQ_VIRQ6	0x0040
#define IRQ_VIRQ7	0x0080
#define IRQ_DMA		0x0100
#define IRQ_LERR	0x0200
#define IRQ_VERR	0x0400
#define IRQ_res		0x0800
#define IRQ_IACK	0x1000
#define IRQ_SWINT	0x2000
#define IRQ_SYSFAIL	0x4000
#define IRQ_ACFAIL	0x8000

struct _TDMA_CMD_PACKET {
	unsigned int dctl;   /* DMA Control         */
	unsigned int dtbc;   /* Transfer Byte Count */
	unsigned int dlv;    /* PCI Address         */
	unsigned int res1;   /* Reserved            */
	unsigned int dva;    /* Vme Address         */
	unsigned int res2;   /* Reserved            */
	unsigned int dcpp;   /* Pointer to Numed Cmd Packet with rPN */
	unsigned int res3;   /* Reserved                             */
};

#define VME_AM_A16		0x01
#define VME_AM_A24		0x02
#define VME_AM_A32		0x03
#define VME_AM_Axx		0x03
#define VME_AM_USR		0x04
#define VME_AM_SUP		0x08
#define VME_AM_DATA		0x10
#define VME_AM_PROG		0x20
#define VME_AM_Mxx		(VME_AM_DATA | VME_AM_PROG)

#define VME_FLAG_D8		0x01
#define VME_FLAG_D16		0x02
#define VME_FLAG_D32		0x03
#define VME_FLAG_Dxx		0x03

#endif