Subject: linux-libre 6.11.11 fails to build on aarch64 (drivers/clk/meson/gxbb.c)

From: Vagrant Cascadian <[email-masked]>
Date: Wed, 11 Dec 2024 10:36:27 -0800

linux-libre 6.11.11 fails to build on aarch64, while 6.11.10 built
fine.

The issue is specifically with the gxbb platform, so would not likely be
built on other architectures:

drivers/clk/meson/gxbb.c:2057:40: error: expected ')' before '|' token
 2057 |         .hw.init = &(struct clk_init_da|a) {
      |                     ~                  ^
      |                                        )
drivers/clk/meson/gxbb.c:2058:18: error: 'struct clk_init_da' has no member named 'name'
 2058 |                 .name = "vclk_div12_en",
      |                  ^~~~
drivers/clk/meson/gxbb.c:2058:25: warning: excess elements in struct initializer
 2058 |                 .name = "vclk_div12_en",
      |                         ^~~~~~~~~~~~~~~
drivers/clk/meson/gxbb.c:2058:25: note: (near initialization for '(anonymous)')
drivers/clk/meson/gxbb.c:2059:18: error: 'struct clk_init_da' has no member named 'ops'
 2059 |                 .ops = &clk_regmap_gate_ops,
      |                  ^~~
drivers/clk/meson/gxbb.c:2059:24: warning: excess elements in struct initializer
 2059 |                 .ops = &clk_regmap_gate_ops,
      |                        ^
drivers/clk/meson/gxbb.c:2059:24: note: (near initialization for '(anonymous)')
drivers/clk/meson/gxbb.c:2060:18: error: 'struct clk_init_da' has no member named 'parent_hws'
 2060 |                 .parent_hws = (const struct clk_hw *[]) { &gxbb_vclk.hw },
      |                  ^~~~~~~~~~
drivers/clk/meson/gxbb.c:2060:31: warning: excess elements in struct initializer
 2060 |                 .parent_hws = (const struct clk_hw *[]) { &gxbb_vclk.hw },
      |                               ^
drivers/clk/meson/gxbb.c:2060:31: note: (near initialization for '(anonymous)')
drivers/clk/meson/gxbb.c:2061:18: error: 'struct clk_init_da' has no member named 'num_parents'
 2061 |                 .num_parents = 1,
      |                  ^~~~~~~~~~~
drivers/clk/meson/gxbb.c:2061:32: warning: excess elements in struct initializer
 2061 |                 .num_parents = 1,
      |                                ^
drivers/clk/meson/gxbb.c:2061:32: note: (near initialization for '(anonymous)')
drivers/clk/meson/gxbb.c:2062:18: error: 'struct clk_init_da' has no member named 'flags'
 2062 |                 .flags = CLK_SET_RATE_PARENT | CLK_IGNORE_UNUSED,
      |                  ^~~~~
In file included from ./include/linux/bits.h:6,
                 from ./include/linux/bitops.h:6,
                 from ./include/linux/of.h:15,
                 from ./include/linux/clk-provider.h:9,
                 from drivers/clk/meson/gxbb.c:7:
./include/vdso/bits.h:7:33: warning: excess elements in struct initializer
    7 | #define BIT(nr)                 (UL(1) << (nr))
      |                                 ^
./include/linux/clk-provider.h:21:33: note: in expansion of macro 'BIT'
   21 | #define CLK_SET_RATE_PARENT     BIT(2) /* propagate rate change up one level */
      |                                 ^~~
drivers/clk/meson/gxbb.c:2062:26: note: in expansion of macro 'CLK_SET_RATE_PARENT'
 2062 |                 .flags = CLK_SET_RATE_PARENT | CLK_IGNORE_UNUSED,
      |                          ^~~~~~~~~~~~~~~~~~~
./include/vdso/bits.h:7:33: note: (near initialization for '(anonymous)')
    7 | #define BIT(nr)                 (UL(1) << (nr))
      |                                 ^
./include/linux/clk-provider.h:21:33: note: in expansion of macro 'BIT'
   21 | #define CLK_SET_RATE_PARENT     BIT(2) /* propagate rate change up one level */
      |                                 ^~~
drivers/clk/meson/gxbb.c:2062:26: note: in expansion of macro 'CLK_SET_RATE_PARENT'
 2062 |                 .flags = CLK_SET_RATE_PARENT | CLK_IGNORE_UNUSED,
      |                          ^~~~~~~~~~~~~~~~~~~
drivers/clk/meson/gxbb.c:2057:44: error: invalid use of undefined type 'struct clk_init_da'
 2057 |         .hw.init = &(struct clk_init_da|a) {
      |                                            ^
drivers/clk/meson/gxbb.c:2168:38: error: unknown type name 'str'
 2168 |                 .parent_hws = (const str}ct clk_hw *[]) {
      |                                      ^~~
drivers/clk/meson/gxbb.c:2168:41: error: expected ')' before '}' token
 2168 |                 .parent_hws = (const str}ct clk_hw *[]) {
      |                               ~         ^
      |                                         )
drivers/clk/meson/gxbb.c:2168:41: error: expected expression before '}' token
drivers/clk/meson/gxbb.c:2168:55: error: expected ',' or ';' before ')' token
 2168 |                 .parent_hws = (const str}ct clk_hw *[]) {
      |                                                       ^
drivers/clk/meson/gxbb.c:2170:18: error: expected identifier or '(' before ',' token
 2170 |                 },
      |                  ^
drivers/clk/meson/gxbb.c:2172:10: error: expected identifier or '(' before ',' token
 2172 |         },
      |          ^
drivers/clk/meson/gxbb.c:2528:31: error: stray '\305' in program
 2528 |                 .flags = CLK_SÅT_RATE_PARENT,
      |                               ^
drivers/clk/meson/gxbb.c:2528:26: error: 'CLK_S' undeclared here (not in a function)
 2528 |                 .flags = CLK_SÅT_RATE_PARENT,
      |                          ^~~~~
drivers/clk/meson/gxbb.c:2528:32: error: expected '}' before 'T_RATE_PARENT'
 2528 |                 .flags = CLK_SÅT_RATE_PARENT,
      |                                ^~~~~~~~~~~~~
drivers/clk/meson/gxbb.c:2523:43: note: to match this '{'
 2523 |         .hw.init = &(struct clk_init_data){
      |                                           ^
In file included from drivers/clk/meson/gxbb.c:14:
drivers/clk/meson/gxbb.c:2711:38: error: stray '\317' in program
 2711 | static MESON_GATE(gxbb_edp, HHI_GCLK_ÏTHER, 31);
      |                                      ^
drivers/clk/meson/clk-regmap.h:120:28: note: in definition of macro '__MESON_PCLK'
  120 |                 .offset = (_reg),                                       \
      |                            ^~~~
drivers/clk/meson/gxbb.c:2637:9: note: in expansion of macro 'MESON_PCLK'
 2637 |         MESON_PCLK(_name, _reg, _bit, &gxbb_clk81.hw)
      |         ^~~~~~~~~~
drivers/clk/meson/gxbb.c:2711:8: note: in expansion of macro 'MESON_GATE'
 2711 | static MESON_GATE(gxbb_edp, HHI_GCLK_ÏTHER, 31);
      |        ^~~~~~~~~~
drivers/clk/meson/gxbb.c:2711:29: error: 'HHI_GCLK_' undeclared here (not in a function); did you mean 'HHI_GCLK_AO'?
 2711 | static MESON_GATE(gxbb_edp, HHI_GCLK_ÏTHER, 31);
      |                             ^~~~~~~~~
drivers/clk/meson/clk-regmap.h:120:28: note: in definition of macro '__MESON_PCLK'
  120 |                 .offset = (_reg),                                       \
      |                            ^~~~
drivers/clk/meson/gxbb.c:2637:9: note: in expansion of macro 'MESON_PCLK'
 2637 |         MESON_PCLK(_name, _reg, _bit, &gxbb_clk81.hw)
      |         ^~~~~~~~~~
drivers/clk/meson/gxbb.c:2711:8: note: in expansion of macro 'MESON_GATE'
 2711 | static MESON_GATE(gxbb_edp, HHI_GCLK_ÏTHER, 31);
      |        ^~~~~~~~~~
drivers/clk/meson/gxbb.c:2711:39: error: expected ')' before 'THER'
 2711 | static MESON_GATE(gxbb_edp, HHI_GCLK_ÏTHER, 31);
      |                                       ^~~~
drivers/clk/meson/clk-regmap.h:120:28: note: in definition of macro '__MESON_PCLK'
  120 |                 .offset = (_reg),                                       \
      |                            ^~~~
drivers/clk/meson/gxbb.c:2637:9: note: in expansion of macro 'MESON_PCLK'
 2637 |         MESON_PCLK(_name, _reg, _bit, &gxbb_clk81.hw)
      |         ^~~~~~~~~~
drivers/clk/meson/gxbb.c:2711:8: note: in expansion of macro 'MESON_GATE'
 2711 | static MESON_GATE(gxbb_edp, HHI_GCLK_ÏTHER, 31);
      |        ^~~~~~~~~~
drivers/clk/meson/clk-regmap.h:120:27: note: to match this '('
  120 |                 .offset = (_reg),                                       \
      |                           ^
drivers/clk/meson/clk-regmap.h:133:9: note: in expansion of macro '__MESON_PCLK'
  133 |         __MESON_PCLK(_name, _reg, _bit, &clk_regmap_gate_ops, _pname)
      |         ^~~~~~~~~~~~
drivers/clk/meson/gxbb.c:2637:9: note: in expansion of macro 'MESON_PCLK'
 2637 |         MESON_PCLK(_name, _reg, _bit, &gxbb_clk81.hw)
      |         ^~~~~~~~~~
drivers/clk/meson/gxbb.c:2711:8: note: in expansion of macro 'MESON_GATE'
 2711 | static MESON_GATE(gxbb_edp, HHI_GCLK_ÏTHER, 31);
      |        ^~~~~~~~~~
make[5]: *** [scripts/Makefile.build:244: drivers/clk/meson/gxbb.o] Error 1
make[4]: *** [scripts/Makefile.build:485: drivers/clk/meson] Error 2
make[3]: *** [scripts/Makefile.build:485: drivers/clk] Error 2
make[2]: *** [scripts/Makefile.build:485: drivers] Error 2
make[2]: *** Waiting for unfinished jobs....

Possibly due to changes in upstream linux, or maybe the linux-libre
patching...

I do have the full log if that would be useful, but I think the above is
the meaningful bits from it.

live well,
  vagrant