Subject: linux-next: build failure after merge of the pinctrl tree

From: Stephen Rothwell <[email-masked]>
Date: Wed, 9 Nov 2022 13:46:44 +1100

Hi all,

After merging the pinctrl tree, today's linux-next build (x86_64
allmodconfig) failed like this:

drivers/pinctrl/pinctrl-loongson2.c:42:29: error: field 'desc' has incomplete type
   42 |         struct pinctrl_desc desc;
      |                             ^~~~
drivers/pinctrl/pinctrl-loongson2.c:63:38: error: array type has incomplete element type 'struct pinctrl_pin_desc'
   63 | static const struct pinctrl_pin_desc loongson2_pctrl_pins[] = {
      |                                      ^~~~~~~~~~~~~~~~~~~~
drivers/pinctrl/pinctrl-loongson2.c:62:26: error: implicit declaration of function 'PINCTRL_PIN' [-Werror=implicit-function-declaration]
   62 | #define LOONGSON2_PIN(x) PINCTRL_PIN(x, "gpio"#x)
      |                          ^~~~~~~~~~~
drivers/pinctrl/pinctrl-loongson2.c:64:9: note: in expansion of macro 'LOONGSON2_PIN'
   64 |         LOONGSON2_PIN(0),  LOONGSON2_PIN(1),  LOONGSON2_PIN(2),  LOONGSON2_PIN(3),
      |         ^~~~~~~~~~~~~
drivers/pinctrl/pinctrl-loongson2.c: In function 'loongson2_pin_dbg_show':
drivers/pinctrl/pinctrl-loongson2.c:208:9: error: implicit declaration of function 'seq_printf'; did you mean 'bstr_printf'? [-Werror=implicit-function-declaration]
  208 |         seq_printf(s, " %s", dev_name(pcdev->dev));
      |         ^~~~~~~~~~
      |         bstr_printf
drivers/pinctrl/pinctrl-loongson2.c: At top level:
drivers/pinctrl/pinctrl-loongson2.c:211:21: error: variable 'loongson2_pctrl_ops' has initializer but incomplete type
  211 | static const struct pinctrl_ops loongson2_pctrl_ops = {
      |                     ^~~~~~~~~~~
drivers/pinctrl/pinctrl-loongson2.c:212:10: error: 'const struct pinctrl_ops' has no member named 'get_groups_count'
  212 |         .get_groups_count       = loongson2_get_groups_count,
      |          ^~~~~~~~~~~~~~~~
drivers/pinctrl/pinctrl-loongson2.c:212:35: error: excess elements in struct initializer [-Werror]
  212 |         .get_groups_count       = loongson2_get_groups_count,
      |                                   ^~~~~~~~~~~~~~~~~~~~~~~~~~
drivers/pinctrl/pinctrl-loongson2.c:212:35: note: (near initialization for 'loongson2_pctrl_ops')
drivers/pinctrl/pinctrl-loongson2.c:213:10: error: 'const struct pinctrl_ops' has no member named 'get_group_name'
  213 |         .get_group_name         = loongson2_get_group_name,
      |          ^~~~~~~~~~~~~~
drivers/pinctrl/pinctrl-loongson2.c:213:35: error: excess elements in struct initializer [-Werror]
  213 |         .get_group_name         = loongson2_get_group_name,
      |                                   ^~~~~~~~~~~~~~~~~~~~~~~~
drivers/pinctrl/pinctrl-loongson2.c:213:35: note: (near initialization for 'loongson2_pctrl_ops')
drivers/pinctrl/pinctrl-loongson2.c:214:10: error: 'const struct pinctrl_ops' has no member named 'get_group_pins'
  214 |         .get_group_pins         = loongson2_get_group_pins,
      |          ^~~~~~~~~~~~~~
drivers/pinctrl/pinctrl-loongson2.c:214:35: error: excess elements in struct initializer [-Werror]
  214 |         .get_group_pins         = loongson2_get_group_pins,
      |                                   ^~~~~~~~~~~~~~~~~~~~~~~~
drivers/pinctrl/pinctrl-loongson2.c:214:35: note: (near initialization for 'loongson2_pctrl_ops')
drivers/pinctrl/pinctrl-loongson2.c:215:10: error: 'const struct pinctrl_ops' has no member named 'dt_node_to_map'
  215 |         .dt_node_to_map         = pinconf_generic_dt_node_to_map_all,
      |          ^~~~~~~~~~~~~~
drivers/pinctrl/pinctrl-loongson2.c:215:35: error: excess elements in struct initializer [-Werror]
  215 |         .dt_node_to_map         = pinconf_generic_dt_node_to_map_all,
      |                                   ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
drivers/pinctrl/pinctrl-loongson2.c:215:35: note: (near initialization for 'loongson2_pctrl_ops')
drivers/pinctrl/pinctrl-loongson2.c:216:10: error: 'const struct pinctrl_ops' has no member named 'dt_free_map'
  216 |         .dt_free_map            = pinctrl_utils_free_map,
      |          ^~~~~~~~~~~
drivers/pinctrl/pinctrl-loongson2.c:216:35: error: excess elements in struct initializer [-Werror]
  216 |         .dt_free_map            = pinctrl_utils_free_map,
      |                                   ^~~~~~~~~~~~~~~~~~~~~~
drivers/pinctrl/pinctrl-loongson2.c:216:35: note: (near initialization for 'loongson2_pctrl_ops')
drivers/pinctrl/pinctrl-loongson2.c:217:10: error: 'const struct pinctrl_ops' has no member named 'pin_dbg_show'
  217 |         .pin_dbg_show           = loongson2_pin_dbg_show,
      |          ^~~~~~~~~~~~
drivers/pinctrl/pinctrl-loongson2.c:217:35: error: excess elements in struct initializer [-Werror]
  217 |         .pin_dbg_show           = loongson2_pin_dbg_show,
      |                                   ^~~~~~~~~~~~~~~~~~~~~~
drivers/pinctrl/pinctrl-loongson2.c:217:35: note: (near initialization for 'loongson2_pctrl_ops')
drivers/pinctrl/pinctrl-loongson2.c: In function 'loongson2_pmx_set_mux':
drivers/pinctrl/pinctrl-loongson2.c:223:43: error: implicit declaration of function 'pinctrl_dev_get_drvdata'; did you mean 'dev_get_drvdata'? [-Werror=implicit-function-declaration]
  223 |         struct loongson2_pinctrl *pctrl = pinctrl_dev_get_drvdata(pcdev);
      |                                           ^~~~~~~~~~~~~~~~~~~~~~~
      |                                           dev_get_drvdata
drivers/pinctrl/pinctrl-loongson2.c:223:43: error: initialization of 'struct loongson2_pinctrl *' from 'int' makes pointer from integer without a cast [-Werror=int-conversion]
In file included from include/linux/container_of.h:5,
                 from include/linux/list.h:5,
                 from include/linux/module.h:12,
                 from drivers/pinctrl/pinctrl-loongson2.c:9:
drivers/pinctrl/pinctrl-loongson2.c: In function 'loongson2_pinctrl_probe':
include/linux/build_bug.h:16:51: error: bit-field '<anonymous>' width not an integer constant
   16 | #define BUILD_BUG_ON_ZERO(e) ((int)(sizeof(struct { int:(-!!(e)); })))
      |                                                   ^
include/linux/compiler.h:232:33: note: in expansion of macro 'BUILD_BUG_ON_ZERO'
  232 | #define __must_be_array(a)      BUILD_BUG_ON_ZERO(__same_type((a), &(a)[0]))
      |                                 ^~~~~~~~~~~~~~~~~
include/linux/kernel.h:55:59: note: in expansion of macro '__must_be_array'
   55 | #define ARRAY_SIZE(arr) (sizeof(arr) / sizeof((arr)[0]) + __must_be_array(arr))
      |                                                           ^~~~~~~~~~~~~~~
drivers/pinctrl/pinctrl-loongson2.c:294:35: note: in expansion of macro 'ARRAY_SIZE'
  294 |         pctrl->desc.npins       = ARRAY_SIZE(loongson2_pctrl_pins);
      |                                   ^~~~~~~~~~
drivers/pinctrl/pinctrl-loongson2.c:296:24: error: implicit declaration of function 'devm_pinctrl_register'; did you mean 'device_register'? [-Werror=implicit-function-declaration]
  296 |         pctrl->pcdev = devm_pinctrl_register(pctrl->dev, &pctrl->desc, pctrl);
      |                        ^~~~~~~~~~~~~~~~~~~~~
      |                        device_register
drivers/pinctrl/pinctrl-loongson2.c: At top level:
drivers/pinctrl/pinctrl-loongson2.c:211:33: error: storage size of 'loongson2_pctrl_ops' isn't known
  211 | static const struct pinctrl_ops loongson2_pctrl_ops = {
      |                                 ^~~~~~~~~~~~~~~~~~~
drivers/pinctrl/pinctrl-loongson2.c:63:38: error: 'loongson2_pctrl_pins' defined but not used [-Werror=unused-variable]
   63 | static const struct pinctrl_pin_desc loongson2_pctrl_pins[] = {
      |                                      ^~~~~~~~~~~~~~~~~~~~

Caused by commit

  6c2a0a800390 ("pinctrl: pinctrl-loongson2: add pinctrl driver support")

I have used the pinctrl tree from next-20221108 for today.

-- 
Cheers,
Stephen Rothwell