hc
2023-08-30 862c27fc9920c83318c784bfdadf43a65df1ec8f
1
2
3
4
5
6
7
8
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
/* $Id: bkm_ax.h,v 1.5.6.3 2001/09/23 22:24:46 kai Exp $
 *
 * low level decls for T-Berkom cards A4T and Scitel Quadro (4*S0, passive)
 *
 * Author       Roland Klabunde
 * Copyright    by Roland Klabunde   <R.Klabunde@Berkom.de>
 *
 * This software may be used and distributed according to the terms
 * of the GNU General Public License, incorporated herein by reference.
 *
 */
 
#ifndef    __BKM_AX_H__
#define    __BKM_AX_H__
 
/* Supported boards    (subtypes) */
#define SCT_1        1
#define    SCT_2        2
#define    SCT_3        3
#define    SCT_4        4
#define BKM_A4T        5
 
#define    PLX_ADDR_PLX        0x14    /* Addr PLX configuration */
#define    PLX_ADDR_ISAC        0x18    /* Addr ISAC */
#define    PLX_ADDR_HSCX        0x1C    /* Addr HSCX */
#define    PLX_ADDR_ALE        0x20    /* Addr ALE */
#define    PLX_ADDR_ALEPLUS    0x24    /* Next Addr behind ALE */
 
#define    PLX_SUBVEN        0x2C    /* Offset SubVendor */
#define    PLX_SUBSYS        0x2E    /* Offset SubSystem */
 
 
/* Application specific registers I20 (Siemens SZB6120H) */
typedef    struct {
   /* Video front end horizontal configuration register */
   volatile u_int    i20VFEHorzCfg;    /* Offset 00 */
   /* Video front end vertical configuration register */
   volatile u_int    i20VFEVertCfg;    /* Offset 04 */
   /* Video front end scaler and pixel format register */
   volatile u_int    i20VFEScaler;    /* Offset 08 */
   /* Video display top register */
   volatile u_int    i20VDispTop;    /* Offset 0C */
   /* Video display bottom register */
   volatile u_int    i20VDispBottom;    /* Offset 10 */
   /* Video stride, status and frame grab register */
   volatile u_int    i20VidFrameGrab;/* Offset 14 */
   /* Video display configuration register */
   volatile u_int    i20VDispCfg;    /* Offset 18 */
   /* Video masking map top */
   volatile u_int    i20VMaskTop;    /* Offset 1C */
   /* Video masking map bottom */
   volatile u_int    i20VMaskBottom;    /* Offset 20 */
   /* Overlay control register */
   volatile u_int    i20OvlyControl;    /* Offset 24 */
   /* System, PCI and general purpose pins control register */
   volatile u_int    i20SysControl;    /* Offset 28 */
#define    sysRESET        0x01000000    /* bit 24:Softreset (Low)        */
   /* GPIO 4...0: Output fixed for our cfg! */
#define    sysCFG            0x000000E0    /* GPIO 7,6,5: Input */
   /* General purpose pins and guest bus control register */
   volatile u_int    i20GuestControl;/* Offset 2C */
#define    guestWAIT_CFG    0x00005555    /* 4 PCI waits for all */
#define    guestISDN_INT_E    0x01000000    /* ISDN Int en (low) */
#define    guestVID_INT_E    0x02000000    /* Video interrupt en (low) */
#define    guestADI1_INT_R    0x04000000    /* ADI #1 int req (low) */
#define    guestADI2_INT_R    0x08000000    /* ADI #2 int req (low) */
#define    guestISDN_RES    0x10000000    /* ISDN reset bit (high) */
#define    guestADI1_INT_S    0x20000000    /* ADI #1 int pending (low) */
#define    guestADI2_INT_S    0x40000000    /* ADI #2 int pending (low) */
#define    guestISDN_INT_S    0x80000000    /* ISAC int pending (low) */
 
#define    g_A4T_JADE_RES    0x01000000    /* JADE Reset (High) */
#define    g_A4T_ISAR_RES    0x02000000    /* ISAR Reset (High) */
#define    g_A4T_ISAC_RES    0x04000000    /* ISAC Reset (High) */
#define    g_A4T_JADE_BOOTR 0x08000000    /* JADE enable boot SRAM (Low) NOT USED */
#define    g_A4T_ISAR_BOOTR 0x10000000    /* ISAR enable boot SRAM (Low) NOT USED */
#define    g_A4T_JADE_INT_S 0x20000000    /* JADE interrupt pnd (Low) */
#define    g_A4T_ISAR_INT_S 0x40000000    /* ISAR interrupt pnd (Low) */
#define    g_A4T_ISAC_INT_S 0x80000000    /* ISAC interrupt pnd (Low) */
 
   volatile u_int    i20CodeSource;    /* Offset 30 */
   volatile u_int    i20CodeXferCtrl;/* Offset 34 */
   volatile u_int    i20CodeMemPtr;    /* Offset 38 */
 
   volatile u_int    i20IntStatus;    /* Offset 3C */
   volatile u_int    i20IntCtrl;    /* Offset 40 */
#define    intISDN        0x40000000    /* GIRQ1En (ISAC/ADI) (High) */
#define    intVID        0x20000000    /* GIRQ0En (VSYNC)    (High) */
#define    intCOD        0x10000000    /* CodRepIrqEn        (High) */
#define    intPCI        0x01000000    /* PCI IntA enable    (High) */
 
   volatile u_int    i20I2CCtrl;    /* Offset 44                    */
} I20_REGISTER_FILE, *PI20_REGISTER_FILE;
 
/*
 * Postoffice structure for A4T
 *
 */
#define    PO_OFFSET    0x00000200    /* Postoffice offset from base */
 
#define    GCS_0        0x00000000    /* Guest bus chip selects */
#define    GCS_1        0x00100000
#define    GCS_2        0x00200000
#define    GCS_3        0x00300000
 
#define    PO_READ        0x00000000    /* R/W from/to guest bus */
#define    PO_WRITE    0x00800000
 
#define    PO_PEND        0x02000000
 
#define POSTOFFICE(postoffice) *(volatile unsigned int *)(postoffice)
 
/* Wait unlimited (don't worry)                                        */
#define    __WAITI20__(postoffice)                    \
   do {                            \
       while ((POSTOFFICE(postoffice) & PO_PEND)) ;    \
   } while (0)
 
#endif    /* __BKM_AX_H__ */