1*4882a593Smuzhiyun /* 2*4882a593Smuzhiyun * (C) Copyright 2009 Reinhard Arlt, reinhard.arlt@esd-electronics.com 3*4882a593Smuzhiyun * 4*4882a593Smuzhiyun * base on universe.h by 5*4882a593Smuzhiyun * 6*4882a593Smuzhiyun * (C) Copyright 2003 Stefan Roese, stefan.roese@esd-electronics.com 7*4882a593Smuzhiyun * 8*4882a593Smuzhiyun * SPDX-License-Identifier: GPL-2.0+ 9*4882a593Smuzhiyun */ 10*4882a593Smuzhiyun 11*4882a593Smuzhiyun #ifndef _tsi148_h 12*4882a593Smuzhiyun #define _tsi148_h 13*4882a593Smuzhiyun 14*4882a593Smuzhiyun #ifndef PCI_DEVICE_ID_TUNDRA_TSI148 15*4882a593Smuzhiyun #define PCI_DEVICE_ID_TUNDRA_TSI148 0x0148 16*4882a593Smuzhiyun #endif 17*4882a593Smuzhiyun 18*4882a593Smuzhiyun typedef struct _TSI148 TSI148; 19*4882a593Smuzhiyun typedef struct _OUTBOUND OUTBOUND; 20*4882a593Smuzhiyun typedef struct _INBOUND INBOUND; 21*4882a593Smuzhiyun typedef struct _TDMA_CMD_PACKET TDMA_CMD_PACKET; 22*4882a593Smuzhiyun 23*4882a593Smuzhiyun struct _OUTBOUND { 24*4882a593Smuzhiyun unsigned int otsau; /* 0x000 Outbound start upper */ 25*4882a593Smuzhiyun unsigned int otsal; /* 0x004 Outbouud start lower */ 26*4882a593Smuzhiyun unsigned int oteau; /* 0x008 Outbound end upper */ 27*4882a593Smuzhiyun unsigned int oteal; /* 0x00c Outbound end lower */ 28*4882a593Smuzhiyun unsigned int otofu; /* 0x010 Outbound translation upper */ 29*4882a593Smuzhiyun unsigned int otofl; /* 0x014 Outbound translation lower */ 30*4882a593Smuzhiyun unsigned int otbs; /* 0x018 Outbound translation 2eSST */ 31*4882a593Smuzhiyun unsigned int otat; /* 0x01c Outbound translation attr */ 32*4882a593Smuzhiyun }; 33*4882a593Smuzhiyun 34*4882a593Smuzhiyun struct _INBOUND { 35*4882a593Smuzhiyun unsigned int itsau; /* 0x000 inbound start upper */ 36*4882a593Smuzhiyun unsigned int itsal; /* 0x004 inbouud start lower */ 37*4882a593Smuzhiyun unsigned int iteau; /* 0x008 inbound end upper */ 38*4882a593Smuzhiyun unsigned int iteal; /* 0x00c inbound end lower */ 39*4882a593Smuzhiyun unsigned int itofu; /* 0x010 inbound translation upper */ 40*4882a593Smuzhiyun unsigned int itofl; /* 0x014 inbound translation lower */ 41*4882a593Smuzhiyun unsigned int itat; /* 0x018 inbound translation attr */ 42*4882a593Smuzhiyun unsigned int spare; /* 0x01c not used */ 43*4882a593Smuzhiyun }; 44*4882a593Smuzhiyun 45*4882a593Smuzhiyun struct _TSI148 { 46*4882a593Smuzhiyun unsigned int pci_id; /* 0x000 */ 47*4882a593Smuzhiyun unsigned int pci_csr; /* 0x004 */ 48*4882a593Smuzhiyun unsigned int pci_class; /* 0x008 */ 49*4882a593Smuzhiyun unsigned int pci_misc0; /* 0x00c */ 50*4882a593Smuzhiyun unsigned int pci_mbarl; /* 0x010 */ 51*4882a593Smuzhiyun unsigned int pci_mbarh; /* 0x014 */ 52*4882a593Smuzhiyun unsigned int spare0[(0x03c-0x018)/4]; /* 0x018 */ 53*4882a593Smuzhiyun unsigned int pci_misc1; /* 0x03c */ 54*4882a593Smuzhiyun unsigned int pci_pcixcap; /* 0x040 */ 55*4882a593Smuzhiyun unsigned int pci_pcixstat; /* 0x044 */ 56*4882a593Smuzhiyun unsigned int spare1[(0x100-0x048)/4]; /* 0x048 */ 57*4882a593Smuzhiyun OUTBOUND outbound[8]; /* 0x100 */ 58*4882a593Smuzhiyun unsigned int viack[8]; /* 0x204 */ 59*4882a593Smuzhiyun unsigned int rmwau; /* 0x220 */ 60*4882a593Smuzhiyun unsigned int rmwal; /* 0x224 */ 61*4882a593Smuzhiyun unsigned int rmwen; /* 0x228 */ 62*4882a593Smuzhiyun unsigned int rmwc; /* 0x22c */ 63*4882a593Smuzhiyun unsigned int rmws; /* 0x230 */ 64*4882a593Smuzhiyun unsigned int vmctrl; /* 0x234 */ 65*4882a593Smuzhiyun unsigned int vctrl; /* 0x238 */ 66*4882a593Smuzhiyun unsigned int vstat; /* 0x23c */ 67*4882a593Smuzhiyun unsigned int pcsr; /* 0x240 */ 68*4882a593Smuzhiyun unsigned int spare2[3]; /* 0x244 - 0x24c */ 69*4882a593Smuzhiyun unsigned int vmefl; /* 0x250 */ 70*4882a593Smuzhiyun unsigned int spare3[3]; /* 0x254 - 0x25c */ 71*4882a593Smuzhiyun unsigned int veau; /* 0x260 */ 72*4882a593Smuzhiyun unsigned int veal; /* 0x264 */ 73*4882a593Smuzhiyun unsigned int veat; /* 0x268 */ 74*4882a593Smuzhiyun unsigned int spare4[1]; /* 0x26c */ 75*4882a593Smuzhiyun unsigned int edpau; /* 0x270 */ 76*4882a593Smuzhiyun unsigned int edpal; /* 0x274 */ 77*4882a593Smuzhiyun unsigned int edpxa; /* 0x278 */ 78*4882a593Smuzhiyun unsigned int edpxs; /* 0x27c */ 79*4882a593Smuzhiyun unsigned int edpat; /* 0x280 */ 80*4882a593Smuzhiyun unsigned int spare5[31]; /* 0x284 - 0x2fc */ 81*4882a593Smuzhiyun INBOUND inbound[8]; /* 0x100 */ 82*4882a593Smuzhiyun unsigned int gbau; /* 0x400 */ 83*4882a593Smuzhiyun unsigned int gbal; /* 0x404 */ 84*4882a593Smuzhiyun unsigned int gcsrat; /* 0x408 */ 85*4882a593Smuzhiyun unsigned int cbau; /* 0x40c */ 86*4882a593Smuzhiyun unsigned int cbal; /* 0x410 */ 87*4882a593Smuzhiyun unsigned int crgat; /* 0x414 */ 88*4882a593Smuzhiyun unsigned int crou; /* 0x418 */ 89*4882a593Smuzhiyun unsigned int crol; /* 0x41c */ 90*4882a593Smuzhiyun unsigned int crat; /* 0x420 */ 91*4882a593Smuzhiyun unsigned int lmbau; /* 0x424 */ 92*4882a593Smuzhiyun unsigned int lmbal; /* 0x428 */ 93*4882a593Smuzhiyun unsigned int lmat; /* 0x42c */ 94*4882a593Smuzhiyun unsigned int r64bcu; /* 0x430 */ 95*4882a593Smuzhiyun unsigned int r64bcl; /* 0x434 */ 96*4882a593Smuzhiyun unsigned int bpgtr; /* 0x438 */ 97*4882a593Smuzhiyun unsigned int bpctr; /* 0x43c */ 98*4882a593Smuzhiyun unsigned int vicr; /* 0x440 */ 99*4882a593Smuzhiyun unsigned int spare6[1]; /* 0x444 */ 100*4882a593Smuzhiyun unsigned int inten; /* 0x448 */ 101*4882a593Smuzhiyun unsigned int inteo; /* 0x44c */ 102*4882a593Smuzhiyun unsigned int ints; /* 0x450 */ 103*4882a593Smuzhiyun unsigned int intc; /* 0x454 */ 104*4882a593Smuzhiyun unsigned int intm1; /* 0x458 */ 105*4882a593Smuzhiyun unsigned int intm2; /* 0x45c */ 106*4882a593Smuzhiyun unsigned int spare7[40]; /* 0x460 - 0x4fc */ 107*4882a593Smuzhiyun unsigned int dctl0; /* 0x500 */ 108*4882a593Smuzhiyun unsigned int dsta0; /* 0x504 */ 109*4882a593Smuzhiyun unsigned int dcsau0; /* 0x508 */ 110*4882a593Smuzhiyun unsigned int dcsal0; /* 0x50c */ 111*4882a593Smuzhiyun unsigned int dcdau0; /* 0x510 */ 112*4882a593Smuzhiyun unsigned int dcdal0; /* 0x514 */ 113*4882a593Smuzhiyun unsigned int dclau0; /* 0x518 */ 114*4882a593Smuzhiyun unsigned int dclal0; /* 0x51c */ 115*4882a593Smuzhiyun unsigned int dsau0; /* 0x520 */ 116*4882a593Smuzhiyun unsigned int dsal0; /* 0x524 */ 117*4882a593Smuzhiyun unsigned int ddau0; /* 0x528 */ 118*4882a593Smuzhiyun unsigned int ddal0; /* 0x52c */ 119*4882a593Smuzhiyun unsigned int dsat0; /* 0x530 */ 120*4882a593Smuzhiyun unsigned int ddat0; /* 0x534 */ 121*4882a593Smuzhiyun unsigned int dnlau0; /* 0x538 */ 122*4882a593Smuzhiyun unsigned int dnlal0; /* 0x53c */ 123*4882a593Smuzhiyun unsigned int dcnt0; /* 0x540 */ 124*4882a593Smuzhiyun unsigned int ddbs0; /* 0x544 */ 125*4882a593Smuzhiyun unsigned int r20[14]; /* 0x548 - 0x57c */ 126*4882a593Smuzhiyun unsigned int dctl1; /* 0x580 */ 127*4882a593Smuzhiyun unsigned int dsta1; /* 0x584 */ 128*4882a593Smuzhiyun unsigned int dcsau1; /* 0x588 */ 129*4882a593Smuzhiyun unsigned int dcsal1; /* 0x58c */ 130*4882a593Smuzhiyun unsigned int dcdau1; /* 0x590 */ 131*4882a593Smuzhiyun unsigned int dcdal1; /* 0x594 */ 132*4882a593Smuzhiyun unsigned int dclau1; /* 0x598 */ 133*4882a593Smuzhiyun unsigned int dclal1; /* 0x59c */ 134*4882a593Smuzhiyun unsigned int dsau1; /* 0x5a0 */ 135*4882a593Smuzhiyun unsigned int dsal1; /* 0x5a4 */ 136*4882a593Smuzhiyun unsigned int ddau1; /* 0x5a8 */ 137*4882a593Smuzhiyun unsigned int ddal1; /* 0x5ac */ 138*4882a593Smuzhiyun unsigned int dsat1; /* 0x5b0 */ 139*4882a593Smuzhiyun unsigned int ddat1; /* 0x5b4 */ 140*4882a593Smuzhiyun unsigned int dnlau1; /* 0x5b8 */ 141*4882a593Smuzhiyun unsigned int dnlal1; /* 0x5bc */ 142*4882a593Smuzhiyun unsigned int dcnt1; /* 0x5c0 */ 143*4882a593Smuzhiyun unsigned int ddbs1; /* 0x5c4 */ 144*4882a593Smuzhiyun unsigned int r21[14]; /* 0x5c8 - 0x5fc */ 145*4882a593Smuzhiyun unsigned int devi_veni_2; /* 0x600 */ 146*4882a593Smuzhiyun unsigned int gctrl_ga_revid; /* 0x604 */ 147*4882a593Smuzhiyun unsigned int semaphore0_1_2_3; /* 0x608 */ 148*4882a593Smuzhiyun unsigned int semaphore4_5_6_7; /* 0x60c */ 149*4882a593Smuzhiyun unsigned int mbox0; /* 0x610 */ 150*4882a593Smuzhiyun unsigned int mbox1; /* 0x614 */ 151*4882a593Smuzhiyun unsigned int mbox2; /* 0x618 */ 152*4882a593Smuzhiyun unsigned int mbox3; /* 0x61c */ 153*4882a593Smuzhiyun unsigned int r22[629]; /* 0x620 - 0xff0 */ 154*4882a593Smuzhiyun unsigned int csrbcr; /* 0xff4 */ 155*4882a593Smuzhiyun unsigned int csrbsr; /* 0xff8 */ 156*4882a593Smuzhiyun unsigned int cbar; /* 0xffc */ 157*4882a593Smuzhiyun }; 158*4882a593Smuzhiyun 159*4882a593Smuzhiyun #define IRQ_VOWN 0x0001 160*4882a593Smuzhiyun #define IRQ_VIRQ1 0x0002 161*4882a593Smuzhiyun #define IRQ_VIRQ2 0x0004 162*4882a593Smuzhiyun #define IRQ_VIRQ3 0x0008 163*4882a593Smuzhiyun #define IRQ_VIRQ4 0x0010 164*4882a593Smuzhiyun #define IRQ_VIRQ5 0x0020 165*4882a593Smuzhiyun #define IRQ_VIRQ6 0x0040 166*4882a593Smuzhiyun #define IRQ_VIRQ7 0x0080 167*4882a593Smuzhiyun #define IRQ_DMA 0x0100 168*4882a593Smuzhiyun #define IRQ_LERR 0x0200 169*4882a593Smuzhiyun #define IRQ_VERR 0x0400 170*4882a593Smuzhiyun #define IRQ_res 0x0800 171*4882a593Smuzhiyun #define IRQ_IACK 0x1000 172*4882a593Smuzhiyun #define IRQ_SWINT 0x2000 173*4882a593Smuzhiyun #define IRQ_SYSFAIL 0x4000 174*4882a593Smuzhiyun #define IRQ_ACFAIL 0x8000 175*4882a593Smuzhiyun 176*4882a593Smuzhiyun struct _TDMA_CMD_PACKET { 177*4882a593Smuzhiyun unsigned int dctl; /* DMA Control */ 178*4882a593Smuzhiyun unsigned int dtbc; /* Transfer Byte Count */ 179*4882a593Smuzhiyun unsigned int dlv; /* PCI Address */ 180*4882a593Smuzhiyun unsigned int res1; /* Reserved */ 181*4882a593Smuzhiyun unsigned int dva; /* Vme Address */ 182*4882a593Smuzhiyun unsigned int res2; /* Reserved */ 183*4882a593Smuzhiyun unsigned int dcpp; /* Pointer to Numed Cmd Packet with rPN */ 184*4882a593Smuzhiyun unsigned int res3; /* Reserved */ 185*4882a593Smuzhiyun }; 186*4882a593Smuzhiyun 187*4882a593Smuzhiyun #define VME_AM_A16 0x01 188*4882a593Smuzhiyun #define VME_AM_A24 0x02 189*4882a593Smuzhiyun #define VME_AM_A32 0x03 190*4882a593Smuzhiyun #define VME_AM_Axx 0x03 191*4882a593Smuzhiyun #define VME_AM_USR 0x04 192*4882a593Smuzhiyun #define VME_AM_SUP 0x08 193*4882a593Smuzhiyun #define VME_AM_DATA 0x10 194*4882a593Smuzhiyun #define VME_AM_PROG 0x20 195*4882a593Smuzhiyun #define VME_AM_Mxx (VME_AM_DATA | VME_AM_PROG) 196*4882a593Smuzhiyun 197*4882a593Smuzhiyun #define VME_FLAG_D8 0x01 198*4882a593Smuzhiyun #define VME_FLAG_D16 0x02 199*4882a593Smuzhiyun #define VME_FLAG_D32 0x03 200*4882a593Smuzhiyun #define VME_FLAG_Dxx 0x03 201*4882a593Smuzhiyun 202*4882a593Smuzhiyun #endif 203