Hi all, After merging the final tree, today's linux-next build (powerpc allyesconfig) failed like this: drivers/rtc/rtc-hym8563.c:90:17: error: field 'clkout_hw' has incomplete type struct clk_hw clkout_hw; ^ In file included from include/asm-generic/bug.h:13:0, from arch/powerpc/include/asm/bug.h:127, from include/linux/bug.h:4, from include/linux/thread_info.h:11, from include/asm-generic/preempt.h:4, from arch/powerpc/include/generated/asm/preempt.h:1, from include/linux/preempt.h:18, from include/linux/spinlock.h:50, from include/linux/seqlock.h:35, from include/linux/time.h:5, from include/linux/stat.h:18, from include/linux/module.h:10, from drivers/rtc/rtc-hym8563.c:20: drivers/rtc/rtc-hym8563.c: In function 'hym8563_clkout_recalc_rate': include/linux/kernel.h:801:48: warning: initialization from incompatible pointer type [enabled by default] const typeof( ((type *)0)->member ) *__mptr = (ptr); \ ^ drivers/rtc/rtc-hym8563.c:293:35: note: in expansion of macro 'container_of' #define clkout_hw_to_hym8563(_hw) container_of(_hw, struct hym8563, clkout_hw) ^ drivers/rtc/rtc-hym8563.c:305:28: note: in expansion of macro 'clkout_hw_to_hym8563' struct hym8563 *hym8563 = clkout_hw_to_hym8563(hw); ^ include/linux/kernel.h:801:48: warning: (near initialization for 'hym8563') [enabled by default] const typeof( ((type *)0)->member ) *__mptr = (ptr); \ ^ drivers/rtc/rtc-hym8563.c:293:35: note: in expansion of macro 'container_of' #define clkout_hw_to_hym8563(_hw) container_of(_hw, struct hym8563, clkout_hw) ^ drivers/rtc/rtc-hym8563.c:305:28: note: in expansion of macro 'clkout_hw_to_hym8563' struct hym8563 *hym8563 = clkout_hw_to_hym8563(hw); ^ drivers/rtc/rtc-hym8563.c: In function 'hym8563_clkout_set_rate': include/linux/kernel.h:801:48: warning: initialization from incompatible pointer type [enabled by default] const typeof( ((type *)0)->member ) *__mptr = (ptr); \ ^ drivers/rtc/rtc-hym8563.c:293:35: note: in expansion of macro 'container_of' #define clkout_hw_to_hym8563(_hw) container_of(_hw, struct hym8563, clkout_hw) ^ drivers/rtc/rtc-hym8563.c:331:28: note: in expansion of macro 'clkout_hw_to_hym8563' struct hym8563 *hym8563 = clkout_hw_to_hym8563(hw); ^ include/linux/kernel.h:801:48: warning: (near initialization for 'hym8563') [enabled by default] const typeof( ((type *)0)->member ) *__mptr = (ptr); \ ^ drivers/rtc/rtc-hym8563.c:293:35: note: in expansion of macro 'container_of' #define clkout_hw_to_hym8563(_hw) container_of(_hw, struct hym8563, clkout_hw) ^ drivers/rtc/rtc-hym8563.c:331:28: note: in expansion of macro 'clkout_hw_to_hym8563' struct hym8563 *hym8563 = clkout_hw_to_hym8563(hw); ^ drivers/rtc/rtc-hym8563.c: In function 'hym8563_clkout_control': include/linux/kernel.h:801:48: warning: initialization from incompatible pointer type [enabled by default] const typeof( ((type *)0)->member ) *__mptr = (ptr); \ ^ drivers/rtc/rtc-hym8563.c:293:35: note: in expansion of macro 'container_of' #define clkout_hw_to_hym8563(_hw) container_of(_hw, struct hym8563, clkout_hw) ^ drivers/rtc/rtc-hym8563.c:352:28: note: in expansion of macro 'clkout_hw_to_hym8563' struct hym8563 *hym8563 = clkout_hw_to_hym8563(hw); ^ include/linux/kernel.h:801:48: warning: (near initialization for 'hym8563') [enabled by default] const typeof( ((type *)0)->member ) *__mptr = (ptr); \ ^ drivers/rtc/rtc-hym8563.c:293:35: note: in expansion of macro 'container_of' #define clkout_hw_to_hym8563(_hw) container_of(_hw, struct hym8563, clkout_hw) ^ drivers/rtc/rtc-hym8563.c:352:28: note: in expansion of macro 'clkout_hw_to_hym8563' struct hym8563 *hym8563 = clkout_hw_to_hym8563(hw); ^ drivers/rtc/rtc-hym8563.c: In function 'hym8563_clkout_is_prepared': include/linux/kernel.h:801:48: warning: initialization from incompatible pointer type [enabled by default] const typeof( ((type *)0)->member ) *__mptr = (ptr); \ ^ drivers/rtc/rtc-hym8563.c:293:35: note: in expansion of macro 'container_of' #define clkout_hw_to_hym8563(_hw) container_of(_hw, struct hym8563, clkout_hw) ^ drivers/rtc/rtc-hym8563.c:379:28: note: in expansion of macro 'clkout_hw_to_hym8563' struct hym8563 *hym8563 = clkout_hw_to_hym8563(hw); ^ include/linux/kernel.h:801:48: warning: (near initialization for 'hym8563') [enabled by default] const typeof( ((type *)0)->member ) *__mptr = (ptr); \ ^ drivers/rtc/rtc-hym8563.c:293:35: note: in expansion of macro 'container_of' #define clkout_hw_to_hym8563(_hw) container_of(_hw, struct hym8563, clkout_hw) ^ drivers/rtc/rtc-hym8563.c:379:28: note: in expansion of macro 'clkout_hw_to_hym8563' struct hym8563 *hym8563 = clkout_hw_to_hym8563(hw); ^ drivers/rtc/rtc-hym8563.c: At top level: drivers/rtc/rtc-hym8563.c:389:14: error: variable 'hym8563_clkout_ops' has initializer but incomplete type const struct clk_ops hym8563_clkout_ops = { ^ drivers/rtc/rtc-hym8563.c:390:2: error: unknown field 'prepare' specified in initializer .prepare = hym8563_clkout_prepare, ^ drivers/rtc/rtc-hym8563.c:390:2: warning: excess elements in struct initializer [enabled by default] drivers/rtc/rtc-hym8563.c:390:2: warning: (near initialization for 'hym8563_clkout_ops') [enabled by default] drivers/rtc/rtc-hym8563.c:391:2: error: unknown field 'unprepare' specified in initializer .unprepare = hym8563_clkout_unprepare, ^ drivers/rtc/rtc-hym8563.c:391:2: warning: excess elements in struct initializer [enabled by default] drivers/rtc/rtc-hym8563.c:391:2: warning: (near initialization for 'hym8563_clkout_ops') [enabled by default] drivers/rtc/rtc-hym8563.c:392:2: error: unknown field 'is_prepared' specified in initializer .is_prepared = hym8563_clkout_is_prepared, ^ drivers/rtc/rtc-hym8563.c:392:2: warning: excess elements in struct initializer [enabled by default] drivers/rtc/rtc-hym8563.c:392:2: warning: (near initialization for 'hym8563_clkout_ops') [enabled by default] drivers/rtc/rtc-hym8563.c:393:2: error: unknown field 'recalc_rate' specified in initializer .recalc_rate = hym8563_clkout_recalc_rate, ^ drivers/rtc/rtc-hym8563.c:393:2: warning: excess elements in struct initializer [enabled by default] drivers/rtc/rtc-hym8563.c:393:2: warning: (near initialization for 'hym8563_clkout_ops') [enabled by default] drivers/rtc/rtc-hym8563.c:394:2: error: unknown field 'round_rate' specified in initializer .round_rate = hym8563_clkout_round_rate, ^ drivers/rtc/rtc-hym8563.c:394:2: warning: excess elements in struct initializer [enabled by default] drivers/rtc/rtc-hym8563.c:394:2: warning: (near initialization for 'hym8563_clkout_ops') [enabled by default] drivers/rtc/rtc-hym8563.c:395:2: error: unknown field 'set_rate' specified in initializer .set_rate = hym8563_clkout_set_rate, ^ drivers/rtc/rtc-hym8563.c:395:2: warning: excess elements in struct initializer [enabled by default] drivers/rtc/rtc-hym8563.c:395:2: warning: (near initialization for 'hym8563_clkout_ops') [enabled by default] drivers/rtc/rtc-hym8563.c: In function 'hym8563_clkout_register_clk': drivers/rtc/rtc-hym8563.c:403:23: error: storage size of 'init' isn't known struct clk_init_data init; ^ drivers/rtc/rtc-hym8563.c:413:15: error: 'CLK_IS_ROOT' undeclared (first use in this function) init.flags = CLK_IS_ROOT; ^ drivers/rtc/rtc-hym8563.c:413:15: note: each undeclared identifier is reported only once for each function it appears in drivers/rtc/rtc-hym8563.c:419:2: error: implicit declaration of function 'clk_register' [-Werror=implicit-function-declaration] clk = clk_register(&client->dev, &hym8563->clkout_hw); ^ drivers/rtc/rtc-hym8563.c:422:3: error: implicit declaration of function 'of_clk_add_provider' [-Werror=implicit-function-declaration] of_clk_add_provider(node, of_clk_src_simple_get, clk); ^ drivers/rtc/rtc-hym8563.c:422:29: error: 'of_clk_src_simple_get' undeclared (first use in this function) of_clk_add_provider(node, of_clk_src_simple_get, clk); ^ drivers/rtc/rtc-hym8563.c:403:23: warning: unused variable 'init' [-Wunused-variable] struct clk_init_data init; ^ Caused by commit 34ef6d7fe467 ("rtc: add hym8563 rtc-driver") from the akpm-current tree. Probably some missing include(s). I just reverted that commit for today. -- Cheers, Stephen Rothwell sfr@canb.auug.org.au