Blame view

include/gdsys_fpga.h 4.75 KB
83d290c56   Tom Rini   SPDX: Convert all...
1
  /* SPDX-License-Identifier: GPL-2.0+ */
2da0fc0d0   Dirk Eibach   ppc4xx: Add DLVis...
2
3
  /*
   * (C) Copyright 2010
d38826a3d   Mario Six   treewide: Fix gds...
4
   * Dirk Eibach,  Guntermann & Drunck GmbH, dirk.eibach@gdsys.cc
2da0fc0d0   Dirk Eibach   ppc4xx: Add DLVis...
5
6
7
8
   */
  
  #ifndef __GDSYS_FPGA_H
  #define __GDSYS_FPGA_H
fe4a96757   Mario Six   gdsys: Introduce ...
9
  #ifdef CONFIG_GDSYS_LEGACY_DRIVERS
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
  };
  
  int get_fpga_state(unsigned dev);
2da0fc0d0   Dirk Eibach   ppc4xx: Add DLVis...
18

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)
fe4a96757   Mario Six   gdsys: Introduce ...
35
  #endif
aba27acf6   Dirk Eibach   powerpc/ppc4xx: U...
36

0e60aa85c   Dirk Eibach   powerpc/ppc4xx: R...
37
  struct ihs_gpio {
2da0fc0d0   Dirk Eibach   ppc4xx: Add DLVis...
38
39
40
  	u16 read;
  	u16 clear;
  	u16 set;
0e60aa85c   Dirk Eibach   powerpc/ppc4xx: R...
41
  };
2da0fc0d0   Dirk Eibach   ppc4xx: Add DLVis...
42

0e60aa85c   Dirk Eibach   powerpc/ppc4xx: R...
43
  struct ihs_i2c {
b46226bdb   Dirk Eibach   i2c: IHS I2C mast...
44
45
  	u16 interrupt_status;
  	u16 interrupt_enable;
2da0fc0d0   Dirk Eibach   ppc4xx: Add DLVis...
46
  	u16 write_mailbox_ext;
b46226bdb   Dirk Eibach   i2c: IHS I2C mast...
47
  	u16 write_mailbox;
2da0fc0d0   Dirk Eibach   ppc4xx: Add DLVis...
48
  	u16 read_mailbox_ext;
b46226bdb   Dirk Eibach   i2c: IHS I2C mast...
49
  	u16 read_mailbox;
0e60aa85c   Dirk Eibach   powerpc/ppc4xx: R...
50
  };
2da0fc0d0   Dirk Eibach   ppc4xx: Add DLVis...
51

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

50dcf89d9   Dirk Eibach   mpc83xx: Add gdsy...
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
  struct ihs_mdio {
  	u16 control;
  	u16 address_data;
  	u16 rx_data;
  };
  
  struct ihs_io_ep {
  	u16 transmit_data;
  	u16 rx_tx_control;
  	u16 receive_data;
  	u16 rx_tx_status;
  	u16 reserved;
  	u16 device_address;
  	u16 target_address;
  };
6e9e6c36a   Dirk Eibach   powerpc/ppc4xx: M...
77
  #ifdef CONFIG_NEO
0e60aa85c   Dirk Eibach   powerpc/ppc4xx: R...
78
  struct ihs_fpga {
6e9e6c36a   Dirk Eibach   powerpc/ppc4xx: M...
79
80
81
82
83
84
  	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...
85
  };
6e9e6c36a   Dirk Eibach   powerpc/ppc4xx: M...
86
  #endif
d6918816f   Mario Six   hrcon: Migrate to...
87
  #if defined(CONFIG_TARGET_HRCON) || defined(CONFIG_STRIDER_CON_DP)
50dcf89d9   Dirk Eibach   mpc83xx: Add gdsy...
88
89
90
91
92
93
94
  struct ihs_fpga {
  	u16 reflection_low;	/* 0x0000 */
  	u16 versions;		/* 0x0002 */
  	u16 fpga_version;	/* 0x0004 */
  	u16 fpga_features;	/* 0x0006 */
  	u16 reserved_0[1];	/* 0x0008 */
  	u16 top_interrupt;	/* 0x000a */
7ed45d3d0   Dirk Eibach   hrcon: Add suppor...
95
96
97
  	u16 reserved_1[2];	/* 0x000c */
  	u16 control;		/* 0x0010 */
  	u16 extended_control;	/* 0x0012 */
0e60aa85c   Dirk Eibach   powerpc/ppc4xx: R...
98
  	struct ihs_gpio gpio;	/* 0x0014 */
2da0fc0d0   Dirk Eibach   ppc4xx: Add DLVis...
99
  	u16 mpc3w_control;	/* 0x001a */
50dcf89d9   Dirk Eibach   mpc83xx: Add gdsy...
100
101
102
  	u16 reserved_2[2];	/* 0x001c */
  	struct ihs_io_ep ep;	/* 0x0020 */
  	u16 reserved_3[9];	/* 0x002e */
071be8969   Dirk Eibach   i2c: ihs_i2c: Dua...
103
  	struct ihs_i2c i2c0;	/* 0x0040 */
50dcf89d9   Dirk Eibach   mpc83xx: Add gdsy...
104
  	u16 reserved_4[10];	/* 0x004c */
e50e8968d   Dirk Eibach   powerpc/ppc4xx: S...
105
106
107
108
109
110
111
112
113
114
  	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 */
50dcf89d9   Dirk Eibach   mpc83xx: Add gdsy...
115
  	u16 reserved_5[69];	/* 0x0074 */
2da0fc0d0   Dirk Eibach   ppc4xx: Add DLVis...
116
  	u16 reflection_high;	/* 0x00fe */
7ed45d3d0   Dirk Eibach   hrcon: Add suppor...
117
118
119
120
121
122
123
124
125
126
  	struct ihs_osd osd0;	/* 0x0100 */
  #ifdef CONFIG_SYS_OSD_DH
  	u16 reserved_6[57];	/* 0x010e */
  	struct ihs_osd osd1;	/* 0x0180 */
  	u16 reserved_7[9];	/* 0x018e */
  	struct ihs_i2c i2c1;	/* 0x01a0 */
  	u16 reserved_8[1834];	/* 0x01ac */
  	u16 videomem0[2048];	/* 0x1000 */
  	u16 videomem1[2048];	/* 0x2000 */
  #else
50dcf89d9   Dirk Eibach   mpc83xx: Add gdsy...
127
  	u16 reserved_6[889];	/* 0x010e */
7ed45d3d0   Dirk Eibach   hrcon: Add suppor...
128
129
  	u16 videomem0[2048];	/* 0x0800 */
  #endif
0e60aa85c   Dirk Eibach   powerpc/ppc4xx: R...
130
  };
2da0fc0d0   Dirk Eibach   ppc4xx: Add DLVis...
131
  #endif
a3f9d6c77   Dirk Eibach   mpc83xx: Add stri...
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
  #ifdef CONFIG_STRIDER_CPU
  struct ihs_fpga {
  	u16 reflection_low;	/* 0x0000 */
  	u16 versions;		/* 0x0002 */
  	u16 fpga_version;	/* 0x0004 */
  	u16 fpga_features;	/* 0x0006 */
  	u16 reserved_0[1];	/* 0x0008 */
  	u16 top_interrupt;	/* 0x000a */
  	u16 reserved_1[3];	/* 0x000c */
  	u16 extended_control;	/* 0x0012 */
  	struct ihs_gpio gpio;	/* 0x0014 */
  	u16 mpc3w_control;	/* 0x001a */
  	u16 reserved_2[2];	/* 0x001c */
  	struct ihs_io_ep ep;	/* 0x0020 */
  	u16 reserved_3[9];	/* 0x002e */
  	u16 mc_int;		/* 0x0040 */
  	u16 mc_int_en;		/* 0x0042 */
  	u16 mc_status;		/* 0x0044 */
  	u16 mc_control;		/* 0x0046 */
  	u16 mc_tx_data;		/* 0x0048 */
  	u16 mc_tx_address;	/* 0x004a */
  	u16 mc_tx_cmd;		/* 0x004c */
  	u16 mc_res;		/* 0x004e */
  	u16 mc_rx_cmd_status;	/* 0x0050 */
  	u16 mc_rx_data;		/* 0x0052 */
  	u16 reserved_4[62];	/* 0x0054 */
  	struct ihs_i2c i2c0;	/* 0x00d0 */
  };
  #endif
  
  #ifdef CONFIG_STRIDER_CON
  struct ihs_fpga {
  	u16 reflection_low;	/* 0x0000 */
  	u16 versions;		/* 0x0002 */
  	u16 fpga_version;	/* 0x0004 */
  	u16 fpga_features;	/* 0x0006 */
  	u16 reserved_0[1];	/* 0x0008 */
  	u16 top_interrupt;	/* 0x000a */
  	u16 reserved_1[4];	/* 0x000c */
  	struct ihs_gpio gpio;	/* 0x0014 */
  	u16 mpc3w_control;	/* 0x001a */
  	u16 reserved_2[2];	/* 0x001c */
  	struct ihs_io_ep ep;	/* 0x0020 */
  	u16 reserved_3[9];	/* 0x002e */
  	struct ihs_i2c i2c0;	/* 0x0040 */
  	u16 reserved_4[10];	/* 0x004c */
  	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_5[70];	/* 0x0074 */
7ed45d3d0   Dirk Eibach   hrcon: Add suppor...
189
  	struct ihs_osd osd0;	/* 0x0100 */
a3f9d6c77   Dirk Eibach   mpc83xx: Add stri...
190
  	u16 reserved_6[889];	/* 0x010e */
7ed45d3d0   Dirk Eibach   hrcon: Add suppor...
191
  	u16 videomem0[2048];	/* 0x0800 */
a3f9d6c77   Dirk Eibach   mpc83xx: Add stri...
192
193
  };
  #endif
2da0fc0d0   Dirk Eibach   ppc4xx: Add DLVis...
194
  #endif