Blame view

include/gdsys_fpga.h 3.67 KB
2da0fc0d0   Dirk Eibach   ppc4xx: Add DLVis...
1
2
3
4
  /*
   * (C) Copyright 2010
   * Dirk Eibach,  Guntermann & Drunck GmbH, eibach@gdsys.de
   *
3765b3e7b   Wolfgang Denk   Coding Style clea...
5
   * SPDX-License-Identifier:	GPL-2.0+
2da0fc0d0   Dirk Eibach   ppc4xx: Add DLVis...
6
7
8
9
   */
  
  #ifndef __GDSYS_FPGA_H
  #define __GDSYS_FPGA_H
255ef4d90   Dirk Eibach   ppc4xx: Add Io64 ...
10
  int init_func_fpga(void);
2da0fc0d0   Dirk Eibach   ppc4xx: Add DLVis...
11
12
13
  enum {
  	FPGA_STATE_DONE_FAILED = 1 << 0,
  	FPGA_STATE_REFLECTION_FAILED = 1 << 1,
255ef4d90   Dirk Eibach   ppc4xx: Add Io64 ...
14
  	FPGA_STATE_PLATFORM = 1 << 2,
2da0fc0d0   Dirk Eibach   ppc4xx: Add DLVis...
15
16
17
18
  };
  
  int get_fpga_state(unsigned dev);
  void print_fpga_state(unsigned dev);
aba27acf6   Dirk Eibach   powerpc/ppc4xx: U...
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
  int fpga_set_reg(u32 fpga, u16 *reg, off_t regoff, u16 data);
  int fpga_get_reg(u32 fpga, u16 *reg, off_t regoff, u16 *data);
  
  extern struct ihs_fpga *fpga_ptr[];
  
  #define FPGA_SET_REG(ix, fld, val) \
  	fpga_set_reg((ix), \
  		     &fpga_ptr[ix]->fld, \
  		     offsetof(struct ihs_fpga, fld), \
  		     val)
  
  #define FPGA_GET_REG(ix, fld, val) \
  	fpga_get_reg((ix), \
  		     &fpga_ptr[ix]->fld, \
  		     offsetof(struct ihs_fpga, fld), \
  		     val)
0e60aa85c   Dirk Eibach   powerpc/ppc4xx: R...
35
  struct ihs_gpio {
2da0fc0d0   Dirk Eibach   ppc4xx: Add DLVis...
36
37
38
  	u16 read;
  	u16 clear;
  	u16 set;
0e60aa85c   Dirk Eibach   powerpc/ppc4xx: R...
39
  };
2da0fc0d0   Dirk Eibach   ppc4xx: Add DLVis...
40

0e60aa85c   Dirk Eibach   powerpc/ppc4xx: R...
41
  struct ihs_i2c {
2da0fc0d0   Dirk Eibach   ppc4xx: Add DLVis...
42
43
44
45
  	u16 write_mailbox;
  	u16 write_mailbox_ext;
  	u16 read_mailbox;
  	u16 read_mailbox_ext;
0e60aa85c   Dirk Eibach   powerpc/ppc4xx: R...
46
  };
2da0fc0d0   Dirk Eibach   ppc4xx: Add DLVis...
47

0e60aa85c   Dirk Eibach   powerpc/ppc4xx: R...
48
  struct ihs_osd {
2da0fc0d0   Dirk Eibach   ppc4xx: Add DLVis...
49
50
51
52
  	u16 version;
  	u16 features;
  	u16 control;
  	u16 xy_size;
52158e361   Dirk Eibach   ppc4xx: Set DLVis...
53
54
55
  	u16 xy_scale;
  	u16 x_pos;
  	u16 y_pos;
0e60aa85c   Dirk Eibach   powerpc/ppc4xx: R...
56
  };
2da0fc0d0   Dirk Eibach   ppc4xx: Add DLVis...
57

6e9e6c36a   Dirk Eibach   powerpc/ppc4xx: M...
58
  #ifdef CONFIG_NEO
0e60aa85c   Dirk Eibach   powerpc/ppc4xx: R...
59
  struct ihs_fpga {
6e9e6c36a   Dirk Eibach   powerpc/ppc4xx: M...
60
61
62
63
64
65
  	u16 reflection_low;	/* 0x0000 */
  	u16 versions;		/* 0x0002 */
  	u16 fpga_features;	/* 0x0004 */
  	u16 fpga_version;	/* 0x0006 */
  	u16 reserved_0[8187];	/* 0x0008 */
  	u16 reflection_high;	/* 0x3ffe */
0e60aa85c   Dirk Eibach   powerpc/ppc4xx: R...
66
  };
6e9e6c36a   Dirk Eibach   powerpc/ppc4xx: M...
67
  #endif
2da0fc0d0   Dirk Eibach   ppc4xx: Add DLVis...
68
  #ifdef CONFIG_IO
0e60aa85c   Dirk Eibach   powerpc/ppc4xx: R...
69
  struct ihs_fpga {
2da0fc0d0   Dirk Eibach   ppc4xx: Add DLVis...
70
71
72
73
74
75
76
77
  	u16 reflection_low;	/* 0x0000 */
  	u16 versions;		/* 0x0002 */
  	u16 fpga_features;	/* 0x0004 */
  	u16 fpga_version;	/* 0x0006 */
  	u16 reserved_0[5];	/* 0x0008 */
  	u16 quad_serdes_reset;	/* 0x0012 */
  	u16 reserved_1[8181];	/* 0x0014 */
  	u16 reflection_high;	/* 0x3ffe */
0e60aa85c   Dirk Eibach   powerpc/ppc4xx: R...
78
  };
2da0fc0d0   Dirk Eibach   ppc4xx: Add DLVis...
79
  #endif
255ef4d90   Dirk Eibach   ppc4xx: Add Io64 ...
80
  #ifdef CONFIG_IO64
aba27acf6   Dirk Eibach   powerpc/ppc4xx: U...
81
82
83
84
85
86
87
88
89
90
91
92
  
  struct ihs_fpga_channel {
  	u16 status_int;
  	u16 config_int;
  	u16 switch_connect_config;
  	u16 tx_destination;
  };
  
  struct ihs_fpga_hicb {
  	u16 status_int;
  	u16 config_int;
  };
0e60aa85c   Dirk Eibach   powerpc/ppc4xx: R...
93
  struct ihs_fpga {
255ef4d90   Dirk Eibach   ppc4xx: Add Io64 ...
94
95
96
97
98
99
100
  	u16 reflection_low;	/* 0x0000 */
  	u16 versions;		/* 0x0002 */
  	u16 fpga_features;	/* 0x0004 */
  	u16 fpga_version;	/* 0x0006 */
  	u16 reserved_0[5];	/* 0x0008 */
  	u16 quad_serdes_reset;	/* 0x0012 */
  	u16 reserved_1[502];	/* 0x0014 */
aba27acf6   Dirk Eibach   powerpc/ppc4xx: U...
101
102
103
  	struct ihs_fpga_channel ch[32];		/* 0x0400 */
  	struct ihs_fpga_channel hicb_ch[32];	/* 0x0500 */
  	u16 reserved_2[7487];	/* 0x0580 */
255ef4d90   Dirk Eibach   ppc4xx: Add Io64 ...
104
  	u16 reflection_high;	/* 0x3ffe */
0e60aa85c   Dirk Eibach   powerpc/ppc4xx: R...
105
  };
255ef4d90   Dirk Eibach   ppc4xx: Add Io64 ...
106
  #endif
2da0fc0d0   Dirk Eibach   ppc4xx: Add DLVis...
107
  #ifdef CONFIG_IOCON
0e60aa85c   Dirk Eibach   powerpc/ppc4xx: R...
108
  struct ihs_fpga {
2da0fc0d0   Dirk Eibach   ppc4xx: Add DLVis...
109
110
111
112
113
  	u16 reflection_low;	/* 0x0000 */
  	u16 versions;		/* 0x0002 */
  	u16 fpga_version;	/* 0x0004 */
  	u16 fpga_features;	/* 0x0006 */
  	u16 reserved_0[6];	/* 0x0008 */
0e60aa85c   Dirk Eibach   powerpc/ppc4xx: R...
114
  	struct ihs_gpio gpio;	/* 0x0014 */
2da0fc0d0   Dirk Eibach   ppc4xx: Add DLVis...
115
116
117
  	u16 mpc3w_control;	/* 0x001a */
  	u16 reserved_1[19];	/* 0x001c */
  	u16 videocontrol;	/* 0x0042 */
e50e8968d   Dirk Eibach   powerpc/ppc4xx: S...
118
119
120
121
122
123
124
125
126
127
128
129
  	u16 reserved_2[14];	/* 0x0044 */
  	u16 mc_int;		/* 0x0060 */
  	u16 mc_int_en;		/* 0x0062 */
  	u16 mc_status;		/* 0x0064 */
  	u16 mc_control;		/* 0x0066 */
  	u16 mc_tx_data;		/* 0x0068 */
  	u16 mc_tx_address;	/* 0x006a */
  	u16 mc_tx_cmd;		/* 0x006c */
  	u16 mc_res;		/* 0x006e */
  	u16 mc_rx_cmd_status;	/* 0x0070 */
  	u16 mc_rx_data;		/* 0x0072 */
  	u16 reserved_3[69];	/* 0x0074 */
2da0fc0d0   Dirk Eibach   ppc4xx: Add DLVis...
130
  	u16 reflection_high;	/* 0x00fe */
0e60aa85c   Dirk Eibach   powerpc/ppc4xx: R...
131
  	struct ihs_osd osd;	/* 0x0100 */
e50e8968d   Dirk Eibach   powerpc/ppc4xx: S...
132
  	u16 reserved_4[889];	/* 0x010e */
aba27acf6   Dirk Eibach   powerpc/ppc4xx: U...
133
  	u16 videomem[31736];	/* 0x0800 */
0e60aa85c   Dirk Eibach   powerpc/ppc4xx: R...
134
  };
2da0fc0d0   Dirk Eibach   ppc4xx: Add DLVis...
135
136
137
  #endif
  
  #ifdef CONFIG_DLVISION_10G
0e60aa85c   Dirk Eibach   powerpc/ppc4xx: R...
138
  struct ihs_fpga {
2da0fc0d0   Dirk Eibach   ppc4xx: Add DLVis...
139
140
141
142
143
144
145
  	u16 reflection_low;	/* 0x0000 */
  	u16 versions;		/* 0x0002 */
  	u16 fpga_version;	/* 0x0004 */
  	u16 fpga_features;	/* 0x0006 */
  	u16 reserved_0[10];	/* 0x0008 */
  	u16 extended_interrupt; /* 0x001c */
  	u16 reserved_1[9];	/* 0x001e */
0e60aa85c   Dirk Eibach   powerpc/ppc4xx: R...
146
  	struct ihs_i2c i2c;	/* 0x0030 */
7749c84e9   Dirk Eibach   ppc4xx: Enable MP...
147
148
149
  	u16 reserved_2[16];	/* 0x0038 */
  	u16 mpc3w_control;	/* 0x0058 */
  	u16 reserved_3[34];	/* 0x005a */
2da0fc0d0   Dirk Eibach   ppc4xx: Add DLVis...
150
  	u16 videocontrol;	/* 0x009e */
7749c84e9   Dirk Eibach   ppc4xx: Enable MP...
151
  	u16 reserved_4[176];	/* 0x00a0 */
0e60aa85c   Dirk Eibach   powerpc/ppc4xx: R...
152
  	struct ihs_osd osd;	/* 0x0200 */
7749c84e9   Dirk Eibach   ppc4xx: Enable MP...
153
  	u16 reserved_5[761];	/* 0x020e */
aba27acf6   Dirk Eibach   powerpc/ppc4xx: U...
154
  	u16 videomem[31736];	/* 0x0800 */
0e60aa85c   Dirk Eibach   powerpc/ppc4xx: R...
155
  };
2da0fc0d0   Dirk Eibach   ppc4xx: Add DLVis...
156
157
158
  #endif
  
  #endif