All of lore.kernel.org
 help / color / mirror / Atom feed
* [asahilinux:bits/270-thunderbolt 19/19] drivers/thunderbolt/apple.c:701:34: error: implicit declaration of function 'typec_thunderbolt_switch_get_drvdata'; did you mean 'typec_switch_get_drvdata'?
@ 2026-08-24  4:07 kernel test robot
  0 siblings, 0 replies; only message in thread
From: kernel test robot @ 2026-08-24  4:07 UTC (permalink / raw)
  To: Sven Peter; +Cc: oe-kbuild-all, Janne Grunau

tree:   https://github.com/AsahiLinux/linux bits/270-thunderbolt
head:   bcb818cd40b22610c3356572de22d51ecc248dbe
commit: bcb818cd40b22610c3356572de22d51ecc248dbe [19/19] thunderbolt: Add Apple Silicon support
config: powerpc-allmodconfig (https://download.01.org/0day-ci/archive/20260824/202608240652.hgjduscw-lkp@intel.com/config)
compiler: powerpc64-linux-gcc (GCC) 16.1.0
reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20260824/202608240652.hgjduscw-lkp@intel.com/reproduce)

If you fix the issue in a separate patch/commit (i.e. not just a new version of
the same patch/commit), kindly add following tags
| Reported-by: kernel test robot <lkp@intel.com>
| Closes: https://lore.kernel.org/oe-kbuild-all/202608240652.hgjduscw-lkp@intel.com/

All error/warnings (new ones prefixed by >>):

>> drivers/thunderbolt/apple.c:699:50: warning: 'struct typec_thunderbolt_switch_data' declared inside parameter list will not be visible outside of this definition or declaration
     699 |                                     const struct typec_thunderbolt_switch_data *data)
         |                                                  ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   drivers/thunderbolt/apple.c: In function 'apple_cio_tbt_switch_set':
>> drivers/thunderbolt/apple.c:701:34: error: implicit declaration of function 'typec_thunderbolt_switch_get_drvdata'; did you mean 'typec_switch_get_drvdata'? [-Wimplicit-function-declaration]
     701 |         struct apple_cio *acio = typec_thunderbolt_switch_get_drvdata(sw);
         |                                  ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
         |                                  typec_switch_get_drvdata
>> drivers/thunderbolt/apple.c:701:34: error: initialization of 'struct apple_cio *' from 'int' makes pointer from integer without a cast [-Wint-conversion]
   In file included from include/linux/printk.h:620,
                    from include/asm-generic/bug.h:31,
                    from arch/powerpc/include/asm/bug.h:116,
                    from include/linux/bug.h:5,
                    from include/linux/thread_info.h:13,
                    from include/asm-generic/preempt.h:5,
                    from ./arch/powerpc/include/generated/asm/preempt.h:1,
                    from include/linux/preempt.h:79,
                    from include/linux/spinlock.h:56,
                    from include/linux/swait.h:7,
                    from include/linux/completion.h:12,
                    from drivers/thunderbolt/apple.c:55:
>> drivers/thunderbolt/apple.c:705:57: error: invalid use of undefined type 'const struct typec_thunderbolt_switch_data'
     705 |         dev_dbg(acio->dev, "set cable state: %d\n", data->state);
         |                                                         ^~
   include/linux/dynamic_debug.h:231:29: note: in definition of macro '__dynamic_func_call_cls'
     231 |                 func(&id, ##__VA_ARGS__);                       \
         |                             ^~~~~~~~~~~
   include/linux/dynamic_debug.h:261:9: note: in expansion of macro '_dynamic_func_call_cls'
     261 |         _dynamic_func_call_cls(_DPRINTK_CLASS_DFLT, fmt, func, ##__VA_ARGS__)
         |         ^~~~~~~~~~~~~~~~~~~~~~
   include/linux/dynamic_debug.h:284:9: note: in expansion of macro '_dynamic_func_call'
     284 |         _dynamic_func_call(fmt, __dynamic_dev_dbg,              \
         |         ^~~~~~~~~~~~~~~~~~
   include/linux/dev_printk.h:165:9: note: in expansion of macro 'dynamic_dev_dbg'
     165 |         dynamic_dev_dbg(dev, dev_fmt(fmt), ##__VA_ARGS__)
         |         ^~~~~~~~~~~~~~~
   drivers/thunderbolt/apple.c:705:9: note: in expansion of macro 'dev_dbg'
     705 |         dev_dbg(acio->dev, "set cable state: %d\n", data->state);
         |         ^~~~~~~
   drivers/thunderbolt/apple.c:707:21: error: invalid use of undefined type 'const struct typec_thunderbolt_switch_data'
     707 |         switch (data->state) {
         |                     ^~
>> drivers/thunderbolt/apple.c:708:14: error: 'TYPEC_THUNDERBOLT_SWITCH_OFF' undeclared (first use in this function)
     708 |         case TYPEC_THUNDERBOLT_SWITCH_OFF:
         |              ^~~~~~~~~~~~~~~~~~~~~~~~~~~~
   drivers/thunderbolt/apple.c:708:14: note: each undeclared identifier is reported only once for each function it appears in
>> drivers/thunderbolt/apple.c:711:14: error: 'TYPEC_THUNDERBOLT_SWITCH_TBT' undeclared (first use in this function)
     711 |         case TYPEC_THUNDERBOLT_SWITCH_TBT:
         |              ^~~~~~~~~~~~~~~~~~~~~~~~~~~~
   drivers/thunderbolt/apple.c:714:25: error: invalid use of undefined type 'const struct typec_thunderbolt_switch_data'
     714 |                 if (data->tbt.cable_mode & TBT_CABLE_ACTIVE_PASSIVE) {
         |                         ^~
   drivers/thunderbolt/apple.c:716:35: error: invalid use of undefined type 'const struct typec_thunderbolt_switch_data'
     716 |                         if (!(data->tbt.cable_mode & TBT_CABLE_LINK_TRAINING))
         |                                   ^~
   In file included from <command-line>:
   drivers/thunderbolt/apple.c:720:37: error: invalid use of undefined type 'const struct typec_thunderbolt_switch_data'
     720 |                 if (TBT_ADAPTER(data->tbt.device_mode))
         |                                     ^~
   include/linux/compiler_types.h:682:23: note: in definition of macro '__compiletime_assert'
     682 |                 if (!(condition))                                       \
         |                       ^~~~~~~~~
   include/linux/compiler_types.h:702:9: note: in expansion of macro '_compiletime_assert'
     702 |         _compiletime_assert(condition, msg, __compiletime_assert_, __COUNTER__)
         |         ^~~~~~~~~~~~~~~~~~~
   include/linux/build_bug.h:40:37: note: in expansion of macro 'compiletime_assert'
      40 | #define BUILD_BUG_ON_MSG(cond, msg) compiletime_assert(!(cond), msg)
         |                                     ^~~~~~~~~~~~~~~~~~
   include/linux/bitfield.h:79:9: note: in expansion of macro 'BUILD_BUG_ON_MSG'
      79 |         BUILD_BUG_ON_MSG(__bf_cast_unsigned(mask, mask) >               \
         |         ^~~~~~~~~~~~~~~~
   include/linux/bitfield.h:63:43: note: in expansion of macro '__unsigned_scalar_typeof'
      63 | #define __bf_cast_unsigned(type, x)     ((__unsigned_scalar_typeof(type))(x))
         |                                           ^~~~~~~~~~~~~~~~~~~~~~~~
   include/linux/bitfield.h:80:26: note: in expansion of macro '__bf_cast_unsigned'
      80 |                          __bf_cast_unsigned(reg, ~0ull),                \
         |                          ^~~~~~~~~~~~~~~~~~
   include/linux/bitfield.h:177:17: note: in expansion of macro '__BF_FIELD_CHECK_REG'
     177 |                 __BF_FIELD_CHECK_REG(_mask, _reg, "FIELD_GET: ");       \
         |                 ^~~~~~~~~~~~~~~~~~~~
   include/linux/usb/typec_tbt.h:29:41: note: in expansion of macro 'FIELD_GET'
      29 | #define TBT_ADAPTER(_vdo_)              FIELD_GET(BIT(16), _vdo_)
         |                                         ^~~~~~~~~
   drivers/thunderbolt/apple.c:720:21: note: in expansion of macro 'TBT_ADAPTER'
     720 |                 if (TBT_ADAPTER(data->tbt.device_mode))
         |                     ^~~~~~~~~~~
   In file included from drivers/thunderbolt/apple.c:54:
   drivers/thunderbolt/apple.c:720:37: error: invalid use of undefined type 'const struct typec_thunderbolt_switch_data'
     720 |                 if (TBT_ADAPTER(data->tbt.device_mode))
         |                                     ^~
   include/linux/bitfield.h:98:34: note: in definition of macro '__FIELD_GET'
      98 |                 (typeof(mask))(((reg) & (mask)) >> __bf_shf(mask));     \
         |                                  ^~~
   include/linux/usb/typec_tbt.h:29:41: note: in expansion of macro 'FIELD_GET'
      29 | #define TBT_ADAPTER(_vdo_)              FIELD_GET(BIT(16), _vdo_)
         |                                         ^~~~~~~~~
   drivers/thunderbolt/apple.c:720:21: note: in expansion of macro 'TBT_ADAPTER'
     720 |                 if (TBT_ADAPTER(data->tbt.device_mode))
         |                     ^~~~~~~~~~~
   drivers/thunderbolt/apple.c:722:41: error: invalid use of undefined type 'const struct typec_thunderbolt_switch_data'
     722 |                 if (TBT_CABLE_SPEED(data->tbt.cable_mode) == TBT_CABLE_10_AND_20GBPS)
         |                                         ^~
   include/linux/compiler_types.h:682:23: note: in definition of macro '__compiletime_assert'
     682 |                 if (!(condition))                                       \
         |                       ^~~~~~~~~
   include/linux/compiler_types.h:702:9: note: in expansion of macro '_compiletime_assert'
     702 |         _compiletime_assert(condition, msg, __compiletime_assert_, __COUNTER__)
         |         ^~~~~~~~~~~~~~~~~~~
   include/linux/build_bug.h:40:37: note: in expansion of macro 'compiletime_assert'
      40 | #define BUILD_BUG_ON_MSG(cond, msg) compiletime_assert(!(cond), msg)
         |                                     ^~~~~~~~~~~~~~~~~~
   include/linux/bitfield.h:79:9: note: in expansion of macro 'BUILD_BUG_ON_MSG'
      79 |         BUILD_BUG_ON_MSG(__bf_cast_unsigned(mask, mask) >               \
         |         ^~~~~~~~~~~~~~~~
   include/linux/bitfield.h:63:43: note: in expansion of macro '__unsigned_scalar_typeof'
      63 | #define __bf_cast_unsigned(type, x)     ((__unsigned_scalar_typeof(type))(x))
         |                                           ^~~~~~~~~~~~~~~~~~~~~~~~
   include/linux/bitfield.h:80:26: note: in expansion of macro '__bf_cast_unsigned'
      80 |                          __bf_cast_unsigned(reg, ~0ull),                \
         |                          ^~~~~~~~~~~~~~~~~~
   include/linux/bitfield.h:177:17: note: in expansion of macro '__BF_FIELD_CHECK_REG'
     177 |                 __BF_FIELD_CHECK_REG(_mask, _reg, "FIELD_GET: ");       \
         |                 ^~~~~~~~~~~~~~~~~~~~
   include/linux/usb/typec_tbt.h:39:41: note: in expansion of macro 'FIELD_GET'
      39 | #define TBT_CABLE_SPEED(_vdo_)          FIELD_GET(GENMASK(18, 16), _vdo_)
         |                                         ^~~~~~~~~
   drivers/thunderbolt/apple.c:722:21: note: in expansion of macro 'TBT_CABLE_SPEED'
     722 |                 if (TBT_CABLE_SPEED(data->tbt.cable_mode) == TBT_CABLE_10_AND_20GBPS)
         |                     ^~~~~~~~~~~~~~~
   drivers/thunderbolt/apple.c:722:41: error: invalid use of undefined type 'const struct typec_thunderbolt_switch_data'
     722 |                 if (TBT_CABLE_SPEED(data->tbt.cable_mode) == TBT_CABLE_10_AND_20GBPS)
         |                                         ^~
   include/linux/bitfield.h:98:34: note: in definition of macro '__FIELD_GET'
      98 |                 (typeof(mask))(((reg) & (mask)) >> __bf_shf(mask));     \
         |                                  ^~~
   include/linux/usb/typec_tbt.h:39:41: note: in expansion of macro 'FIELD_GET'
      39 | #define TBT_CABLE_SPEED(_vdo_)          FIELD_GET(GENMASK(18, 16), _vdo_)
         |                                         ^~~~~~~~~
   drivers/thunderbolt/apple.c:722:21: note: in expansion of macro 'TBT_CABLE_SPEED'
     722 |                 if (TBT_CABLE_SPEED(data->tbt.cable_mode) == TBT_CABLE_10_AND_20GBPS)
         |                     ^~~~~~~~~~~~~~~
   drivers/thunderbolt/apple.c:724:25: error: invalid use of undefined type 'const struct typec_thunderbolt_switch_data'
     724 |                 if (data->orientation == TYPEC_ORIENTATION_REVERSE)
         |                         ^~
   drivers/thunderbolt/apple.c:728:29: error: invalid use of undefined type 'const struct typec_thunderbolt_switch_data'
     728 |                         data->tbt.cable_mode, data->tbt.device_mode,
         |                             ^~
   include/linux/dynamic_debug.h:231:29: note: in definition of macro '__dynamic_func_call_cls'
     231 |                 func(&id, ##__VA_ARGS__);                       \
         |                             ^~~~~~~~~~~
   include/linux/dynamic_debug.h:261:9: note: in expansion of macro '_dynamic_func_call_cls'
     261 |         _dynamic_func_call_cls(_DPRINTK_CLASS_DFLT, fmt, func, ##__VA_ARGS__)
         |         ^~~~~~~~~~~~~~~~~~~~~~
   include/linux/dynamic_debug.h:284:9: note: in expansion of macro '_dynamic_func_call'
     284 |         _dynamic_func_call(fmt, __dynamic_dev_dbg,              \
         |         ^~~~~~~~~~~~~~~~~~
   include/linux/dev_printk.h:165:9: note: in expansion of macro 'dynamic_dev_dbg'
     165 |         dynamic_dev_dbg(dev, dev_fmt(fmt), ##__VA_ARGS__)
         |         ^~~~~~~~~~~~~~~
   drivers/thunderbolt/apple.c:726:17: note: in expansion of macro 'dev_dbg'
     726 |                 dev_dbg(acio->dev,
         |                 ^~~~~~~
   drivers/thunderbolt/apple.c:728:51: error: invalid use of undefined type 'const struct typec_thunderbolt_switch_data'
     728 |                         data->tbt.cable_mode, data->tbt.device_mode,
         |                                                   ^~
   include/linux/dynamic_debug.h:231:29: note: in definition of macro '__dynamic_func_call_cls'
     231 |                 func(&id, ##__VA_ARGS__);                       \
         |                             ^~~~~~~~~~~
   include/linux/dynamic_debug.h:261:9: note: in expansion of macro '_dynamic_func_call_cls'
     261 |         _dynamic_func_call_cls(_DPRINTK_CLASS_DFLT, fmt, func, ##__VA_ARGS__)
         |         ^~~~~~~~~~~~~~~~~~~~~~
   include/linux/dynamic_debug.h:284:9: note: in expansion of macro '_dynamic_func_call'
     284 |         _dynamic_func_call(fmt, __dynamic_dev_dbg,              \
         |         ^~~~~~~~~~~~~~~~~~
   include/linux/dev_printk.h:165:9: note: in expansion of macro 'dynamic_dev_dbg'
     165 |         dynamic_dev_dbg(dev, dev_fmt(fmt), ##__VA_ARGS__)
         |         ^~~~~~~~~~~~~~~
   drivers/thunderbolt/apple.c:726:17: note: in expansion of macro 'dev_dbg'
     726 |                 dev_dbg(acio->dev,
         |                 ^~~~~~~
   drivers/thunderbolt/apple.c:729:29: error: invalid use of undefined type 'const struct typec_thunderbolt_switch_data'
     729 |                         data->tbt.enter_vdo, data->orientation,
         |                             ^~
   include/linux/dynamic_debug.h:231:29: note: in definition of macro '__dynamic_func_call_cls'
     231 |                 func(&id, ##__VA_ARGS__);                       \
         |                             ^~~~~~~~~~~
   include/linux/dynamic_debug.h:261:9: note: in expansion of macro '_dynamic_func_call_cls'
     261 |         _dynamic_func_call_cls(_DPRINTK_CLASS_DFLT, fmt, func, ##__VA_ARGS__)
         |         ^~~~~~~~~~~~~~~~~~~~~~
   include/linux/dynamic_debug.h:284:9: note: in expansion of macro '_dynamic_func_call'
     284 |         _dynamic_func_call(fmt, __dynamic_dev_dbg,              \
         |         ^~~~~~~~~~~~~~~~~~
   include/linux/dev_printk.h:165:9: note: in expansion of macro 'dynamic_dev_dbg'
     165 |         dynamic_dev_dbg(dev, dev_fmt(fmt), ##__VA_ARGS__)
         |         ^~~~~~~~~~~~~~~
   drivers/thunderbolt/apple.c:726:17: note: in expansion of macro 'dev_dbg'
     726 |                 dev_dbg(acio->dev,
         |                 ^~~~~~~
   drivers/thunderbolt/apple.c:729:50: error: invalid use of undefined type 'const struct typec_thunderbolt_switch_data'
     729 |                         data->tbt.enter_vdo, data->orientation,
         |                                                  ^~
   include/linux/dynamic_debug.h:231:29: note: in definition of macro '__dynamic_func_call_cls'
     231 |                 func(&id, ##__VA_ARGS__);                       \
         |                             ^~~~~~~~~~~
   include/linux/dynamic_debug.h:261:9: note: in expansion of macro '_dynamic_func_call_cls'
     261 |         _dynamic_func_call_cls(_DPRINTK_CLASS_DFLT, fmt, func, ##__VA_ARGS__)
         |         ^~~~~~~~~~~~~~~~~~~~~~
   include/linux/dynamic_debug.h:284:9: note: in expansion of macro '_dynamic_func_call'
     284 |         _dynamic_func_call(fmt, __dynamic_dev_dbg,              \
         |         ^~~~~~~~~~~~~~~~~~
   include/linux/dev_printk.h:165:9: note: in expansion of macro 'dynamic_dev_dbg'
     165 |         dynamic_dev_dbg(dev, dev_fmt(fmt), ##__VA_ARGS__)
         |         ^~~~~~~~~~~~~~~
   drivers/thunderbolt/apple.c:726:17: note: in expansion of macro 'dev_dbg'
     726 |                 dev_dbg(acio->dev,
         |                 ^~~~~~~
>> drivers/thunderbolt/apple.c:732:14: error: 'TYPEC_THUNDERBOLT_SWITCH_USB4' undeclared (first use in this function)
     732 |         case TYPEC_THUNDERBOLT_SWITCH_USB4:
         |              ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   drivers/thunderbolt/apple.c:734:57: error: invalid use of undefined type 'const struct typec_thunderbolt_switch_data'
     734 |                 if (FIELD_GET(EUDO_CABLE_TYPE_MASK, data->usb4.eudo) != EUDO_CABLE_TYPE_PASSIVE)
         |                                                         ^~
   include/linux/compiler_types.h:682:23: note: in definition of macro '__compiletime_assert'
     682 |                 if (!(condition))                                       \
         |                       ^~~~~~~~~
   include/linux/compiler_types.h:702:9: note: in expansion of macro '_compiletime_assert'
     702 |         _compiletime_assert(condition, msg, __compiletime_assert_, __COUNTER__)
         |         ^~~~~~~~~~~~~~~~~~~
   include/linux/build_bug.h:40:37: note: in expansion of macro 'compiletime_assert'
      40 | #define BUILD_BUG_ON_MSG(cond, msg) compiletime_assert(!(cond), msg)
         |                                     ^~~~~~~~~~~~~~~~~~
   include/linux/bitfield.h:79:9: note: in expansion of macro 'BUILD_BUG_ON_MSG'
      79 |         BUILD_BUG_ON_MSG(__bf_cast_unsigned(mask, mask) >               \
         |         ^~~~~~~~~~~~~~~~
   include/linux/bitfield.h:63:43: note: in expansion of macro '__unsigned_scalar_typeof'
      63 | #define __bf_cast_unsigned(type, x)     ((__unsigned_scalar_typeof(type))(x))
         |                                           ^~~~~~~~~~~~~~~~~~~~~~~~
   include/linux/bitfield.h:80:26: note: in expansion of macro '__bf_cast_unsigned'
      80 |                          __bf_cast_unsigned(reg, ~0ull),                \
         |                          ^~~~~~~~~~~~~~~~~~
   include/linux/bitfield.h:177:17: note: in expansion of macro '__BF_FIELD_CHECK_REG'
     177 |                 __BF_FIELD_CHECK_REG(_mask, _reg, "FIELD_GET: ");       \
         |                 ^~~~~~~~~~~~~~~~~~~~
   drivers/thunderbolt/apple.c:734:21: note: in expansion of macro 'FIELD_GET'
     734 |                 if (FIELD_GET(EUDO_CABLE_TYPE_MASK, data->usb4.eudo) != EUDO_CABLE_TYPE_PASSIVE)
         |                     ^~~~~~~~~
   drivers/thunderbolt/apple.c:734:57: error: invalid use of undefined type 'const struct typec_thunderbolt_switch_data'
     734 |                 if (FIELD_GET(EUDO_CABLE_TYPE_MASK, data->usb4.eudo) != EUDO_CABLE_TYPE_PASSIVE)
         |                                                         ^~
   include/linux/bitfield.h:98:34: note: in definition of macro '__FIELD_GET'
      98 |                 (typeof(mask))(((reg) & (mask)) >> __bf_shf(mask));     \
         |                                  ^~~
   drivers/thunderbolt/apple.c:734:21: note: in expansion of macro 'FIELD_GET'
     734 |                 if (FIELD_GET(EUDO_CABLE_TYPE_MASK, data->usb4.eudo) != EUDO_CABLE_TYPE_PASSIVE)
         |                     ^~~~~~~~~
   drivers/thunderbolt/apple.c:736:58: error: invalid use of undefined type 'const struct typec_thunderbolt_switch_data'
     736 |                 if (FIELD_GET(EUDO_CABLE_SPEED_MASK, data->usb4.eudo) == EUDO_CABLE_SPEED_USB4_GEN3)
         |                                                          ^~
   include/linux/compiler_types.h:682:23: note: in definition of macro '__compiletime_assert'
     682 |                 if (!(condition))                                       \
         |                       ^~~~~~~~~
   include/linux/compiler_types.h:702:9: note: in expansion of macro '_compiletime_assert'
     702 |         _compiletime_assert(condition, msg, __compiletime_assert_, __COUNTER__)
         |         ^~~~~~~~~~~~~~~~~~~
   include/linux/build_bug.h:40:37: note: in expansion of macro 'compiletime_assert'
      40 | #define BUILD_BUG_ON_MSG(cond, msg) compiletime_assert(!(cond), msg)
         |                                     ^~~~~~~~~~~~~~~~~~
   include/linux/bitfield.h:79:9: note: in expansion of macro 'BUILD_BUG_ON_MSG'
      79 |         BUILD_BUG_ON_MSG(__bf_cast_unsigned(mask, mask) >               \
         |         ^~~~~~~~~~~~~~~~
   include/linux/bitfield.h:63:43: note: in expansion of macro '__unsigned_scalar_typeof'
      63 | #define __bf_cast_unsigned(type, x)     ((__unsigned_scalar_typeof(type))(x))
         |                                           ^~~~~~~~~~~~~~~~~~~~~~~~
   include/linux/bitfield.h:80:26: note: in expansion of macro '__bf_cast_unsigned'
      80 |                          __bf_cast_unsigned(reg, ~0ull),                \
         |                          ^~~~~~~~~~~~~~~~~~
   include/linux/bitfield.h:177:17: note: in expansion of macro '__BF_FIELD_CHECK_REG'
     177 |                 __BF_FIELD_CHECK_REG(_mask, _reg, "FIELD_GET: ");       \
         |                 ^~~~~~~~~~~~~~~~~~~~
   drivers/thunderbolt/apple.c:736:21: note: in expansion of macro 'FIELD_GET'
     736 |                 if (FIELD_GET(EUDO_CABLE_SPEED_MASK, data->usb4.eudo) == EUDO_CABLE_SPEED_USB4_GEN3)
         |                     ^~~~~~~~~
   drivers/thunderbolt/apple.c:736:58: error: invalid use of undefined type 'const struct typec_thunderbolt_switch_data'
     736 |                 if (FIELD_GET(EUDO_CABLE_SPEED_MASK, data->usb4.eudo) == EUDO_CABLE_SPEED_USB4_GEN3)
         |                                                          ^~
   include/linux/bitfield.h:98:34: note: in definition of macro '__FIELD_GET'
      98 |                 (typeof(mask))(((reg) & (mask)) >> __bf_shf(mask));     \
         |                                  ^~~
   drivers/thunderbolt/apple.c:736:21: note: in expansion of macro 'FIELD_GET'
     736 |                 if (FIELD_GET(EUDO_CABLE_SPEED_MASK, data->usb4.eudo) == EUDO_CABLE_SPEED_USB4_GEN3)
         |                     ^~~~~~~~~
   drivers/thunderbolt/apple.c:738:25: error: invalid use of undefined type 'const struct typec_thunderbolt_switch_data'
     738 |                 if (data->orientation == TYPEC_ORIENTATION_REVERSE)
         |                         ^~
   drivers/thunderbolt/apple.c:741:29: error: invalid use of undefined type 'const struct typec_thunderbolt_switch_data'
     741 |                         data->usb4.eudo, data->orientation, acio->target_cable_info);
         |                             ^~
   include/linux/dynamic_debug.h:231:29: note: in definition of macro '__dynamic_func_call_cls'
     231 |                 func(&id, ##__VA_ARGS__);                       \
         |                             ^~~~~~~~~~~
   include/linux/dynamic_debug.h:261:9: note: in expansion of macro '_dynamic_func_call_cls'
     261 |         _dynamic_func_call_cls(_DPRINTK_CLASS_DFLT, fmt, func, ##__VA_ARGS__)
         |         ^~~~~~~~~~~~~~~~~~~~~~
   include/linux/dynamic_debug.h:284:9: note: in expansion of macro '_dynamic_func_call'
     284 |         _dynamic_func_call(fmt, __dynamic_dev_dbg,              \
         |         ^~~~~~~~~~~~~~~~~~
   include/linux/dev_printk.h:165:9: note: in expansion of macro 'dynamic_dev_dbg'
     165 |         dynamic_dev_dbg(dev, dev_fmt(fmt), ##__VA_ARGS__)
         |         ^~~~~~~~~~~~~~~
   drivers/thunderbolt/apple.c:740:17: note: in expansion of macro 'dev_dbg'
     740 |                 dev_dbg(acio->dev, "USB4 cable: eudo 0x%x, orientation %d -> cable info 0x%x\n",
         |                 ^~~~~~~
   drivers/thunderbolt/apple.c:741:46: error: invalid use of undefined type 'const struct typec_thunderbolt_switch_data'
     741 |                         data->usb4.eudo, data->orientation, acio->target_cable_info);
         |                                              ^~
   include/linux/dynamic_debug.h:231:29: note: in definition of macro '__dynamic_func_call_cls'
     231 |                 func(&id, ##__VA_ARGS__);                       \
         |                             ^~~~~~~~~~~
   include/linux/dynamic_debug.h:261:9: note: in expansion of macro '_dynamic_func_call_cls'
     261 |         _dynamic_func_call_cls(_DPRINTK_CLASS_DFLT, fmt, func, ##__VA_ARGS__)
         |         ^~~~~~~~~~~~~~~~~~~~~~
   include/linux/dynamic_debug.h:284:9: note: in expansion of macro '_dynamic_func_call'
     284 |         _dynamic_func_call(fmt, __dynamic_dev_dbg,              \
         |         ^~~~~~~~~~~~~~~~~~
   include/linux/dev_printk.h:165:9: note: in expansion of macro 'dynamic_dev_dbg'
     165 |         dynamic_dev_dbg(dev, dev_fmt(fmt), ##__VA_ARGS__)
         |         ^~~~~~~~~~~~~~~
   drivers/thunderbolt/apple.c:740:17: note: in expansion of macro 'dev_dbg'
     740 |                 dev_dbg(acio->dev, "USB4 cable: eudo 0x%x, orientation %d -> cable info 0x%x\n",
         |                 ^~~~~~~
   drivers/thunderbolt/apple.c: In function 'apple_cio_probe':
>> drivers/thunderbolt/apple.c:836:16: error: variable 'desc' has initializer but incomplete type
     836 |         struct typec_thunderbolt_switch_desc desc = {
         |                ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~
>> drivers/thunderbolt/apple.c:837:18: error: 'struct typec_thunderbolt_switch_desc' has no member named 'fwnode'
     837 |                 .fwnode = pdev->dev.fwnode,
         |                  ^~~~~~
>> drivers/thunderbolt/apple.c:837:27: warning: excess elements in struct initializer
     837 |                 .fwnode = pdev->dev.fwnode,
         |                           ^~~~
   drivers/thunderbolt/apple.c:837:27: note: (near initialization for 'desc')
>> drivers/thunderbolt/apple.c:838:18: error: 'struct typec_thunderbolt_switch_desc' has no member named 'set'
     838 |                 .set = apple_cio_tbt_switch_set,
         |                  ^~~
   drivers/thunderbolt/apple.c:838:24: warning: excess elements in struct initializer
     838 |                 .set = apple_cio_tbt_switch_set,
         |                        ^~~~~~~~~~~~~~~~~~~~~~~~
   drivers/thunderbolt/apple.c:838:24: note: (near initialization for 'desc')
>> drivers/thunderbolt/apple.c:839:18: error: 'struct typec_thunderbolt_switch_desc' has no member named 'drvdata'
     839 |                 .drvdata = acio,
         |                  ^~~~~~~
   drivers/thunderbolt/apple.c:839:28: warning: excess elements in struct initializer
     839 |                 .drvdata = acio,
         |                            ^~~~
   drivers/thunderbolt/apple.c:839:28: note: (near initialization for 'desc')
>> drivers/thunderbolt/apple.c:836:46: error: storage size of 'desc' isn't known
     836 |         struct typec_thunderbolt_switch_desc desc = {
         |                                              ^~~~
>> drivers/thunderbolt/apple.c:841:28: error: implicit declaration of function 'typec_thunderbolt_switch_register' [-Wimplicit-function-declaration]
     841 |         acio->tbt_switch = typec_thunderbolt_switch_register(dev, &desc);
         |                            ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
>> drivers/thunderbolt/apple.c:836:46: warning: unused variable 'desc' [-Wunused-variable]
     836 |         struct typec_thunderbolt_switch_desc desc = {
         |                                              ^~~~
   drivers/thunderbolt/apple.c: In function 'apple_cio_remove':
>> drivers/thunderbolt/apple.c:853:9: error: implicit declaration of function 'typec_thunderbolt_switch_unregister'; did you mean 'typec_switch_unregister'? [-Wimplicit-function-declaration]
     853 |         typec_thunderbolt_switch_unregister(acio->tbt_switch);
         |         ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
         |         typec_switch_unregister


vim +701 drivers/thunderbolt/apple.c

   697	
   698	static int apple_cio_tbt_switch_set(struct typec_thunderbolt_switch_dev *sw,
 > 699					    const struct typec_thunderbolt_switch_data *data)
   700	{
 > 701		struct apple_cio *acio = typec_thunderbolt_switch_get_drvdata(sw);
   702	
   703		guard(mutex)(&acio->lock);
   704	
 > 705		dev_dbg(acio->dev, "set cable state: %d\n", data->state);
   706	
   707		switch (data->state) {
 > 708		case TYPEC_THUNDERBOLT_SWITCH_OFF:
   709			acio->target_cable_info = 0;
   710			break;
 > 711		case TYPEC_THUNDERBOLT_SWITCH_TBT:
   712			acio->target_cable_info = TB_VSE_CAP_APPLE_CABLE_INFO_PRESENT;
   713			acio->target_cable_info |= TB_VSE_CAP_APPLE_CABLE_INFO_TBT2_3;
   714			if (data->tbt.cable_mode & TBT_CABLE_ACTIVE_PASSIVE) {
   715				acio->target_cable_info |= TB_VSE_CAP_APPLE_CABLE_INFO_ACTIVE_CABLE;
   716				if (!(data->tbt.cable_mode & TBT_CABLE_LINK_TRAINING))
   717					acio->target_cable_info |= TB_VSE_CAP_APPLE_CABLE_INFO_BIDIR_LSRX;
   718			}
   719			/* bit 16 of the Device Discover Mode VDO is 1 for a legacy TBT2 adapter */
   720			if (TBT_ADAPTER(data->tbt.device_mode))
   721				acio->target_cable_info |= TB_VSE_CAP_APPLE_CABLE_INFO_LEGACY_ADAPTER;
   722			if (TBT_CABLE_SPEED(data->tbt.cable_mode) == TBT_CABLE_10_AND_20GBPS)
   723				acio->target_cable_info |= TB_VSE_CAP_APPLE_CABLE_INFO_20_GBPS;
   724			if (data->orientation == TYPEC_ORIENTATION_REVERSE)
   725				acio->target_cable_info |= TB_VSE_CAP_APPLE_CABLE_INFO_ORIENTATION_REVERSE;
   726			dev_dbg(acio->dev,
   727				"TBT cable: cable_mode 0x%x, device_mode 0x%x, enter_vdo 0x%x, orientation %d -> cable info 0x%x\n",
   728				data->tbt.cable_mode, data->tbt.device_mode,
   729				data->tbt.enter_vdo, data->orientation,
   730				acio->target_cable_info);
   731			break;
 > 732		case TYPEC_THUNDERBOLT_SWITCH_USB4:
   733			acio->target_cable_info = TB_VSE_CAP_APPLE_CABLE_INFO_PRESENT;
   734			if (FIELD_GET(EUDO_CABLE_TYPE_MASK, data->usb4.eudo) != EUDO_CABLE_TYPE_PASSIVE)
   735				acio->target_cable_info |= TB_VSE_CAP_APPLE_CABLE_INFO_ACTIVE_CABLE;
   736			if (FIELD_GET(EUDO_CABLE_SPEED_MASK, data->usb4.eudo) == EUDO_CABLE_SPEED_USB4_GEN3)
   737				acio->target_cable_info |= TB_VSE_CAP_APPLE_CABLE_INFO_20_GBPS;
   738			if (data->orientation == TYPEC_ORIENTATION_REVERSE)
   739				acio->target_cable_info |= TB_VSE_CAP_APPLE_CABLE_INFO_ORIENTATION_REVERSE;
   740			dev_dbg(acio->dev, "USB4 cable: eudo 0x%x, orientation %d -> cable info 0x%x\n",
   741				data->usb4.eudo, data->orientation, acio->target_cable_info);
   742			break;
   743		}
   744	
   745		if (acio->target_cable_info == acio->current_cable_info)
   746			return 0;
   747	
   748		/*
   749		 * Transitions between different cables without a shutdown inbetween are invalid and can
   750		 * only happen when there's a bug inside the Type-C PD driver. If we tried such a
   751		 * transition, ACIO would crash and then trigger some watchdog that would reset the entire
   752		 * SoC a few seconds later. Shutting down instead only makes the connected device not work
   753		 * but we should be able to recover once the next cable is plugged in.
   754		 */
   755		if (acio->current_cable_info && acio->target_cable_info) {
   756			dev_err(acio->dev,
   757				"Invalid cable transition from 0x%x to 0x%x, shutting down instead\n",
   758				acio->current_cable_info, acio->target_cable_info);
   759			acio->target_cable_info = 0;
   760		}
   761	
   762		/*
   763		 * Bring up or power down the ACIO complex
   764		 * current_cable_info will be updated in the start/stop functions
   765		 */
   766		if (acio->target_cable_info)
   767			return apple_cio_start(acio);
   768	
   769		apple_cio_stop(acio);
   770		return 0;
   771	}
   772	
   773	static int apple_cio_probe(struct platform_device *pdev)
   774	{
   775		struct device *dev = &pdev->dev;
   776		struct apple_cio *acio;
   777		int ret;
   778	
   779		acio = devm_kzalloc(dev, sizeof(*acio), GFP_KERNEL);
   780		if (!acio)
   781			return -ENOMEM;
   782		platform_set_drvdata(pdev, acio);
   783	
   784		ret = devm_mutex_init(dev, &acio->lock);
   785		if (ret)
   786			return ret;
   787		init_completion(&acio->nhi_boot_completion);
   788		acio->dev = &pdev->dev;
   789		acio->np = dev->of_node;
   790	
   791		acio->sram_res = platform_get_resource_byname(pdev, IORESOURCE_MEM, "sram");
   792		if (!acio->sram_res)
   793			return dev_err_probe(dev, -EIO, "Failed to get SRAM resource\n");
   794		acio->sram_base = devm_ioremap_resource(dev, acio->sram_res);
   795		if (IS_ERR(acio->sram_base))
   796			return dev_err_probe(dev, PTR_ERR(acio->sram_base), "Failed to map SRAM\n");
   797	
   798		acio->rc_res = platform_get_resource_byname(pdev, IORESOURCE_MEM, "rc");
   799		acio->rc_base = devm_ioremap_resource(&pdev->dev, acio->rc_res);
   800		if (IS_ERR(acio->rc_base))
   801			return dev_err_probe(dev, PTR_ERR(acio->rc_base), "Unable to map rc regs\n");
   802		acio->rc_tunable =
   803			devm_apple_tunable_parse(dev, acio->np, "apple,tunable-rc", acio->rc_res);
   804		if (IS_ERR(acio->rc_tunable))
   805			return dev_err_probe(dev, PTR_ERR(acio->rc_tunable), "Unable to load rc tunable\n");
   806	
   807		acio->reset = devm_reset_control_get_exclusive(dev, NULL);
   808		if (IS_ERR(acio->reset))
   809			return dev_err_probe(dev, PTR_ERR(acio->reset), "Unable to get CIO reset\n");
   810	
   811		/*
   812		 * If there is only a single domain listed in the device tree the platform driver
   813		 * framework will already attach it. Thus, if we find an already attached domain
   814		 * here something's wrong in the device tree because we expect at least three separate
   815		 * domains that we have to control manually.
   816		 */
   817		if (dev->pm_domain) {
   818			dev_err(dev, "PM domain already attached, check if the DT lists three domains\n");
   819			return -EINVAL;
   820		}
   821	
   822		/*
   823		 * Find and attach the PM domains but don't power them on yet since we must only
   824		 * do that after the PHY has already been configured into USB4/Thunderbolt mode.
   825		 */
   826		struct dev_pm_domain_attach_data pd_data = {
   827			.pd_flags = PD_FLAG_NO_DEV_LINK,
   828		};
   829		ret = devm_pm_domain_attach_list(dev, &pd_data, &acio->pd_list);
   830		if (ret < 0)
   831			return dev_err_probe(dev, ret, "Unable to attach PM domains\n");
   832		else if (ret < 3)
   833			return dev_err_probe(dev, -EINVAL, "Not enough PM domains\n");
   834	
   835		/* And finally register the OOB notification for Thunderbolt/USB4 cables */
 > 836		struct typec_thunderbolt_switch_desc desc = {
 > 837			.fwnode = pdev->dev.fwnode,
 > 838			.set = apple_cio_tbt_switch_set,
 > 839			.drvdata = acio,
   840		};
 > 841		acio->tbt_switch = typec_thunderbolt_switch_register(dev, &desc);
   842		if (IS_ERR(acio->tbt_switch))
   843			return dev_err_probe(dev, PTR_ERR(acio->tbt_switch),
   844					     "Unable to register thunderbolt switch\n");
   845	
   846		return 0;
   847	}
   848	
   849	static void apple_cio_remove(struct platform_device *pdev)
   850	{
   851		struct apple_cio *acio = platform_get_drvdata(pdev);
   852	
 > 853		typec_thunderbolt_switch_unregister(acio->tbt_switch);
   854	
   855		guard(mutex)(&acio->lock);
   856		if (acio->current_cable_info)
   857			apple_cio_stop(acio);
   858	}
   859	

--
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki

^ permalink raw reply	[flat|nested] only message in thread

only message in thread, other threads:[~2026-08-24  4:07 UTC | newest]

Thread overview: (only message) (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-08-24  4:07 [asahilinux:bits/270-thunderbolt 19/19] drivers/thunderbolt/apple.c:701:34: error: implicit declaration of function 'typec_thunderbolt_switch_get_drvdata'; did you mean 'typec_switch_get_drvdata'? kernel test robot

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.