[PATCH 1/2] [media] atmel-isc: add the Image Sensor Controller code

Wu, Songjun songjun.wu at atmel.com
Mon Apr 18 19:28:28 PDT 2016



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
>



More information about the linux-arm-kernel mailing list