[asahilinux:bits/270-thunderbolt 19/19] drivers/thunderbolt/apple.c:701:27: error: call to undeclared function 'typec_thunderbolt_switch_get_drvdata'; ISO C99 and later do not support implicit function declarations

kernel test robot <[email protected]>
Newsgroups dev.linux.lists.oe-kbuild-all,dev.linux.lists.llvm
Message-ID <[email protected]>
tree:   https://github.com/AsahiLinux/linux bits/270-thunderbolt
head:   bcb818cd40b22610c3356572de22d51ecc248dbe
commit: bcb818cd40b22610c3356572de22d51ecc248dbe [19/19] thunderbolt: Add Apple Silicon support
config: loongarch-allmodconfig (https://download.01.org/0day-ci/archive/20260828/[email protected]/config)
compiler: clang version 19.1.7 (https://github.com/llvm/llvm-project cd708029e0b2869e80abe31ddb175f7c35361f90)
reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20260828/[email protected]/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 <[email protected]>
| Closes: https://lore.kernel.org/oe-kbuild-all/[email protected]/

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

>> drivers/thunderbolt/apple.c:699:22: warning: declaration of 'struct typec_thunderbolt_switch_data' will not be visible outside of this function [-Wvisibility]
     699 |                                     const struct typec_thunderbolt_switch_data *data)
         |                                                  ^
>> drivers/thunderbolt/apple.c:701:27: error: call to undeclared function 'typec_thunderbolt_switch_get_drvdata'; ISO C99 and later do not support implicit function declarations [-Wimplicit-function-declaration]
     701 |         struct apple_cio *acio = typec_thunderbolt_switch_get_drvdata(sw);
         |                                  ^
   drivers/thunderbolt/apple.c:701:27: note: did you mean 'typec_switch_get_drvdata'?
   include/linux/usb/typec_mux.h:41:7: note: 'typec_switch_get_drvdata' declared here
      41 | void *typec_switch_get_drvdata(struct typec_switch_dev *sw);
         |       ^
>> drivers/thunderbolt/apple.c:701:20: error: incompatible integer to pointer conversion initializing 'struct apple_cio *' with an expression of type 'int' [-Wint-conversion]
     701 |         struct apple_cio *acio = typec_thunderbolt_switch_get_drvdata(sw);
         |                           ^      ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
>> drivers/thunderbolt/apple.c:705:50: error: incomplete definition of type 'const struct typec_thunderbolt_switch_data'
     705 |         dev_dbg(acio->dev, "set cable state: %d\n", data->state);
         |                                                     ~~~~^
   include/linux/dev_printk.h:165:39: note: expanded from macro 'dev_dbg'
     165 |         dynamic_dev_dbg(dev, dev_fmt(fmt), ##__VA_ARGS__)
         |                                              ^~~~~~~~~~~
   include/linux/dynamic_debug.h:285:19: note: expanded from macro 'dynamic_dev_dbg'
     285 |                            dev, fmt, ##__VA_ARGS__)
         |                                        ^~~~~~~~~~~
   include/linux/dynamic_debug.h:261:59: note: expanded from macro '_dynamic_func_call'
     261 |         _dynamic_func_call_cls(_DPRINTK_CLASS_DFLT, fmt, func, ##__VA_ARGS__)
         |                                                                  ^~~~~~~~~~~
   include/linux/dynamic_debug.h:259:65: note: expanded from macro '_dynamic_func_call_cls'
     259 |         __dynamic_func_call_cls(__UNIQUE_ID(ddebug), cls, fmt, func, ##__VA_ARGS__)
         |                                                                        ^~~~~~~~~~~
   include/linux/dynamic_debug.h:231:15: note: expanded from macro '__dynamic_func_call_cls'
     231 |                 func(&id, ##__VA_ARGS__);                       \
         |                             ^~~~~~~~~~~
   drivers/thunderbolt/apple.c:699:22: note: forward declaration of 'struct typec_thunderbolt_switch_data'
     699 |                                     const struct typec_thunderbolt_switch_data *data)
         |                                                  ^
   drivers/thunderbolt/apple.c:707:14: error: incomplete definition of type 'const struct typec_thunderbolt_switch_data'
     707 |         switch (data->state) {
         |                 ~~~~^
   drivers/thunderbolt/apple.c:699:22: note: forward declaration of 'struct typec_thunderbolt_switch_data'
     699 |                                     const struct typec_thunderbolt_switch_data *data)
         |                                                  ^
>> drivers/thunderbolt/apple.c:708:7: error: use of undeclared identifier 'TYPEC_THUNDERBOLT_SWITCH_OFF'
     708 |         case TYPEC_THUNDERBOLT_SWITCH_OFF:
         |              ^
>> drivers/thunderbolt/apple.c:711:7: error: use of undeclared identifier 'TYPEC_THUNDERBOLT_SWITCH_TBT'
     711 |         case TYPEC_THUNDERBOLT_SWITCH_TBT:
         |              ^
   drivers/thunderbolt/apple.c:714:11: error: incomplete definition of type 'const struct typec_thunderbolt_switch_data'
     714 |                 if (data->tbt.cable_mode & TBT_CABLE_ACTIVE_PASSIVE) {
         |                     ~~~~^
   drivers/thunderbolt/apple.c:699:22: note: forward declaration of 'struct typec_thunderbolt_switch_data'
     699 |                                     const struct typec_thunderbolt_switch_data *data)
         |                                                  ^
   drivers/thunderbolt/apple.c:716:14: error: incomplete definition of type 'const struct typec_thunderbolt_switch_data'
     716 |                         if (!(data->tbt.cable_mode & TBT_CABLE_LINK_TRAINING))
         |                               ~~~~^
   drivers/thunderbolt/apple.c:699:22: note: forward declaration of 'struct typec_thunderbolt_switch_data'
     699 |                                     const struct typec_thunderbolt_switch_data *data)
         |                                                  ^
   drivers/thunderbolt/apple.c:720:23: error: incomplete definition of type 'const struct typec_thunderbolt_switch_data'
     720 |                 if (TBT_ADAPTER(data->tbt.device_mode))
         |                                 ~~~~^
   include/linux/usb/typec_tbt.h:29:48: note: expanded from macro 'TBT_ADAPTER'
      29 | #define TBT_ADAPTER(_vdo_)              FIELD_GET(BIT(16), _vdo_)
         |                                                            ^~~~~
   include/linux/bitfield.h:177:31: note: expanded from macro 'FIELD_GET'
     177 |                 __BF_FIELD_CHECK_REG(_mask, _reg, "FIELD_GET: ");       \
         |                                             ^~~~
   include/linux/bitfield.h:80:24: note: expanded from macro '__BF_FIELD_CHECK_REG'
      80 |                          __bf_cast_unsigned(reg, ~0ull),                \
         |                                             ^~~
   note: (skipping 3 expansions in backtrace; use -fmacro-backtrace-limit=0 to see all)
   include/linux/compiler_types.h:702:22: note: expanded from macro 'compiletime_assert'
     702 |         _compiletime_assert(condition, msg, __compiletime_assert_, __COUNTER__)
         |                             ^~~~~~~~~
   include/linux/compiler_types.h:690:23: note: expanded from macro '_compiletime_assert'
     690 |         __compiletime_assert(condition, msg, prefix, suffix)
         |                              ^~~~~~~~~
   include/linux/compiler_types.h:682:9: note: expanded from macro '__compiletime_assert'
     682 |                 if (!(condition))                                       \
         |                       ^~~~~~~~~
   drivers/thunderbolt/apple.c:699:22: note: forward declaration of 'struct typec_thunderbolt_switch_data'
     699 |                                     const struct typec_thunderbolt_switch_data *data)
         |                                                  ^
   drivers/thunderbolt/apple.c:720:23: error: incomplete definition of type 'const struct typec_thunderbolt_switch_data'
     720 |                 if (TBT_ADAPTER(data->tbt.device_mode))
         |                                 ~~~~^
   include/linux/usb/typec_tbt.h:29:48: note: expanded from macro 'TBT_ADAPTER'
      29 | #define TBT_ADAPTER(_vdo_)              FIELD_GET(BIT(16), _vdo_)
         |                                                            ^~~~~
   include/linux/bitfield.h:177:31: note: expanded from macro 'FIELD_GET'
     177 |                 __BF_FIELD_CHECK_REG(_mask, _reg, "FIELD_GET: ");       \
         |                                             ^~~~
   include/linux/bitfield.h:80:24: note: expanded from macro '__BF_FIELD_CHECK_REG'
      80 |                          __bf_cast_unsigned(reg, ~0ull),                \
         |                                             ^~~
   note: (skipping 3 expansions in backtrace; use -fmacro-backtrace-limit=0 to see all)
   include/linux/compiler_types.h:702:22: note: expanded from macro 'compiletime_assert'
     702 |         _compiletime_assert(condition, msg, __compiletime_assert_, __COUNTER__)
         |                             ^~~~~~~~~
   include/linux/compiler_types.h:690:23: note: expanded from macro '_compiletime_assert'
     690 |         __compiletime_assert(condition, msg, prefix, suffix)
         |                              ^~~~~~~~~
   include/linux/compiler_types.h:682:9: note: expanded from macro '__compiletime_assert'
     682 |                 if (!(condition))                                       \
         |                       ^~~~~~~~~
   drivers/thunderbolt/apple.c:699:22: note: forward declaration of 'struct typec_thunderbolt_switch_data'
     699 |                                     const struct typec_thunderbolt_switch_data *data)
         |                                                  ^
   drivers/thunderbolt/apple.c:720:23: error: incomplete definition of type 'const struct typec_thunderbolt_switch_data'
     720 |                 if (TBT_ADAPTER(data->tbt.device_mode))
         |                                 ~~~~^
   include/linux/usb/typec_tbt.h:29:48: note: expanded from macro 'TBT_ADAPTER'
      29 | #define TBT_ADAPTER(_vdo_)              FIELD_GET(BIT(16), _vdo_)
         |                                                            ^~~~~
   include/linux/bitfield.h:178:22: note: expanded from macro 'FIELD_GET'
     178 |                 __FIELD_GET(_mask, _reg, "FIELD_GET: ");                \
         |                                    ^~~~
   include/linux/bitfield.h:98:20: note: expanded from macro '__FIELD_GET'
      98 |                 (typeof(mask))(((reg) & (mask)) >> __bf_shf(mask));     \
         |                                  ^~~
   drivers/thunderbolt/apple.c:699:22: note: forward declaration of 'struct typec_thunderbolt_switch_data'
     699 |                                     const struct typec_thunderbolt_switch_data *data)
         |                                                  ^
   drivers/thunderbolt/apple.c:722:27: error: incomplete definition of type 'const struct typec_thunderbolt_switch_data'
     722 |                 if (TBT_CABLE_SPEED(data->tbt.cable_mode) == TBT_CABLE_10_AND_20GBPS)
         |                                     ~~~~^
   include/linux/usb/typec_tbt.h:39:60: note: expanded from macro 'TBT_CABLE_SPEED'
      39 | #define TBT_CABLE_SPEED(_vdo_)          FIELD_GET(GENMASK(18, 16), _vdo_)
         |                                                                    ^~~~~
   include/linux/bitfield.h:177:31: note: expanded from macro 'FIELD_GET'
     177 |                 __BF_FIELD_CHECK_REG(_mask, _reg, "FIELD_GET: ");       \
         |                                             ^~~~
   include/linux/bitfield.h:80:24: note: expanded from macro '__BF_FIELD_CHECK_REG'
      80 |                          __bf_cast_unsigned(reg, ~0ull),                \
         |                                             ^~~
   note: (skipping 3 expansions in backtrace; use -fmacro-backtrace-limit=0 to see all)
   include/linux/compiler_types.h:702:22: note: expanded from macro 'compiletime_assert'
     702 |         _compiletime_assert(condition, msg, __compiletime_assert_, __COUNTER__)
         |                             ^~~~~~~~~
   include/linux/compiler_types.h:690:23: note: expanded from macro '_compiletime_assert'
     690 |         __compiletime_assert(condition, msg, prefix, suffix)
         |                              ^~~~~~~~~
   include/linux/compiler_types.h:682:9: note: expanded from macro '__compiletime_assert'
     682 |                 if (!(condition))                                       \


vim +/typec_thunderbolt_switch_get_drvdata +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	

--
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.