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