* [xlnx:xlnx_rebase_v4.14 132/918] drivers/misc/jesd204b/xilinx_jesd204b.c:29:17: error: field 'hw' has incomplete type
@ 2018-05-10 16:56 kbuild test robot
0 siblings, 0 replies; only message in thread
From: kbuild test robot @ 2018-05-10 16:56 UTC (permalink / raw)
To: linux-arm-kernel
tree: https://github.com/Xilinx/linux-xlnx xlnx_rebase_v4.14
head: 944a760cdb1098e23096c923aef70488fdbd501b
commit: 5d774267f2dcee0cd5158b9ebe3bb58a0fd984e1 [132/918] jesd204b: move the current driver to a folder
config: ia64-allmodconfig (attached as .config)
compiler: ia64-linux-gcc (GCC) 7.2.0
reproduce:
wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross
chmod +x ~/bin/make.cross
git checkout 5d774267f2dcee0cd5158b9ebe3bb58a0fd984e1
# save the attached .config to linux build tree
make.cross ARCH=ia64
All errors (new ones prefixed by >>):
>> drivers/misc/jesd204b/xilinx_jesd204b.c:29:17: error: field 'hw' has incomplete type
struct clk_hw hw;
^~
In file included from include/linux/err.h:5:0,
from include/linux/clk.h:15,
from drivers/misc/jesd204b/xilinx_jesd204b.c:11:
drivers/misc/jesd204b/xilinx_jesd204b.c: In function 'jesd204b_clk_enable':
>> include/linux/kernel.h:929:32: error: dereferencing pointer to incomplete type 'struct clk_hw'
BUILD_BUG_ON_MSG(!__same_type(*(ptr), ((type *)0)->member) && \
^~~~~~
include/linux/compiler.h:554:19: note: in definition of macro '__compiletime_assert'
bool __cond = !(condition); \
^~~~~~~~~
include/linux/compiler.h:577:2: note: in expansion of macro '_compiletime_assert'
_compiletime_assert(condition, msg, __compiletime_assert_, __LINE__)
^~~~~~~~~~~~~~~~~~~
include/linux/build_bug.h:47:37: note: in expansion of macro 'compiletime_assert'
#define BUILD_BUG_ON_MSG(cond, msg) compiletime_assert(!(cond), msg)
^~~~~~~~~~~~~~~~~~
include/linux/kernel.h:929:2: note: in expansion of macro 'BUILD_BUG_ON_MSG'
BUILD_BUG_ON_MSG(!__same_type(*(ptr), ((type *)0)->member) && \
^~~~~~~~~~~~~~~~
include/linux/kernel.h:929:20: note: in expansion of macro '__same_type'
BUILD_BUG_ON_MSG(!__same_type(*(ptr), ((type *)0)->member) && \
^~~~~~~~~~~
drivers/misc/jesd204b/xilinx_jesd204b.c:35:26: note: in expansion of macro 'container_of'
#define to_clk_priv(_hw) container_of(_hw, struct child_clk, hw)
^~~~~~~~~~~~
drivers/misc/jesd204b/xilinx_jesd204b.c:215:2: note: in expansion of macro 'to_clk_priv'
to_clk_priv(hw)->enabled = true;
^~~~~~~~~~~
drivers/misc/jesd204b/xilinx_jesd204b.c: At top level:
>> drivers/misc/jesd204b/xilinx_jesd204b.c:230:21: error: variable 'clkout_ops' has initializer but incomplete type
static const struct clk_ops clkout_ops = {
^~~~~~~
>> drivers/misc/jesd204b/xilinx_jesd204b.c:231:3: error: 'const struct clk_ops' has no member named 'recalc_rate'
.recalc_rate = jesd204b_clk_recalc_rate,
^~~~~~~~~~~
drivers/misc/jesd204b/xilinx_jesd204b.c:231:17: warning: excess elements in struct initializer
.recalc_rate = jesd204b_clk_recalc_rate,
^~~~~~~~~~~~~~~~~~~~~~~~
drivers/misc/jesd204b/xilinx_jesd204b.c:231:17: note: (near initialization for 'clkout_ops')
>> drivers/misc/jesd204b/xilinx_jesd204b.c:232:3: error: 'const struct clk_ops' has no member named 'enable'
.enable = jesd204b_clk_enable,
^~~~~~
drivers/misc/jesd204b/xilinx_jesd204b.c:232:12: warning: excess elements in struct initializer
.enable = jesd204b_clk_enable,
^~~~~~~~~~~~~~~~~~~
drivers/misc/jesd204b/xilinx_jesd204b.c:232:12: note: (near initialization for 'clkout_ops')
>> drivers/misc/jesd204b/xilinx_jesd204b.c:233:3: error: 'const struct clk_ops' has no member named 'disable'
.disable = jesd204b_clk_disable,
^~~~~~~
drivers/misc/jesd204b/xilinx_jesd204b.c:233:13: warning: excess elements in struct initializer
.disable = jesd204b_clk_disable,
^~~~~~~~~~~~~~~~~~~~
drivers/misc/jesd204b/xilinx_jesd204b.c:233:13: note: (near initialization for 'clkout_ops')
>> drivers/misc/jesd204b/xilinx_jesd204b.c:234:3: error: 'const struct clk_ops' has no member named 'is_enabled'
.is_enabled = jesd204b_clk_is_enabled,
^~~~~~~~~~
drivers/misc/jesd204b/xilinx_jesd204b.c:234:16: warning: excess elements in struct initializer
.is_enabled = jesd204b_clk_is_enabled,
^~~~~~~~~~~~~~~~~~~~~~~
drivers/misc/jesd204b/xilinx_jesd204b.c:234:16: note: (near initialization for 'clkout_ops')
drivers/misc/jesd204b/xilinx_jesd204b.c: In function 'jesd204b_probe':
>> drivers/misc/jesd204b/xilinx_jesd204b.c:252:23: error: storage size of 'init' isn't known
struct clk_init_data init;
^~~~
drivers/misc/jesd204b/xilinx_jesd204b.c:252:23: warning: unused variable 'init' [-Wunused-variable]
drivers/misc/jesd204b/xilinx_jesd204b.c: At top level:
>> drivers/misc/jesd204b/xilinx_jesd204b.c:230:29: error: storage size of 'clkout_ops' isn't known
static const struct clk_ops clkout_ops = {
^~~~~~~~~~
vim +/hw +29 drivers/misc/jesd204b/xilinx_jesd204b.c
26
27
28 struct child_clk {
> 29 struct clk_hw hw;
30 struct jesd204b_state *st;
31 unsigned long rate;
32 bool enabled;
33 };
34
> 35 #define to_clk_priv(_hw) container_of(_hw, struct child_clk, hw)
36
37 static inline void jesd204b_write(struct jesd204b_state *st,
38 unsigned reg, unsigned val)
39 {
40 iowrite32(val, st->regs + reg);
41 }
42
43 static inline unsigned int jesd204b_read(struct jesd204b_state *st,
44 unsigned reg)
45 {
46 return ioread32(st->regs + reg);
47 }
48
49 static ssize_t jesd204b_laneinfo_read(struct device *dev,
50 struct device_attribute *attr,
51 char *buf, unsigned lane)
52 {
53 struct jesd204b_state *st = dev_get_drvdata(dev);
54 int ret;
55 unsigned val1, val2, val3;
56
57 val1 = jesd204b_read(st, XLNX_JESD204_REG_ID_L(lane));
58 val2 = jesd204b_read(st, XLNX_JESD204_REG_LANE_F(lane));
59 val3 = jesd204b_read(st, XLNX_JESD204_REG_SCR_S_HD_CF(lane));
60 ret = sprintf(buf,
61 "DID: %d, BID: %d, LID: %d, L: %d, SCR: %d, F: %d\n",
62 XLNX_JESD204_LANE_DID(val1),
63 XLNX_JESD204_LANE_BID(val1),
64 XLNX_JESD204_LANE_LID(val1),
65 XLNX_JESD204_LANE_L(val1),
66 XLNX_JESD204_LANE_SCR(val3),
67 XLNX_JESD204_LANE_F(val2));
68
69 val1 = jesd204b_read(st, XLNX_JESD204_REG_LANE_K(lane));
70 val2 = jesd204b_read(st, XLNX_JESD204_REG_M_N_ND_CS(lane));
71
72 ret += sprintf(buf + ret,
73 "K: %d, M: %d, N: %d, CS: %d, S: %d, N': %d, HD: %d\n",
74 XLNX_JESD204_LANE_K(val1),
75 XLNX_JESD204_LANE_M(val2),
76 XLNX_JESD204_LANE_N(val2),
77 XLNX_JESD204_LANE_CS(val2),
78 XLNX_JESD204_LANE_S(val3),
79 XLNX_JESD204_LANE_ND(val2),
80 XLNX_JESD204_LANE_HD(val3));
81
82 val1 = jesd204b_read(st, XLNX_JESD204_REG_FCHK(lane));
83 ret += sprintf(buf + ret, "FCHK: 0x%X, CF: %d\n",
84 XLNX_JESD204_LANE_FCHK(val1),
85 XLNX_JESD204_LANE_CF(val3));
86
87 val1 = jesd204b_read(st, XLNX_JESD204_REG_SC2_ADJ_CTRL(lane));
88 val2 = jesd204b_read(st, XLNX_JESD204_REG_LANE_VERSION(lane));
89 ret += sprintf(buf + ret,
90 "ADJCNT: %d, PHYADJ: %d, ADJDIR: %d, JESDV: %d, SUBCLASS: %d\n",
91 XLNX_JESD204_LANE_ADJ_CNT(val1),
92 XLNX_JESD204_LANE_PHASE_ADJ_REQ(val1),
93 XLNX_JESD204_LANE_ADJ_CNT_DIR(val1),
94 XLNX_JESD204_LANE_JESDV(val2),
95 XLNX_JESD204_LANE_SUBCLASS(val2));
96
97 ret += sprintf(buf + ret, "MFCNT : 0x%X\n",
98 jesd204b_read(st, XLNX_JESD204_REG_TM_MFC_CNT(lane)));
99 ret += sprintf(buf + ret, "ILACNT: 0x%X\n",
100 jesd204b_read(st, XLNX_JESD204_REG_TM_ILA_CNT(lane)));
101 ret += sprintf(buf + ret, "ERRCNT: 0x%X\n",
102 jesd204b_read(st, XLNX_JESD204_REG_TM_ERR_CNT(lane)));
103 ret += sprintf(buf + ret, "BUFCNT: 0x%X\n",
104 jesd204b_read(st, XLNX_JESD204_REG_TM_BUF_ADJ(lane)));
105 ret += sprintf(buf + ret, "LECNT: 0x%X\n",
106 jesd204b_read(st,
107 XLNX_JESD204_REG_TM_LINK_ERR_CNT(lane)));
108
109 ret += sprintf(buf + ret, "FC: %lu\n", st->rate);
110
111 return ret;
112 }
113
114 #define JESD_LANE(_x) \
115 static ssize_t jesd204b_lane##_x##_info_read(struct device *dev, \
116 struct device_attribute *attr, \
117 char *buf) \
118 { \
119 return jesd204b_laneinfo_read(dev, attr, buf, _x); \
120 } \
121 static DEVICE_ATTR(lane##_x##_info, S_IRUSR, jesd204b_lane##_x##_info_read, \
122 NULL)
123
124 JESD_LANE(0);
125 JESD_LANE(1);
126 JESD_LANE(2);
127 JESD_LANE(3);
128 JESD_LANE(4);
129 JESD_LANE(5);
130 JESD_LANE(6);
131 JESD_LANE(7);
132
133 static ssize_t jesd204b_lane_syscstat_read(struct device *dev,
134 struct device_attribute *attr,
135 char *buf, unsigned lane)
136 {
137 struct jesd204b_state *st = dev_get_drvdata(dev);
138 unsigned stat;
139
140 stat = jesd204b_read(st, XLNX_JESD204_REG_SYNC_ERR_STAT);
141
142 return sprintf(buf,
143 "NOT_IN_TAB: %d, DISPARITY: %d, UNEXPECTED_K: %d\n",
144 stat & XLNX_JESD204_SYNC_ERR_NOT_IN_TAB(lane),
145 stat & XLNX_JESD204_SYNC_ERR_DISPARITY(lane),
146 stat & XLNX_JESD204_SYNC_ERR_UNEXPECTED_K(lane));
147 }
148
149 #define JESD_SYNCSTAT_LANE(_x) \
150 static ssize_t jesd204b_lane##_x##_syncstat_read(struct device *dev, \
151 struct device_attribute *attr,\
152 char *buf) \
153 { \
154 return jesd204b_lane_syscstat_read(dev, attr, buf, _x); \
155 } \
156 static DEVICE_ATTR(lane##_x##_syncstat, S_IRUSR, \
157 jesd204b_lane##_x##_syncstat_read, NULL)
158
159 JESD_SYNCSTAT_LANE(0);
160 JESD_SYNCSTAT_LANE(1);
161 JESD_SYNCSTAT_LANE(2);
162 JESD_SYNCSTAT_LANE(3);
163 JESD_SYNCSTAT_LANE(4);
164 JESD_SYNCSTAT_LANE(5);
165 JESD_SYNCSTAT_LANE(6);
166 JESD_SYNCSTAT_LANE(7);
167
168 static ssize_t jesd204b_reg_write(struct device *dev,
169 struct device_attribute *attr,
170 const char *buf, size_t count)
171 {
172 struct jesd204b_state *st = dev_get_drvdata(dev);
173 unsigned val;
174 int ret;
175
176 ret = sscanf(buf, "%i %i", &st->addr, &val);
177 if (ret == 2)
178 jesd204b_write(st, st->addr, val);
179
180 return count;
181 }
182
183 static ssize_t jesd204b_reg_read(struct device *dev,
184 struct device_attribute *attr,
185 char *buf)
186 {
187 struct jesd204b_state *st = dev_get_drvdata(dev);
188
189 return sprintf(buf, "0x%X\n", jesd204b_read(st, st->addr));
190 }
191
192 static DEVICE_ATTR(reg_access, S_IWUSR | S_IRUSR, jesd204b_reg_read,
193 jesd204b_reg_write);
194
195 static ssize_t jesd204b_syncreg_read(struct device *dev,
196 struct device_attribute *attr,
197 char *buf)
198 {
199 struct jesd204b_state *st = dev_get_drvdata(dev);
200
201 return sprintf(buf, "0x%X\n", jesd204b_read(st,
202 XLNX_JESD204_REG_SYNC_STATUS));
203 }
204
205 static DEVICE_ATTR(sync_status, S_IRUSR, jesd204b_syncreg_read, NULL);
206
207 static unsigned long jesd204b_clk_recalc_rate(struct clk_hw *hw,
208 unsigned long parent_rate)
209 {
210 return parent_rate;
211 }
212
213 static int jesd204b_clk_enable(struct clk_hw *hw)
214 {
> 215 to_clk_priv(hw)->enabled = true;
216
217 return 0;
218 }
219
---
0-DAY kernel test infrastructure Open Source Technology Center
https://lists.01.org/pipermail/kbuild-all Intel Corporation
-------------- next part --------------
A non-text attachment was scrubbed...
Name: .config.gz
Type: application/gzip
Size: 48869 bytes
Desc: not available
URL: <http://lists.infradead.org/pipermail/linux-arm-kernel/attachments/20180511/a7bfeef0/attachment-0001.gz>
^ permalink raw reply [flat|nested] only message in thread
only message in thread, other threads:[~2018-05-10 16:56 UTC | newest]
Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2018-05-10 16:56 [xlnx:xlnx_rebase_v4.14 132/918] drivers/misc/jesd204b/xilinx_jesd204b.c:29:17: error: field 'hw' has incomplete type kbuild test robot
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.