Re: [PATCH 11/11] [media] marvell-ccic: provide a clock for the sensor

From: kbuild test robot
Date: Mon Nov 05 2018 - 08:21:59 EST


Hi Lubomir,

I love your patch! Yet something to improve:

[auto build test ERROR on linuxtv-media/master]
[also build test ERROR on v4.20-rc1 next-20181105]
[if your patch is applied to the wrong git tree, please drop us a note to help improve the system]

url: https://github.com/0day-ci/linux/commits/Lubomir-Rintel/media-ov7670-hook-s_power-onto-v4l2-core/20181105-163336
base: git://linuxtv.org/media_tree.git master
config: ia64-allmodconfig (attached as .config)
compiler: ia64-linux-gcc (GCC) 8.1.0
reproduce:
wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross
chmod +x ~/bin/make.cross
# save the attached .config to linux build tree
GCC_VERSION=8.1.0 make.cross ARCH=ia64

All error/warnings (new ones prefixed by >>):

In file included from drivers/media/platform/marvell-ccic/cafe-driver.c:38:
>> drivers/media/platform/marvell-ccic/mcam-core.h:129:16: error: field 'mclk_hw' has incomplete type
struct clk_hw mclk_hw;
^~~~~~~
--
In file included from drivers/media/platform/marvell-ccic/mmp-driver.c:30:
>> drivers/media/platform/marvell-ccic/mcam-core.h:129:16: error: field 'mclk_hw' has incomplete type
struct clk_hw mclk_hw;
^~~~~~~
drivers/media/platform/marvell-ccic/mmp-driver.c: In function 'mmpcam_probe':
>> drivers/media/platform/marvell-ccic/mmp-driver.c:302:8: error: implicit declaration of function 'of_clk_add_provider'; did you mean 'of_clk_get_from_provider'? [-Werror=implicit-function-declaration]
ret = of_clk_add_provider(pdev->dev.of_node, of_clk_src_simple_get,
^~~~~~~~~~~~~~~~~~~
of_clk_get_from_provider
>> drivers/media/platform/marvell-ccic/mmp-driver.c:302:47: error: 'of_clk_src_simple_get' undeclared (first use in this function); did you mean 'ida_simple_get'?
ret = of_clk_add_provider(pdev->dev.of_node, of_clk_src_simple_get,
^~~~~~~~~~~~~~~~~~~~~
ida_simple_get
drivers/media/platform/marvell-ccic/mmp-driver.c:302:47: note: each undeclared identifier is reported only once for each function it appears in
cc1: some warnings being treated as errors
--
In file included from drivers/media/platform/marvell-ccic/mcam-core.c:35:
>> drivers/media/platform/marvell-ccic/mcam-core.h:129:16: error: field 'mclk_hw' has incomplete type
struct clk_hw mclk_hw;
^~~~~~~
In file included from include/linux/kernel.h:10,
from drivers/media/platform/marvell-ccic/mcam-core.c:9:
drivers/media/platform/marvell-ccic/mcam-core.c: In function 'mclk_prepare':
include/linux/kernel.h:997:32: error: dereferencing pointer to incomplete type 'struct clk_hw'
BUILD_BUG_ON_MSG(!__same_type(*(ptr), ((type *)0)->member) && \
^~~~~~
include/linux/compiler.h:353:9: note: in definition of macro '__compiletime_assert'
if (!(condition)) \
^~~~~~~~~
include/linux/compiler.h:373:2: note: in expansion of macro '_compiletime_assert'
_compiletime_assert(condition, msg, __compiletime_assert_, __LINE__)
^~~~~~~~~~~~~~~~~~~
include/linux/build_bug.h:45:37: note: in expansion of macro 'compiletime_assert'
#define BUILD_BUG_ON_MSG(cond, msg) compiletime_assert(!(cond), msg)
^~~~~~~~~~~~~~~~~~
include/linux/kernel.h:997:2: note: in expansion of macro 'BUILD_BUG_ON_MSG'
BUILD_BUG_ON_MSG(!__same_type(*(ptr), ((type *)0)->member) && \
^~~~~~~~~~~~~~~~
include/linux/kernel.h:997:20: note: in expansion of macro '__same_type'
BUILD_BUG_ON_MSG(!__same_type(*(ptr), ((type *)0)->member) && \
^~~~~~~~~~~
drivers/media/platform/marvell-ccic/mcam-core.c:952:28: note: in expansion of macro 'container_of'
struct mcam_camera *cam = container_of(hw, struct mcam_camera, mclk_hw);
^~~~~~~~~~~~
drivers/media/platform/marvell-ccic/mcam-core.c: At top level:
>> drivers/media/platform/marvell-ccic/mcam-core.c:1004:21: error: variable 'mclk_ops' has initializer but incomplete type
static const struct clk_ops mclk_ops = {
^~~~~~~
>> drivers/media/platform/marvell-ccic/mcam-core.c:1005:3: error: 'const struct clk_ops' has no member named 'prepare'
.prepare = mclk_prepare,
^~~~~~~
>> drivers/media/platform/marvell-ccic/mcam-core.c:1005:13: warning: excess elements in struct initializer
.prepare = mclk_prepare,
^~~~~~~~~~~~
drivers/media/platform/marvell-ccic/mcam-core.c:1005:13: note: (near initialization for 'mclk_ops')
>> drivers/media/platform/marvell-ccic/mcam-core.c:1006:3: error: 'const struct clk_ops' has no member named 'unprepare'
.unprepare = mclk_unprepare,
^~~~~~~~~
drivers/media/platform/marvell-ccic/mcam-core.c:1006:15: warning: excess elements in struct initializer
.unprepare = mclk_unprepare,
^~~~~~~~~~~~~~
drivers/media/platform/marvell-ccic/mcam-core.c:1006:15: note: (near initialization for 'mclk_ops')
>> drivers/media/platform/marvell-ccic/mcam-core.c:1007:3: error: 'const struct clk_ops' has no member named 'enable'
.enable = mclk_enable,
^~~~~~
drivers/media/platform/marvell-ccic/mcam-core.c:1007:12: warning: excess elements in struct initializer
.enable = mclk_enable,
^~~~~~~~~~~
drivers/media/platform/marvell-ccic/mcam-core.c:1007:12: note: (near initialization for 'mclk_ops')
>> drivers/media/platform/marvell-ccic/mcam-core.c:1008:3: error: 'const struct clk_ops' has no member named 'disable'
.disable = mclk_disable,
^~~~~~~
drivers/media/platform/marvell-ccic/mcam-core.c:1008:13: warning: excess elements in struct initializer
.disable = mclk_disable,
^~~~~~~~~~~~
drivers/media/platform/marvell-ccic/mcam-core.c:1008:13: note: (near initialization for 'mclk_ops')
>> drivers/media/platform/marvell-ccic/mcam-core.c:1009:3: error: 'const struct clk_ops' has no member named 'recalc_rate'
.recalc_rate = mclk_recalc_rate,
^~~~~~~~~~~
drivers/media/platform/marvell-ccic/mcam-core.c:1009:17: warning: excess elements in struct initializer
.recalc_rate = mclk_recalc_rate,
^~~~~~~~~~~~~~~~
drivers/media/platform/marvell-ccic/mcam-core.c:1009:17: note: (near initialization for 'mclk_ops')
drivers/media/platform/marvell-ccic/mcam-core.c: In function 'mccic_register':
>> drivers/media/platform/marvell-ccic/mcam-core.c:1895:9: error: variable 'mclk_init' has initializer but incomplete type
struct clk_init_data mclk_init = { };
^~~~~~~~~~~~~
>> drivers/media/platform/marvell-ccic/mcam-core.c:1895:23: error: storage size of 'mclk_init' isn't known
struct clk_init_data mclk_init = { };
^~~~~~~~~
>> drivers/media/platform/marvell-ccic/mcam-core.c:1963:14: error: implicit declaration of function 'devm_clk_register'; did you mean 'device_register'? [-Werror=implicit-function-declaration]
cam->mclk = devm_clk_register(cam->dev, &cam->mclk_hw);
^~~~~~~~~~~~~~~~~
device_register
drivers/media/platform/marvell-ccic/mcam-core.c:1895:23: warning: unused variable 'mclk_init' [-Wunused-variable]
struct clk_init_data mclk_init = { };
^~~~~~~~~
drivers/media/platform/marvell-ccic/mcam-core.c: At top level:
>> drivers/media/platform/marvell-ccic/mcam-core.c:1004:29: error: storage size of 'mclk_ops' isn't known
static const struct clk_ops mclk_ops = {
^~~~~~~~
cc1: some warnings being treated as errors

vim +/mclk_hw +129 drivers/media/platform/marvell-ccic/mcam-core.h

94
95 /*
96 * A description of one of our devices.
97 * Locking: controlled by s_mutex. Certain fields, however, require
98 * the dev_lock spinlock; they are marked as such by comments.
99 * dev_lock is also required for access to device registers.
100 */
101 struct mcam_camera {
102 /*
103 * These fields should be set by the platform code prior to
104 * calling mcam_register().
105 */
106 unsigned char __iomem *regs;
107 unsigned regs_size; /* size in bytes of the register space */
108 spinlock_t dev_lock;
109 struct device *dev; /* For messages, dma alloc */
110 enum mcam_chip_id chip_id;
111 enum mcam_buffer_mode buffer_mode;
112
113 int mclk_src; /* which clock source the mclk derives from */
114 int mclk_div; /* Clock Divider Value for MCLK */
115
116 enum v4l2_mbus_type bus_type;
117 /* MIPI support */
118 /* The dphy config value, allocated in board file
119 * dphy[0]: DPHY3
120 * dphy[1]: DPHY5
121 * dphy[2]: DPHY6
122 */
123 int *dphy;
124 bool mipi_enabled; /* flag whether mipi is enabled already */
125 int lane; /* lane number */
126
127 /* clock tree support */
128 struct clk *clk[NR_MCAM_CLK];
> 129 struct clk_hw mclk_hw;
130 struct clk *mclk;
131
132 /*
133 * Callbacks from the core to the platform code.
134 */
135 int (*plat_power_up) (struct mcam_camera *cam);
136 void (*plat_power_down) (struct mcam_camera *cam);
137 void (*calc_dphy) (struct mcam_camera *cam);
138
139 /*
140 * Everything below here is private to the mcam core and
141 * should not be touched by the platform code.
142 */
143 struct v4l2_device v4l2_dev;
144 struct v4l2_ctrl_handler ctrl_handler;
145 enum mcam_state state;
146 unsigned long flags; /* Buffer status, mainly (dev_lock) */
147
148 struct mcam_frame_state frame_state; /* Frame state counter */
149 /*
150 * Subsystem structures.
151 */
152 struct video_device vdev;
153 struct v4l2_async_notifier notifier;
154 struct v4l2_async_subdev asd;
155 struct v4l2_subdev *sensor;
156
157 /* Videobuf2 stuff */
158 struct vb2_queue vb_queue;
159 struct list_head buffers; /* Available frames */
160
161 unsigned int nbufs; /* How many are alloc'd */
162 int next_buf; /* Next to consume (dev_lock) */
163
164 char bus_info[32]; /* querycap bus_info */
165
166 /* DMA buffers - vmalloc mode */
167 #ifdef MCAM_MODE_VMALLOC
168 unsigned int dma_buf_size; /* allocated size */
169 void *dma_bufs[MAX_DMA_BUFS]; /* Internal buffer addresses */
170 dma_addr_t dma_handles[MAX_DMA_BUFS]; /* Buffer bus addresses */
171 struct tasklet_struct s_tasklet;
172 #endif
173 unsigned int sequence; /* Frame sequence number */
174 unsigned int buf_seq[MAX_DMA_BUFS]; /* Sequence for individual bufs */
175
176 /* DMA buffers - DMA modes */
177 struct mcam_vb_buffer *vb_bufs[MAX_DMA_BUFS];
178
179 /* Mode-specific ops, set at open time */
180 void (*dma_setup)(struct mcam_camera *cam);
181 void (*frame_complete)(struct mcam_camera *cam, int frame);
182
183 /* Current operating parameters */
184 struct v4l2_pix_format pix_format;
185 u32 mbus_code;
186
187 /* Locks */
188 struct mutex s_mutex; /* Access to this structure */
189 };
190
191

---
0-DAY kernel test infrastructure Open Source Technology Center
https://lists.01.org/pipermail/kbuild-all Intel Corporation

Attachment: .config.gz
Description: application/gzip