Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752324AbcDSC3A (ORCPT ); Mon, 18 Apr 2016 22:29:00 -0400 Received: from nasmtp01.atmel.com ([192.199.1.245]:58855 "EHLO nasmtp01.atmel.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751662AbcDSC27 (ORCPT ); Mon, 18 Apr 2016 22:28:59 -0400 Subject: Re: [PATCH 1/2] [media] atmel-isc: add the Image Sensor Controller code To: Laurent Pinchart References: <201604132310.zvahkw1X%fengguang.wu@intel.com> <570F2E3B.1090600@atmel.com> <2713229.ky9ZtMRYDK@avalon> CC: kbuild test robot , , , , , Mauro Carvalho Chehab , Hans Verkuil , Sudip Mukherjee , Mikhail Ulyanov , Fabien Dessenne , Peter Griffin , Benoit Parrot , Gerd Hoffmann , =?UTF-8?Q?Richard_R=c3=b6jfors?= , , From: "Wu, Songjun" Organization: ATMEL Message-ID: <571597CC.202@atmel.com> Date: Tue, 19 Apr 2016 10:28:28 +0800 User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:38.0) Gecko/20100101 Thunderbird/38.7.2 MIME-Version: 1.0 In-Reply-To: <2713229.ky9ZtMRYDK@avalon> Content-Type: text/plain; charset="windows-1252"; format=flowed Content-Transfer-Encoding: 7bit Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 25180 Lines: 689 On 4/14/2016 22:14, Laurent Pinchart wrote: > Hello Songjun, > > On Thursday 14 Apr 2016 13:44:27 Wu, Songjun wrote: >> The option 'CONFIG_COMMON_CLK=y' is needed to add to '.config'. >> But I do not validate, '.config' will be generated automatically and >> overwritten when it is changed. > > Your driver's Kconfig entry should then contain "depends on COMMON_CLK". > Accept. Thank you. >> On 4/14/2016 00:01, kbuild test robot wrote: >>> Hi Songjun, >>> >>> [auto build test ERROR on linuxtv-media/master] >>> [also build test ERROR on v4.6-rc3 next-20160413] >>> [if your patch is applied to the wrong git tree, please drop us a note to >>> help improving the system] >>> >>> url: >>> https://github.com/0day-ci/linux/commits/Songjun-Wu/atmel-isc-add-driver-> > for-Atmel-ISC/20160413-155337 base: git://linuxtv.org/media_tree.git >>> master >>> config: powerpc-allyesconfig (attached as .config) >>> >>> reproduce: >>> wget >>> https://git.kernel.org/cgit/linux/kernel/git/wfg/lkp-tests.git/p >>> lain/sbin/make.cross -O ~/bin/make.cross chmod +x >>> ~/bin/make.cross >>> # save the attached .config to linux build tree >>> make.cross ARCH=powerpc >>> >>> All errors (new ones prefixed by >>): >>> from include/linux/of.h:21, >>> >>> from drivers/media/platform/atmel/atmel-isc.c:27: >>> drivers/media/platform/atmel/atmel-isc.c: In function >>> 'isc_clk_enable': >>> include/linux/kernel.h:824:48: error: initialization from incompatible >>> pointer type [-Werror=incompatible-pointer-types]> >>> const typeof( ((type *)0)->member ) *__mptr = (ptr); \ >>> >>> ^ >>> >>> drivers/media/platform/atmel/atmel-isc.c:55:24: note: in expansion of >>> macro 'container_of'> >>> #define to_isc_clk(hw) container_of(hw, struct isc_clk, hw) >>> >>> ^ >>> >>> drivers/media/platform/atmel/atmel-isc.c:247:28: note: in expansion of >>> macro 'to_isc_clk'> >>> struct isc_clk *isc_clk = to_isc_clk(hw); >>> >>> ^ >>> >>> include/linux/kernel.h:824:48: note: (near initialization for >>> 'isc_clk') >>> >>> const typeof( ((type *)0)->member ) *__mptr = (ptr); \ >>> >>> ^ >>> >>> drivers/media/platform/atmel/atmel-isc.c:55:24: note: in expansion of >>> macro 'container_of'> >>> #define to_isc_clk(hw) container_of(hw, struct isc_clk, hw) >>> >>> ^ >>> >>> drivers/media/platform/atmel/atmel-isc.c:247:28: note: in expansion of >>> macro 'to_isc_clk'> >>> struct isc_clk *isc_clk = to_isc_clk(hw); >>> >>> ^ >>> >>> drivers/media/platform/atmel/atmel-isc.c: In function >>> 'isc_clk_disable': >>> include/linux/kernel.h:824:48: error: initialization from incompatible >>> pointer type [-Werror=incompatible-pointer-types]> >>> const typeof( ((type *)0)->member ) *__mptr = (ptr); \ >>> >>> ^ >>> >>> drivers/media/platform/atmel/atmel-isc.c:55:24: note: in expansion of >>> macro 'container_of'> >>> #define to_isc_clk(hw) container_of(hw, struct isc_clk, hw) >>> >>> ^ >>> >>> drivers/media/platform/atmel/atmel-isc.c:280:28: note: in expansion of >>> macro 'to_isc_clk'> >>> struct isc_clk *isc_clk = to_isc_clk(hw); >>> >>> ^ >>> >>> include/linux/kernel.h:824:48: note: (near initialization for >>> 'isc_clk') >>> >>> const typeof( ((type *)0)->member ) *__mptr = (ptr); \ >>> >>> ^ >>> >>> drivers/media/platform/atmel/atmel-isc.c:55:24: note: in expansion of >>> macro 'container_of'> >>> #define to_isc_clk(hw) container_of(hw, struct isc_clk, hw) >>> >>> ^ >>> >>> drivers/media/platform/atmel/atmel-isc.c:280:28: note: in expansion of >>> macro 'to_isc_clk'> >>> struct isc_clk *isc_clk = to_isc_clk(hw); >>> >>> ^ >>> >>> drivers/media/platform/atmel/atmel-isc.c: In function >>> 'isc_clk_is_enabled': >>> include/linux/kernel.h:824:48: error: initialization from incompatible >>> pointer type [-Werror=incompatible-pointer-types]> >>> const typeof( ((type *)0)->member ) *__mptr = (ptr); \ >>> >>> ^ >>> >>> drivers/media/platform/atmel/atmel-isc.c:55:24: note: in expansion of >>> macro 'container_of'> >>> #define to_isc_clk(hw) container_of(hw, struct isc_clk, hw) >>> >>> ^ >>> >>> drivers/media/platform/atmel/atmel-isc.c:295:28: note: in expansion of >>> macro 'to_isc_clk'> >>> struct isc_clk *isc_clk = to_isc_clk(hw); >>> >>> ^ >>> >>> include/linux/kernel.h:824:48: note: (near initialization for >>> 'isc_clk') >>> >>> const typeof( ((type *)0)->member ) *__mptr = (ptr); \ >>> >>> ^ >>> >>> drivers/media/platform/atmel/atmel-isc.c:55:24: note: in expansion of >>> macro 'container_of'> >>> #define to_isc_clk(hw) container_of(hw, struct isc_clk, hw) >>> >>> ^ >>> >>> drivers/media/platform/atmel/atmel-isc.c:295:28: note: in expansion of >>> macro 'to_isc_clk'> >>> struct isc_clk *isc_clk = to_isc_clk(hw); >>> >>> ^ >>> >>> drivers/media/platform/atmel/atmel-isc.c: In function >>> 'isc_clk_recalc_rate': include/linux/kernel.h:824:48: error: >>> initialization from incompatible pointer type >>> [-Werror=incompatible-pointer-types]> >>> const typeof( ((type *)0)->member ) *__mptr = (ptr); \ >>> >>> ^ >>> >>> drivers/media/platform/atmel/atmel-isc.c:55:24: note: in expansion of >>> macro 'container_of'> >>> #define to_isc_clk(hw) container_of(hw, struct isc_clk, hw) >>> >>> ^ >>> >>> drivers/media/platform/atmel/atmel-isc.c:309:28: note: in expansion of >>> macro 'to_isc_clk'> >>> struct isc_clk *isc_clk = to_isc_clk(hw); >>> >>> ^ >>> >>> include/linux/kernel.h:824:48: note: (near initialization for >>> 'isc_clk') >>> >>> const typeof( ((type *)0)->member ) *__mptr = (ptr); \ >>> >>> ^ >>> >>> drivers/media/platform/atmel/atmel-isc.c:55:24: note: in expansion of >>> macro 'container_of'> >>> #define to_isc_clk(hw) container_of(hw, struct isc_clk, hw) >>> >>> ^ >>> >>> drivers/media/platform/atmel/atmel-isc.c:309:28: note: in expansion of >>> macro 'to_isc_clk'> >>> struct isc_clk *isc_clk = to_isc_clk(hw); >>> >>> ^ >>> >>> drivers/media/platform/atmel/atmel-isc.c: At top level: >>> drivers/media/platform/atmel/atmel-isc.c:315:14: warning: 'struct >>> clk_rate_request' declared inside parameter list> >>> struct clk_rate_request *req) >>> >>> ^ >>> >>> drivers/media/platform/atmel/atmel-isc.c:315:14: warning: its scope is >>> only this definition or declaration, which is probably not what you >>> want drivers/media/platform/atmel/atmel-isc.c: In function >>> 'isc_clk_determine_rate': >>> drivers/media/platform/atmel/atmel-isc.c:324:18: error: implicit >>> declaration of function 'clk_hw_get_num_parents' >>> [-Werror=implicit-function-declaration]> >>> for (i = 0; i < clk_hw_get_num_parents(hw); i++) { >>> >>> ^ >>> >>> drivers/media/platform/atmel/atmel-isc.c:325:12: error: implicit >>> declaration of function 'clk_hw_get_parent_by_index' >>> [-Werror=implicit-function-declaration]> >>> parent = clk_hw_get_parent_by_index(hw, i); >>> >>> ^ >>> >>> drivers/media/platform/atmel/atmel-isc.c:325:10: warning: assignment >>> makes pointer from integer without a cast [-Wint-conversion]> >>> parent = clk_hw_get_parent_by_index(hw, i); >>> >>> ^ >>> >>> drivers/media/platform/atmel/atmel-isc.c:329:17: error: implicit >>> declaration of function 'clk_hw_get_rate' >>> [-Werror=implicit-function-declaration]> >>> parent_rate = clk_hw_get_rate(parent); >>> >>> ^ >>> >>> In file included from include/linux/list.h:8:0, >>> >>> from include/linux/kobject.h:20, >>> from include/linux/of.h:21, >>>>> >>> from drivers/media/platform/atmel/atmel-isc.c:27: >>>>> drivers/media/platform/atmel/atmel-isc.c:335:22: error: dereferencing >>>>> pointer to incomplete type 'struct clk_rate_request'>>> >>> tmp_diff = abs(req->rate - tmp_rate); >>> >>> ^ >>> >>> include/linux/kernel.h:222:38: note: in definition of macro >>> '__abs_choose_expr'> >>> __builtin_types_compatible_p(typeof(x), signed type) || \ >>> >>> ^ >>> >>> drivers/media/platform/atmel/atmel-isc.c:335:15: note: in expansion of >>> macro 'abs'> >>> tmp_diff = abs(req->rate - tmp_rate); >>> >>> ^ >>> >>> include/linux/kernel.h:216:3: error: first argument to >>> '__builtin_choose_expr' not a constant> >>> __builtin_choose_expr( \ >>> ^ >>> >>> include/linux/kernel.h:224:54: note: in definition of macro >>> '__abs_choose_expr'> >>> ({ signed type __x = (x); __x < 0 ? -__x : __x; }), other) >>> >>> ^ >>> >>> include/linux/kernel.h:212:3: note: in expansion of macro >>> '__abs_choose_expr'> >>> __abs_choose_expr(x, long, \ >>> ^ >>> >>> include/linux/kernel.h:213:3: note: in expansion of macro >>> '__abs_choose_expr'> >>> __abs_choose_expr(x, int, \ >>> ^ >>> >>> include/linux/kernel.h:214:3: note: in expansion of macro >>> '__abs_choose_expr'> >>> __abs_choose_expr(x, short, \ >>> ^ >>> >>> include/linux/kernel.h:215:3: note: in expansion of macro >>> '__abs_choose_expr'> >>> __abs_choose_expr(x, char, \ >>> ^ >>> >>> drivers/media/platform/atmel/atmel-isc.c:335:15: note: in expansion of >>> macro 'abs'> >>> tmp_diff = abs(req->rate - tmp_rate); >>> >>> ^ >>> >>> include/linux/kernel.h:221:43: error: first argument to >>> '__builtin_choose_expr' not a constant> >>> #define __abs_choose_expr(x, type, other) __builtin_choose_expr( \ >>> >>> ^ >>> >>> include/linux/kernel.h:224:54: note: in definition of macro >>> '__abs_choose_expr'> >>> ({ signed type __x = (x); __x < 0 ? -__x : __x; }), other) >>> >>> ^ >>> >>> include/linux/kernel.h:212:3: note: in expansion of macro >>> '__abs_choose_expr'> >>> __abs_choose_expr(x, long, \ >>> ^ >>> >>> include/linux/kernel.h:213:3: note: in expansion of macro >>> '__abs_choose_expr'> >>> __abs_choose_expr(x, int, \ >>> ^ >>> >>> include/linux/kernel.h:214:3: note: in expansion of macro >>> '__abs_choose_expr'> >>> __abs_choose_expr(x, short, \ >>> ^ >>> >>> include/linux/kernel.h:215:3: note: in expansion of macro >>> '__abs_choose_expr'> >>> __abs_choose_expr(x, char, \ >>> ^ >>> >>> drivers/media/platform/atmel/atmel-isc.c:335:15: note: in expansion of >>> macro 'abs'> >>> tmp_diff = abs(req->rate - tmp_rate); >>> >>> ^ >>> >>> include/linux/kernel.h:221:43: error: first argument to >>> '__builtin_choose_expr' not a constant> >>> #define __abs_choose_expr(x, type, other) __builtin_choose_expr( \ >>> >>> ^ >>> >>> include/linux/kernel.h:224:54: note: in definition of macro >>> '__abs_choose_expr'> >>> ({ signed type __x = (x); __x < 0 ? -__x : __x; }), other) >>> >>> ^ >>> >>> include/linux/kernel.h:212:3: note: in expansion of macro >>> '__abs_choose_expr'> >>> __abs_choose_expr(x, long, \ >>> ^ >>> >>> include/linux/kernel.h:213:3: note: in expansion of macro >>> '__abs_choose_expr'> >>> __abs_choose_expr(x, int, \ >>> ^ >>> >>> include/linux/kernel.h:214:3: note: in expansion of macro >>> '__abs_choose_expr'> >>> __abs_choose_expr(x, short, \ >>> ^ >>> >>> drivers/media/platform/atmel/atmel-isc.c:335:15: note: in expansion of >>> macro 'abs'> >>> tmp_diff = abs(req->rate - tmp_rate); >>> >>> ^ >>> >>> include/linux/kernel.h:221:43: error: first argument to >>> '__builtin_choose_expr' not a constant> >>> #define __abs_choose_expr(x, type, other) __builtin_choose_expr( \ >>> >>> ^ >>> >>> include/linux/kernel.h:224:54: note: in definition of macro >>> '__abs_choose_expr'> >>> ({ signed type __x = (x); __x < 0 ? -__x : __x; }), other) >>> >>> ^ >>> >>> include/linux/kernel.h:212:3: note: in expansion of macro >>> '__abs_choose_expr'> >>> __abs_choose_expr(x, long, \ >>> ^ >>> >>> include/linux/kernel.h:213:3: note: in expansion of macro >>> '__abs_choose_expr'> >>> __abs_choose_expr(x, int, \ >>> ^ >>> >>> drivers/media/platform/atmel/atmel-isc.c:335:15: note: in expansion of >>> macro 'abs'> >>> tmp_diff = abs(req->rate - tmp_rate); >>> >>> ^ >>> >>> include/linux/kernel.h:221:43: error: first argument to >>> '__builtin_choose_expr' not a constant> >>> #define __abs_choose_expr(x, type, other) __builtin_choose_expr( \ >>> >>> ^ >>> >>> include/linux/kernel.h:224:54: note: in definition of macro >>> '__abs_choose_expr'> >>> ({ signed type __x = (x); __x < 0 ? -__x : __x; }), other) >>> >>> ^ >>> >>> include/linux/kernel.h:212:3: note: in expansion of macro >>> '__abs_choose_expr'> >>> __abs_choose_expr(x, long, \ >>> ^ >>> >>> drivers/media/platform/atmel/atmel-isc.c:335:15: note: in expansion of >>> macro 'abs'> >>> tmp_diff = abs(req->rate - tmp_rate); >>> >>> ^ >>> >>> include/linux/kernel.h:221:43: error: first argument to >>> '__builtin_choose_expr' not a constant> >>> #define __abs_choose_expr(x, type, other) __builtin_choose_expr( \ >>> >>> ^ >>> >>> include/linux/kernel.h:211:16: note: in expansion of macro >>> '__abs_choose_expr'> >>> #define abs(x) __abs_choose_expr(x, long long, \ >>> >>> ^ >>> >>> drivers/media/platform/atmel/atmel-isc.c:335:15: note: in expansion of >>> macro 'abs'> >>> tmp_diff = abs(req->rate - tmp_rate); >>> >>> ^ >>> >>> In file included from include/linux/printk.h:277:0, >>> >>> from include/linux/kernel.h:13, >>> from include/linux/list.h:8, >>> from include/linux/kobject.h:20, >>> from include/linux/of.h:21, >>>>> >>> from drivers/media/platform/atmel/atmel-isc.c:27: >>>>> drivers/media/platform/atmel/atmel-isc.c:354:4: error: implicit >>>>> declaration of function '__clk_get_name' >>>>> [-Werror=implicit-function-declaration]>>> >>> __clk_get_name((req->best_parent_hw)->clk), >>> ^ >>> >>> include/linux/dynamic_debug.h:79:10: note: in definition of macro >>> 'dynamic_pr_debug'> >>> ##__VA_ARGS__); \ >>> >>> ^ >>> >>> drivers/media/platform/atmel/atmel-isc.c:352:2: note: in expansion of >>> macro 'pr_debug'> >>> pr_debug("ISC CLK: %s, best_rate = %ld, parent clk: %s @ %ld\n", >>> ^ >>> >>> In file included from include/linux/list.h:8:0, >>> >>> from include/linux/kobject.h:20, >>> from include/linux/of.h:21, >>> >>> from drivers/media/platform/atmel/atmel-isc.c:27: >>> drivers/media/platform/atmel/atmel-isc.c: In function >>> 'isc_clk_set_parent': >>> include/linux/kernel.h:824:48: error: initialization from incompatible >>> pointer type [-Werror=incompatible-pointer-types]> >>> const typeof( ((type *)0)->member ) *__mptr = (ptr); \ >>> >>> ^ >>> >>> drivers/media/platform/atmel/atmel-isc.c:55:24: note: in expansion of >>> macro 'container_of'> >>> #define to_isc_clk(hw) container_of(hw, struct isc_clk, hw) >>> >>> ^ >>> >>> drivers/media/platform/atmel/atmel-isc.c:367:28: note: in expansion of >>> macro 'to_isc_clk'> >>> struct isc_clk *isc_clk = to_isc_clk(hw); >>> >>> ^ >>> >>> include/linux/kernel.h:824:48: note: (near initialization for >>> 'isc_clk') >>> >>> const typeof( ((type *)0)->member ) *__mptr = (ptr); \ >>> >>> ^ >>> >>> drivers/media/platform/atmel/atmel-isc.c:55:24: note: in expansion of >>> macro 'container_of'> >>> #define to_isc_clk(hw) container_of(hw, struct isc_clk, hw) >>> >>> ^ >>> >>> drivers/media/platform/atmel/atmel-isc.c:367:28: note: in expansion of >>> macro 'to_isc_clk'> >>> struct isc_clk *isc_clk = to_isc_clk(hw); >>> >>> ^ >>> >>> drivers/media/platform/atmel/atmel-isc.c: In function >>> 'isc_clk_get_parent': >>> include/linux/kernel.h:824:48: error: initialization from incompatible >>> pointer type [-Werror=incompatible-pointer-types]> >>> const typeof( ((type *)0)->member ) *__mptr = (ptr); \ >>> >>> ^ >>> >>> drivers/media/platform/atmel/atmel-isc.c:55:24: note: in expansion of >>> macro 'container_of'> >>> #define to_isc_clk(hw) container_of(hw, struct isc_clk, hw) >>> >>> ^ >>> >>> drivers/media/platform/atmel/atmel-isc.c:379:28: note: in expansion of >>> macro 'to_isc_clk'> >>> struct isc_clk *isc_clk = to_isc_clk(hw); >>> >>> ^ >>> >>> include/linux/kernel.h:824:48: note: (near initialization for >>> 'isc_clk') >>> >>> const typeof( ((type *)0)->member ) *__mptr = (ptr); \ >>> >>> ^ >>> >>> drivers/media/platform/atmel/atmel-isc.c:55:24: note: in expansion of >>> macro 'container_of'> >>> #define to_isc_clk(hw) container_of(hw, struct isc_clk, hw) >>> >>> ^ >>> >>> drivers/media/platform/atmel/atmel-isc.c:379:28: note: in expansion of >>> macro 'to_isc_clk'> >>> struct isc_clk *isc_clk = to_isc_clk(hw); >>> >>> ^ >>> >>> drivers/media/platform/atmel/atmel-isc.c: In function >>> 'isc_clk_set_rate': >>> include/linux/kernel.h:824:48: error: initialization from incompatible >>> pointer type [-Werror=incompatible-pointer-types]> >>> const typeof( ((type *)0)->member ) *__mptr = (ptr); \ >>> >>> ^ >>> >>> drivers/media/platform/atmel/atmel-isc.c:55:24: note: in expansion of >>> macro 'container_of'> >>> #define to_isc_clk(hw) container_of(hw, struct isc_clk, hw) >>> >>> ^ >>> >>> drivers/media/platform/atmel/atmel-isc.c:388:28: note: in expansion of >>> macro 'to_isc_clk'> >>> struct isc_clk *isc_clk = to_isc_clk(hw); >>> >>> ^ >>> >>> include/linux/kernel.h:824:48: note: (near initialization for >>> 'isc_clk') >>> >>> const typeof( ((type *)0)->member ) *__mptr = (ptr); \ >>> >>> ^ >>> >>> drivers/media/platform/atmel/atmel-isc.c:55:24: note: in expansion of >>> macro 'container_of'> >>> #define to_isc_clk(hw) container_of(hw, struct isc_clk, hw) >>> >>> ^ >>> >>> drivers/media/platform/atmel/atmel-isc.c:388:28: note: in expansion of >>> macro 'to_isc_clk'> >>> struct isc_clk *isc_clk = to_isc_clk(hw); >>> >>> ^ >>> >>> drivers/media/platform/atmel/atmel-isc.c: At top level: >>> drivers/media/platform/atmel/atmel-isc.c:403:21: error: variable >>> 'isc_clk_ops' has initializer but incomplete type> >>> static const struct clk_ops isc_clk_ops = { >>> >>> ^ >>> >>> drivers/media/platform/atmel/atmel-isc.c:404:2: error: unknown field >>> 'enable' specified in initializer> >>> .enable = isc_clk_enable, >>> ^ >>> >>> drivers/media/platform/atmel/atmel-isc.c:404:13: warning: excess >>> elements in struct initializer> >>> .enable = isc_clk_enable, >>> >>> ^ >>> >>> drivers/media/platform/atmel/atmel-isc.c:404:13: note: (near >>> initialization for 'isc_clk_ops') >>> drivers/media/platform/atmel/atmel-isc.c:405:2: error: unknown field >>> 'disable' specified in initializer> >>> .disable = isc_clk_disable, >>> ^ >>> >>> drivers/media/platform/atmel/atmel-isc.c:405:13: warning: excess >>> elements in struct initializer> >>> .disable = isc_clk_disable, >>> >>> ^ >>> >>> drivers/media/platform/atmel/atmel-isc.c:405:13: note: (near >>> initialization for 'isc_clk_ops') >>> drivers/media/platform/atmel/atmel-isc.c:406:2: error: unknown field >>> 'is_enabled' specified in initializer> >>> .is_enabled = isc_clk_is_enabled, >>> ^ >>> >>> drivers/media/platform/atmel/atmel-isc.c:406:16: warning: excess >>> elements in struct initializer> >>> .is_enabled = isc_clk_is_enabled, >>> >>> ^ >>> >>> drivers/media/platform/atmel/atmel-isc.c:406:16: note: (near >>> initialization for 'isc_clk_ops') >>> drivers/media/platform/atmel/atmel-isc.c:407:2: error: unknown field >>> 'recalc_rate' specified in initializer> >>> .recalc_rate = isc_clk_recalc_rate, >>> ^ >>> >>> drivers/media/platform/atmel/atmel-isc.c:407:17: warning: excess >>> elements in struct initializer> >>> .recalc_rate = isc_clk_recalc_rate, >>> >>> ^ >>> >>> vim +335 drivers/media/platform/atmel/atmel-isc.c >>> >>> 323 >>> 324 for (i = 0; i < clk_hw_get_num_parents(hw); i++) { >>> 325 parent = clk_hw_get_parent_by_index(hw, i); >>> 326 if (!parent) >>> 327 continue; >>> 328 >>> >>> > 329 parent_rate = clk_hw_get_rate(parent); >>> > >>> 330 if (!parent_rate) >>> 331 continue; >>> 332 >>> 333 for (div = 1; div < ISC_CLK_MAX_DIV + 2; div++) { >>> 334 tmp_rate = DIV_ROUND_CLOSEST(parent_rate, div); >>> >>> > 335 tmp_diff = abs(req->rate - tmp_rate); >>> > >>> 336 >>> 337 if (best_diff < 0 || best_diff > tmp_diff) { >>> 338 best_rate = tmp_rate; >>> 339 best_diff = tmp_diff; >>> 340 req->best_parent_rate = parent_rate; >>> 341 req->best_parent_hw = parent; >>> 342 } >>> 343 >>> 344 if (!best_diff || tmp_rate < req->rate) >>> 345 break; >>> 346 } >>> 347 >>> 348 if (!best_diff) >>> 349 break; >>> 350 } >>> 351 >>> 352 pr_debug("ISC CLK: %s, best_rate = %ld, parent clk: %s @ > %ld\n", >>> 353 __func__, best_rate, >>> >>> > 354 __clk_get_name((req->best_parent_hw)->clk), >>> > >>> 355 req->best_parent_rate); >>> 356 >>> 357 if (best_rate < 0) >>> >>> --- >>> 0-DAY kernel test infrastructure Open Source Technology >>> Center https://lists.01.org/pipermail/kbuild-all Intel >>> Corporation >