* [android-common:mirror-pa-android12-5.10-staging 1588/1718] drivers/usb/typec/altmodes/displayport.c:159:45: error: macro "VDO" requires 4 arguments, but only 3 given
@ 2020-12-08 2:29 kernel test robot
0 siblings, 0 replies; only message in thread
From: kernel test robot @ 2020-12-08 2:29 UTC (permalink / raw)
To: kbuild-all
[-- Attachment #1: Type: text/plain, Size: 15858 bytes --]
Hi Kyle,
FYI, the error/warning still remains.
tree: https://android.googlesource.com/kernel/common mirror-pa-android12-5.10-staging
head: 0927548be1b3d5699f9b9849f90bb711ca481a07
commit: 6ba5309851720219217a8569d3785dcae02ac927 [1588/1718] ANDROID: usb: typec: tcpm: Determine SVDM Versions
config: x86_64-randconfig-s021-20201208 (attached as .config)
compiler: gcc-9 (Debian 9.3.0-15) 9.3.0
reproduce:
# apt-get install sparse
# sparse version: v0.6.3-179-ga00755aa-dirty
git remote add android-common https://android.googlesource.com/kernel/common
git fetch --no-tags android-common mirror-pa-android12-5.10-staging
git checkout 6ba5309851720219217a8569d3785dcae02ac927
# save the attached .config to linux build tree
make W=1 C=1 CF='-fdiagnostic-prefix -D__CHECK_ENDIAN__' ARCH=x86_64
If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp@intel.com>
All errors (new ones prefixed by >>):
drivers/usb/typec/altmodes/displayport.c: In function 'dp_altmode_configure_vdm':
>> drivers/usb/typec/altmodes/displayport.c:159:45: error: macro "VDO" requires 4 arguments, but only 3 given
159 | u32 header = DP_HEADER(dp, DP_CMD_CONFIGURE);
| ^
In file included from drivers/usb/typec/altmodes/displayport.c:14:
include/linux/usb/pd_vdo.h:35: note: macro "VDO" defined here
35 | #define VDO(vid, type, ver, custom) \
|
>> drivers/usb/typec/altmodes/displayport.c:18:31: error: 'VDO' undeclared (first use in this function)
18 | #define DP_HEADER(_dp, cmd) (VDO((_dp)->alt->svid, 1, cmd) | \
| ^~~
drivers/usb/typec/altmodes/displayport.c:159:15: note: in expansion of macro 'DP_HEADER'
159 | u32 header = DP_HEADER(dp, DP_CMD_CONFIGURE);
| ^~~~~~~~~
drivers/usb/typec/altmodes/displayport.c:18:31: note: each undeclared identifier is reported only once for each function it appears in
18 | #define DP_HEADER(_dp, cmd) (VDO((_dp)->alt->svid, 1, cmd) | \
| ^~~
drivers/usb/typec/altmodes/displayport.c:159:15: note: in expansion of macro 'DP_HEADER'
159 | u32 header = DP_HEADER(dp, DP_CMD_CONFIGURE);
| ^~~~~~~~~
drivers/usb/typec/altmodes/displayport.c: In function 'dp_altmode_work':
drivers/usb/typec/altmodes/displayport.c:197:46: error: macro "VDO" requires 4 arguments, but only 3 given
197 | header = DP_HEADER(dp, DP_CMD_STATUS_UPDATE);
| ^
In file included from drivers/usb/typec/altmodes/displayport.c:14:
include/linux/usb/pd_vdo.h:35: note: macro "VDO" defined here
35 | #define VDO(vid, type, ver, custom) \
|
>> drivers/usb/typec/altmodes/displayport.c:18:31: error: 'VDO' undeclared (first use in this function)
18 | #define DP_HEADER(_dp, cmd) (VDO((_dp)->alt->svid, 1, cmd) | \
| ^~~
drivers/usb/typec/altmodes/displayport.c:197:12: note: in expansion of macro 'DP_HEADER'
197 | header = DP_HEADER(dp, DP_CMD_STATUS_UPDATE);
| ^~~~~~~~~
vim +/VDO +159 drivers/usb/typec/altmodes/displayport.c
0e3bb7d6894d9b Heikki Krogerus 2018-06-27 17
d266e96820cc36 Ajay Gupta 2019-04-23 @18 #define DP_HEADER(_dp, cmd) (VDO((_dp)->alt->svid, 1, cmd) | \
0e3bb7d6894d9b Heikki Krogerus 2018-06-27 19 VDO_OPOS(USB_TYPEC_DP_MODE))
0e3bb7d6894d9b Heikki Krogerus 2018-06-27 20
0e3bb7d6894d9b Heikki Krogerus 2018-06-27 21 enum {
0e3bb7d6894d9b Heikki Krogerus 2018-06-27 22 DP_CONF_USB,
0e3bb7d6894d9b Heikki Krogerus 2018-06-27 23 DP_CONF_DFP_D,
0e3bb7d6894d9b Heikki Krogerus 2018-06-27 24 DP_CONF_UFP_D,
0e3bb7d6894d9b Heikki Krogerus 2018-06-27 25 DP_CONF_DUAL_D,
0e3bb7d6894d9b Heikki Krogerus 2018-06-27 26 };
0e3bb7d6894d9b Heikki Krogerus 2018-06-27 27
0e3bb7d6894d9b Heikki Krogerus 2018-06-27 28 /* Pin assignments that use USB3.1 Gen2 signaling to carry DP protocol */
0e3bb7d6894d9b Heikki Krogerus 2018-06-27 29 #define DP_PIN_ASSIGN_GEN2_BR_MASK (BIT(DP_PIN_ASSIGN_A) | \
0e3bb7d6894d9b Heikki Krogerus 2018-06-27 30 BIT(DP_PIN_ASSIGN_B))
0e3bb7d6894d9b Heikki Krogerus 2018-06-27 31
0e3bb7d6894d9b Heikki Krogerus 2018-06-27 32 /* Pin assignments that use DP v1.3 signaling to carry DP protocol */
0e3bb7d6894d9b Heikki Krogerus 2018-06-27 33 #define DP_PIN_ASSIGN_DP_BR_MASK (BIT(DP_PIN_ASSIGN_C) | \
0e3bb7d6894d9b Heikki Krogerus 2018-06-27 34 BIT(DP_PIN_ASSIGN_D) | \
0e3bb7d6894d9b Heikki Krogerus 2018-06-27 35 BIT(DP_PIN_ASSIGN_E) | \
0e3bb7d6894d9b Heikki Krogerus 2018-06-27 36 BIT(DP_PIN_ASSIGN_F))
0e3bb7d6894d9b Heikki Krogerus 2018-06-27 37
0e3bb7d6894d9b Heikki Krogerus 2018-06-27 38 /* DP only pin assignments */
0e3bb7d6894d9b Heikki Krogerus 2018-06-27 39 #define DP_PIN_ASSIGN_DP_ONLY_MASK (BIT(DP_PIN_ASSIGN_A) | \
0e3bb7d6894d9b Heikki Krogerus 2018-06-27 40 BIT(DP_PIN_ASSIGN_C) | \
0e3bb7d6894d9b Heikki Krogerus 2018-06-27 41 BIT(DP_PIN_ASSIGN_E))
0e3bb7d6894d9b Heikki Krogerus 2018-06-27 42
0e3bb7d6894d9b Heikki Krogerus 2018-06-27 43 /* Pin assignments where one channel is for USB */
0e3bb7d6894d9b Heikki Krogerus 2018-06-27 44 #define DP_PIN_ASSIGN_MULTI_FUNC_MASK (BIT(DP_PIN_ASSIGN_B) | \
0e3bb7d6894d9b Heikki Krogerus 2018-06-27 45 BIT(DP_PIN_ASSIGN_D) | \
0e3bb7d6894d9b Heikki Krogerus 2018-06-27 46 BIT(DP_PIN_ASSIGN_F))
0e3bb7d6894d9b Heikki Krogerus 2018-06-27 47
0e3bb7d6894d9b Heikki Krogerus 2018-06-27 48 enum dp_state {
0e3bb7d6894d9b Heikki Krogerus 2018-06-27 49 DP_STATE_IDLE,
0e3bb7d6894d9b Heikki Krogerus 2018-06-27 50 DP_STATE_ENTER,
0e3bb7d6894d9b Heikki Krogerus 2018-06-27 51 DP_STATE_UPDATE,
0e3bb7d6894d9b Heikki Krogerus 2018-06-27 52 DP_STATE_CONFIGURE,
0e3bb7d6894d9b Heikki Krogerus 2018-06-27 53 DP_STATE_EXIT,
0e3bb7d6894d9b Heikki Krogerus 2018-06-27 54 };
0e3bb7d6894d9b Heikki Krogerus 2018-06-27 55
0e3bb7d6894d9b Heikki Krogerus 2018-06-27 56 struct dp_altmode {
0e3bb7d6894d9b Heikki Krogerus 2018-06-27 57 struct typec_displayport_data data;
0e3bb7d6894d9b Heikki Krogerus 2018-06-27 58
0e3bb7d6894d9b Heikki Krogerus 2018-06-27 59 enum dp_state state;
0e3bb7d6894d9b Heikki Krogerus 2018-06-27 60
0e3bb7d6894d9b Heikki Krogerus 2018-06-27 61 struct mutex lock; /* device lock */
0e3bb7d6894d9b Heikki Krogerus 2018-06-27 62 struct work_struct work;
0e3bb7d6894d9b Heikki Krogerus 2018-06-27 63 struct typec_altmode *alt;
0e3bb7d6894d9b Heikki Krogerus 2018-06-27 64 const struct typec_altmode *port;
0e3bb7d6894d9b Heikki Krogerus 2018-06-27 65 };
0e3bb7d6894d9b Heikki Krogerus 2018-06-27 66
0e3bb7d6894d9b Heikki Krogerus 2018-06-27 67 static int dp_altmode_notify(struct dp_altmode *dp)
0e3bb7d6894d9b Heikki Krogerus 2018-06-27 68 {
0e3bb7d6894d9b Heikki Krogerus 2018-06-27 69 u8 state = get_count_order(DP_CONF_GET_PIN_ASSIGN(dp->data.conf));
0e3bb7d6894d9b Heikki Krogerus 2018-06-27 70
0e3bb7d6894d9b Heikki Krogerus 2018-06-27 71 return typec_altmode_notify(dp->alt, TYPEC_MODAL_STATE(state),
0e3bb7d6894d9b Heikki Krogerus 2018-06-27 72 &dp->data);
0e3bb7d6894d9b Heikki Krogerus 2018-06-27 73 }
0e3bb7d6894d9b Heikki Krogerus 2018-06-27 74
0e3bb7d6894d9b Heikki Krogerus 2018-06-27 75 static int dp_altmode_configure(struct dp_altmode *dp, u8 con)
0e3bb7d6894d9b Heikki Krogerus 2018-06-27 76 {
0e3bb7d6894d9b Heikki Krogerus 2018-06-27 77 u32 conf = DP_CONF_SIGNALING_DP; /* Only DP signaling supported */
0e3bb7d6894d9b Heikki Krogerus 2018-06-27 78 u8 pin_assign = 0;
0e3bb7d6894d9b Heikki Krogerus 2018-06-27 79
0e3bb7d6894d9b Heikki Krogerus 2018-06-27 80 switch (con) {
0e3bb7d6894d9b Heikki Krogerus 2018-06-27 81 case DP_STATUS_CON_DISABLED:
0e3bb7d6894d9b Heikki Krogerus 2018-06-27 82 return 0;
0e3bb7d6894d9b Heikki Krogerus 2018-06-27 83 case DP_STATUS_CON_DFP_D:
0e3bb7d6894d9b Heikki Krogerus 2018-06-27 84 conf |= DP_CONF_UFP_U_AS_DFP_D;
0e3bb7d6894d9b Heikki Krogerus 2018-06-27 85 pin_assign = DP_CAP_UFP_D_PIN_ASSIGN(dp->alt->vdo) &
0e3bb7d6894d9b Heikki Krogerus 2018-06-27 86 DP_CAP_DFP_D_PIN_ASSIGN(dp->port->vdo);
0e3bb7d6894d9b Heikki Krogerus 2018-06-27 87 break;
0e3bb7d6894d9b Heikki Krogerus 2018-06-27 88 case DP_STATUS_CON_UFP_D:
0e3bb7d6894d9b Heikki Krogerus 2018-06-27 89 case DP_STATUS_CON_BOTH: /* NOTE: First acting as DP source */
0e3bb7d6894d9b Heikki Krogerus 2018-06-27 90 conf |= DP_CONF_UFP_U_AS_UFP_D;
0e3bb7d6894d9b Heikki Krogerus 2018-06-27 91 pin_assign = DP_CAP_DFP_D_PIN_ASSIGN(dp->alt->vdo) &
0e3bb7d6894d9b Heikki Krogerus 2018-06-27 92 DP_CAP_UFP_D_PIN_ASSIGN(dp->port->vdo);
0e3bb7d6894d9b Heikki Krogerus 2018-06-27 93 break;
0e3bb7d6894d9b Heikki Krogerus 2018-06-27 94 default:
0e3bb7d6894d9b Heikki Krogerus 2018-06-27 95 break;
0e3bb7d6894d9b Heikki Krogerus 2018-06-27 96 }
0e3bb7d6894d9b Heikki Krogerus 2018-06-27 97
0e3bb7d6894d9b Heikki Krogerus 2018-06-27 98 /* Determining the initial pin assignment. */
0e3bb7d6894d9b Heikki Krogerus 2018-06-27 99 if (!DP_CONF_GET_PIN_ASSIGN(dp->data.conf)) {
0e3bb7d6894d9b Heikki Krogerus 2018-06-27 100 /* Is USB together with DP preferred */
0e3bb7d6894d9b Heikki Krogerus 2018-06-27 101 if (dp->data.status & DP_STATUS_PREFER_MULTI_FUNC &&
0e3bb7d6894d9b Heikki Krogerus 2018-06-27 102 pin_assign & DP_PIN_ASSIGN_MULTI_FUNC_MASK)
0e3bb7d6894d9b Heikki Krogerus 2018-06-27 103 pin_assign &= DP_PIN_ASSIGN_MULTI_FUNC_MASK;
09fed4d64d3f1c Hans de Goede 2019-02-25 104 else if (pin_assign & DP_PIN_ASSIGN_DP_ONLY_MASK)
0e3bb7d6894d9b Heikki Krogerus 2018-06-27 105 pin_assign &= DP_PIN_ASSIGN_DP_ONLY_MASK;
0e3bb7d6894d9b Heikki Krogerus 2018-06-27 106
0e3bb7d6894d9b Heikki Krogerus 2018-06-27 107 if (!pin_assign)
0e3bb7d6894d9b Heikki Krogerus 2018-06-27 108 return -EINVAL;
0e3bb7d6894d9b Heikki Krogerus 2018-06-27 109
0e3bb7d6894d9b Heikki Krogerus 2018-06-27 110 conf |= DP_CONF_SET_PIN_ASSIGN(pin_assign);
0e3bb7d6894d9b Heikki Krogerus 2018-06-27 111 }
0e3bb7d6894d9b Heikki Krogerus 2018-06-27 112
0e3bb7d6894d9b Heikki Krogerus 2018-06-27 113 dp->data.conf = conf;
0e3bb7d6894d9b Heikki Krogerus 2018-06-27 114
0e3bb7d6894d9b Heikki Krogerus 2018-06-27 115 return 0;
0e3bb7d6894d9b Heikki Krogerus 2018-06-27 116 }
0e3bb7d6894d9b Heikki Krogerus 2018-06-27 117
0e3bb7d6894d9b Heikki Krogerus 2018-06-27 118 static int dp_altmode_status_update(struct dp_altmode *dp)
0e3bb7d6894d9b Heikki Krogerus 2018-06-27 119 {
0e3bb7d6894d9b Heikki Krogerus 2018-06-27 120 bool configured = !!DP_CONF_GET_PIN_ASSIGN(dp->data.conf);
0e3bb7d6894d9b Heikki Krogerus 2018-06-27 121 u8 con = DP_STATUS_CONNECTION(dp->data.status);
0e3bb7d6894d9b Heikki Krogerus 2018-06-27 122 int ret = 0;
0e3bb7d6894d9b Heikki Krogerus 2018-06-27 123
0e3bb7d6894d9b Heikki Krogerus 2018-06-27 124 if (configured && (dp->data.status & DP_STATUS_SWITCH_TO_USB)) {
0e3bb7d6894d9b Heikki Krogerus 2018-06-27 125 dp->data.conf = 0;
0e3bb7d6894d9b Heikki Krogerus 2018-06-27 126 dp->state = DP_STATE_CONFIGURE;
0e3bb7d6894d9b Heikki Krogerus 2018-06-27 127 } else if (dp->data.status & DP_STATUS_EXIT_DP_MODE) {
0e3bb7d6894d9b Heikki Krogerus 2018-06-27 128 dp->state = DP_STATE_EXIT;
0e3bb7d6894d9b Heikki Krogerus 2018-06-27 129 } else if (!(con & DP_CONF_CURRENTLY(dp->data.conf))) {
0e3bb7d6894d9b Heikki Krogerus 2018-06-27 130 ret = dp_altmode_configure(dp, con);
0e3bb7d6894d9b Heikki Krogerus 2018-06-27 131 if (!ret)
0e3bb7d6894d9b Heikki Krogerus 2018-06-27 132 dp->state = DP_STATE_CONFIGURE;
0e3bb7d6894d9b Heikki Krogerus 2018-06-27 133 }
0e3bb7d6894d9b Heikki Krogerus 2018-06-27 134
0e3bb7d6894d9b Heikki Krogerus 2018-06-27 135 return ret;
0e3bb7d6894d9b Heikki Krogerus 2018-06-27 136 }
0e3bb7d6894d9b Heikki Krogerus 2018-06-27 137
0e3bb7d6894d9b Heikki Krogerus 2018-06-27 138 static int dp_altmode_configured(struct dp_altmode *dp)
0e3bb7d6894d9b Heikki Krogerus 2018-06-27 139 {
0e3bb7d6894d9b Heikki Krogerus 2018-06-27 140 int ret;
0e3bb7d6894d9b Heikki Krogerus 2018-06-27 141
0e3bb7d6894d9b Heikki Krogerus 2018-06-27 142 sysfs_notify(&dp->alt->dev.kobj, "displayport", "configuration");
0e3bb7d6894d9b Heikki Krogerus 2018-06-27 143
0e3bb7d6894d9b Heikki Krogerus 2018-06-27 144 if (!dp->data.conf)
0e3bb7d6894d9b Heikki Krogerus 2018-06-27 145 return typec_altmode_notify(dp->alt, TYPEC_STATE_USB,
0e3bb7d6894d9b Heikki Krogerus 2018-06-27 146 &dp->data);
0e3bb7d6894d9b Heikki Krogerus 2018-06-27 147
0e3bb7d6894d9b Heikki Krogerus 2018-06-27 148 ret = dp_altmode_notify(dp);
0e3bb7d6894d9b Heikki Krogerus 2018-06-27 149 if (ret)
0e3bb7d6894d9b Heikki Krogerus 2018-06-27 150 return ret;
0e3bb7d6894d9b Heikki Krogerus 2018-06-27 151
0e3bb7d6894d9b Heikki Krogerus 2018-06-27 152 sysfs_notify(&dp->alt->dev.kobj, "displayport", "pin_assignment");
0e3bb7d6894d9b Heikki Krogerus 2018-06-27 153
0e3bb7d6894d9b Heikki Krogerus 2018-06-27 154 return 0;
0e3bb7d6894d9b Heikki Krogerus 2018-06-27 155 }
0e3bb7d6894d9b Heikki Krogerus 2018-06-27 156
0e3bb7d6894d9b Heikki Krogerus 2018-06-27 157 static int dp_altmode_configure_vdm(struct dp_altmode *dp, u32 conf)
0e3bb7d6894d9b Heikki Krogerus 2018-06-27 158 {
d266e96820cc36 Ajay Gupta 2019-04-23 @159 u32 header = DP_HEADER(dp, DP_CMD_CONFIGURE);
0e3bb7d6894d9b Heikki Krogerus 2018-06-27 160 int ret;
0e3bb7d6894d9b Heikki Krogerus 2018-06-27 161
0e3bb7d6894d9b Heikki Krogerus 2018-06-27 162 ret = typec_altmode_notify(dp->alt, TYPEC_STATE_SAFE, &dp->data);
0e3bb7d6894d9b Heikki Krogerus 2018-06-27 163 if (ret) {
0e3bb7d6894d9b Heikki Krogerus 2018-06-27 164 dev_err(&dp->alt->dev,
0e3bb7d6894d9b Heikki Krogerus 2018-06-27 165 "unable to put to connector to safe mode\n");
0e3bb7d6894d9b Heikki Krogerus 2018-06-27 166 return ret;
0e3bb7d6894d9b Heikki Krogerus 2018-06-27 167 }
0e3bb7d6894d9b Heikki Krogerus 2018-06-27 168
0e3bb7d6894d9b Heikki Krogerus 2018-06-27 169 ret = typec_altmode_vdm(dp->alt, header, &conf, 2);
0e3bb7d6894d9b Heikki Krogerus 2018-06-27 170 if (ret) {
0e3bb7d6894d9b Heikki Krogerus 2018-06-27 171 if (DP_CONF_GET_PIN_ASSIGN(dp->data.conf))
0e3bb7d6894d9b Heikki Krogerus 2018-06-27 172 dp_altmode_notify(dp);
0e3bb7d6894d9b Heikki Krogerus 2018-06-27 173 else
0e3bb7d6894d9b Heikki Krogerus 2018-06-27 174 typec_altmode_notify(dp->alt, TYPEC_STATE_USB,
0e3bb7d6894d9b Heikki Krogerus 2018-06-27 175 &dp->data);
0e3bb7d6894d9b Heikki Krogerus 2018-06-27 176 }
0e3bb7d6894d9b Heikki Krogerus 2018-06-27 177
0e3bb7d6894d9b Heikki Krogerus 2018-06-27 178 return ret;
0e3bb7d6894d9b Heikki Krogerus 2018-06-27 179 }
0e3bb7d6894d9b Heikki Krogerus 2018-06-27 180
:::::: The code at line 159 was first introduced by commit
:::::: d266e96820cc3654ba1338c55e5731fc67030d8e usb: typec: displayport: Export probe and remove functions
:::::: TO: Ajay Gupta <ajayg@nvidia.com>
:::::: CC: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all(a)lists.01.org
[-- Attachment #2: config.gz --]
[-- Type: application/gzip, Size: 38850 bytes --]
^ permalink raw reply [flat|nested] only message in thread
only message in thread, other threads:[~2020-12-08 2:29 UTC | newest]
Thread overview: (only message) (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2020-12-08 2:29 [android-common:mirror-pa-android12-5.10-staging 1588/1718] drivers/usb/typec/altmodes/displayport.c:159:45: error: macro "VDO" requires 4 arguments, but only 3 given 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.