Blame view

include/gdsys_fpga.h 3.66 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 {
b46226bdb   Dirk Eibach   i2c: IHS I2C mast...
42
43
  	u16 interrupt_status;
  	u16 interrupt_enable;
2da0fc0d0   Dirk Eibach   ppc4xx: Add DLVis...
44
  	u16 write_mailbox_ext;
b46226bdb   Dirk Eibach   i2c: IHS I2C mast...
45
  	u16 write_mailbox;
2da0fc0d0   Dirk Eibach   ppc4xx: Add DLVis...
46
  	u16 read_mailbox_ext;
b46226bdb   Dirk Eibach   i2c: IHS I2C mast...
47
  	u16 read_mailbox;
0e60aa85c   Dirk Eibach   powerpc/ppc4xx: R...
48
  };
2da0fc0d0   Dirk Eibach   ppc4xx: Add DLVis...
49

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

6e9e6c36a   Dirk Eibach   powerpc/ppc4xx: M...
60
  #ifdef CONFIG_NEO
0e60aa85c   Dirk Eibach   powerpc/ppc4xx: R...
61
  struct ihs_fpga {
6e9e6c36a   Dirk Eibach   powerpc/ppc4xx: M...
62
63
64
65
66
67
  	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...
68
  };
6e9e6c36a   Dirk Eibach   powerpc/ppc4xx: M...
69
  #endif
2da0fc0d0   Dirk Eibach   ppc4xx: Add DLVis...
70
  #ifdef CONFIG_IO
0e60aa85c   Dirk Eibach   powerpc/ppc4xx: R...
71
  struct ihs_fpga {
2da0fc0d0   Dirk Eibach   ppc4xx: Add DLVis...
72
73
74
75
76
77
78
79
  	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...
80
  };
2da0fc0d0   Dirk Eibach   ppc4xx: Add DLVis...
81
  #endif
255ef4d90   Dirk Eibach   ppc4xx: Add Io64 ...
82
  #ifdef CONFIG_IO64
aba27acf6   Dirk Eibach   powerpc/ppc4xx: U...
83
84
85
86
87
88
89
90
91
92
93
  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...
94
  struct ihs_fpga {
255ef4d90   Dirk Eibach   ppc4xx: Add Io64 ...
95
96
97
98
99
100
101
  	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...
102
103
104
  	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 ...
105
  	u16 reflection_high;	/* 0x3ffe */
0e60aa85c   Dirk Eibach   powerpc/ppc4xx: R...
106
  };
255ef4d90   Dirk Eibach   ppc4xx: Add Io64 ...
107
  #endif
2da0fc0d0   Dirk Eibach   ppc4xx: Add DLVis...
108
  #ifdef CONFIG_IOCON
0e60aa85c   Dirk Eibach   powerpc/ppc4xx: R...
109
  struct ihs_fpga {
2da0fc0d0   Dirk Eibach   ppc4xx: Add DLVis...
110
111
112
113
114
  	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...
115
  	struct ihs_gpio gpio;	/* 0x0014 */
2da0fc0d0   Dirk Eibach   ppc4xx: Add DLVis...
116
  	u16 mpc3w_control;	/* 0x001a */
b46226bdb   Dirk Eibach   i2c: IHS I2C mast...
117
118
119
  	u16 reserved_1[18];	/* 0x001c */
  	struct ihs_i2c i2c;	/* 0x0040 */
  	u16 reserved_2[10];	/* 0x004c */
e50e8968d   Dirk Eibach   powerpc/ppc4xx: S...
120
121
122
123
124
125
126
127
128
129
130
  	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...
131
  	u16 reflection_high;	/* 0x00fe */
0e60aa85c   Dirk Eibach   powerpc/ppc4xx: R...
132
  	struct ihs_osd osd;	/* 0x0100 */
e50e8968d   Dirk Eibach   powerpc/ppc4xx: S...
133
  	u16 reserved_4[889];	/* 0x010e */
aba27acf6   Dirk Eibach   powerpc/ppc4xx: U...
134
  	u16 videomem[31736];	/* 0x0800 */
0e60aa85c   Dirk Eibach   powerpc/ppc4xx: R...
135
  };
2da0fc0d0   Dirk Eibach   ppc4xx: Add DLVis...
136
137
138
  #endif
  
  #ifdef CONFIG_DLVISION_10G
0e60aa85c   Dirk Eibach   powerpc/ppc4xx: R...
139
  struct ihs_fpga {
2da0fc0d0   Dirk Eibach   ppc4xx: Add DLVis...
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 */
b46226bdb   Dirk Eibach   i2c: IHS I2C mast...
146
  	u16 reserved_1[29];	/* 0x001e */
7749c84e9   Dirk Eibach   ppc4xx: Enable MP...
147
  	u16 mpc3w_control;	/* 0x0058 */
b46226bdb   Dirk Eibach   i2c: IHS I2C mast...
148
149
150
  	u16 reserved_2[3];	/* 0x005a */
  	struct ihs_i2c i2c;	/* 0x0060 */
  	u16 reserved_3[205];	/* 0x0066 */
0e60aa85c   Dirk Eibach   powerpc/ppc4xx: R...
151
  	struct ihs_osd osd;	/* 0x0200 */
b46226bdb   Dirk Eibach   i2c: IHS I2C mast...
152
  	u16 reserved_4[761];	/* 0x020e */
aba27acf6   Dirk Eibach   powerpc/ppc4xx: U...
153
  	u16 videomem[31736];	/* 0x0800 */
0e60aa85c   Dirk Eibach   powerpc/ppc4xx: R...
154
  };
2da0fc0d0   Dirk Eibach   ppc4xx: Add DLVis...
155
156
157
  #endif
  
  #endif