@@ -981,16 +981,15 @@ static void tcpm_queue_vdm_unlocked(struct tcpm_port *port, const u32 header,
981
981
mutex_unlock (& port -> lock );
982
982
}
983
983
984
- static void svdm_consume_identity (struct tcpm_port * port , const __le32 * payload ,
985
- int cnt )
984
+ static void svdm_consume_identity (struct tcpm_port * port , const u32 * p , int cnt )
986
985
{
987
- u32 vdo = le32_to_cpu ( payload [VDO_INDEX_IDH ]) ;
988
- u32 product = le32_to_cpu ( payload [VDO_INDEX_PRODUCT ]) ;
986
+ u32 vdo = p [VDO_INDEX_IDH ];
987
+ u32 product = p [VDO_INDEX_PRODUCT ];
989
988
990
989
memset (& port -> mode_data , 0 , sizeof (port -> mode_data ));
991
990
992
991
port -> partner_ident .id_header = vdo ;
993
- port -> partner_ident .cert_stat = le32_to_cpu ( payload [VDO_INDEX_CSTAT ]) ;
992
+ port -> partner_ident .cert_stat = p [VDO_INDEX_CSTAT ];
994
993
port -> partner_ident .product = product ;
995
994
996
995
typec_partner_set_identity (port -> partner );
@@ -1000,17 +999,15 @@ static void svdm_consume_identity(struct tcpm_port *port, const __le32 *payload,
1000
999
PD_PRODUCT_PID (product ), product & 0xffff );
1001
1000
}
1002
1001
1003
- static bool svdm_consume_svids (struct tcpm_port * port , const __le32 * payload ,
1004
- int cnt )
1002
+ static bool svdm_consume_svids (struct tcpm_port * port , const u32 * p , int cnt )
1005
1003
{
1006
1004
struct pd_mode_data * pmdata = & port -> mode_data ;
1007
1005
int i ;
1008
1006
1009
1007
for (i = 1 ; i < cnt ; i ++ ) {
1010
- u32 p = le32_to_cpu (payload [i ]);
1011
1008
u16 svid ;
1012
1009
1013
- svid = (p >> 16 ) & 0xffff ;
1010
+ svid = (p [ i ] >> 16 ) & 0xffff ;
1014
1011
if (!svid )
1015
1012
return false;
1016
1013
@@ -1020,7 +1017,7 @@ static bool svdm_consume_svids(struct tcpm_port *port, const __le32 *payload,
1020
1017
pmdata -> svids [pmdata -> nsvids ++ ] = svid ;
1021
1018
tcpm_log (port , "SVID %d: 0x%x" , pmdata -> nsvids , svid );
1022
1019
1023
- svid = p & 0xffff ;
1020
+ svid = p [ i ] & 0xffff ;
1024
1021
if (!svid )
1025
1022
return false;
1026
1023
@@ -1036,8 +1033,7 @@ static bool svdm_consume_svids(struct tcpm_port *port, const __le32 *payload,
1036
1033
return false;
1037
1034
}
1038
1035
1039
- static void svdm_consume_modes (struct tcpm_port * port , const __le32 * payload ,
1040
- int cnt )
1036
+ static void svdm_consume_modes (struct tcpm_port * port , const u32 * p , int cnt )
1041
1037
{
1042
1038
struct pd_mode_data * pmdata = & port -> mode_data ;
1043
1039
struct typec_altmode_desc * paltmode ;
@@ -1054,7 +1050,7 @@ static void svdm_consume_modes(struct tcpm_port *port, const __le32 *payload,
1054
1050
1055
1051
paltmode -> svid = pmdata -> svids [pmdata -> svid_index ];
1056
1052
paltmode -> mode = i ;
1057
- paltmode -> vdo = le32_to_cpu ( payload [i ]) ;
1053
+ paltmode -> vdo = p [i ];
1058
1054
1059
1055
tcpm_log (port , " Alternate mode %d: SVID 0x%04x, VDO %d: 0x%08x" ,
1060
1056
pmdata -> altmodes , paltmode -> svid ,
@@ -1084,21 +1080,17 @@ static void tcpm_register_partner_altmodes(struct tcpm_port *port)
1084
1080
1085
1081
#define supports_modal (port ) PD_IDH_MODAL_SUPP((port)->partner_ident.id_header)
1086
1082
1087
- static int tcpm_pd_svdm (struct tcpm_port * port , const __le32 * payload , int cnt ,
1083
+ static int tcpm_pd_svdm (struct tcpm_port * port , const u32 * p , int cnt ,
1088
1084
u32 * response )
1089
1085
{
1090
1086
struct typec_altmode * adev ;
1091
1087
struct typec_altmode * pdev ;
1092
1088
struct pd_mode_data * modep ;
1093
- u32 p [PD_MAX_PAYLOAD ];
1094
1089
int rlen = 0 ;
1095
1090
int cmd_type ;
1096
1091
int cmd ;
1097
1092
int i ;
1098
1093
1099
- for (i = 0 ; i < cnt ; i ++ )
1100
- p [i ] = le32_to_cpu (payload [i ]);
1101
-
1102
1094
cmd_type = PD_VDO_CMDT (p [0 ]);
1103
1095
cmd = PD_VDO_CMD (p [0 ]);
1104
1096
@@ -1159,13 +1151,13 @@ static int tcpm_pd_svdm(struct tcpm_port *port, const __le32 *payload, int cnt,
1159
1151
switch (cmd ) {
1160
1152
case CMD_DISCOVER_IDENT :
1161
1153
/* 6.4.4.3.1 */
1162
- svdm_consume_identity (port , payload , cnt );
1154
+ svdm_consume_identity (port , p , cnt );
1163
1155
response [0 ] = VDO (USB_SID_PD , 1 , CMD_DISCOVER_SVID );
1164
1156
rlen = 1 ;
1165
1157
break ;
1166
1158
case CMD_DISCOVER_SVID :
1167
1159
/* 6.4.4.3.2 */
1168
- if (svdm_consume_svids (port , payload , cnt )) {
1160
+ if (svdm_consume_svids (port , p , cnt )) {
1169
1161
response [0 ] = VDO (USB_SID_PD , 1 ,
1170
1162
CMD_DISCOVER_SVID );
1171
1163
rlen = 1 ;
@@ -1177,7 +1169,7 @@ static int tcpm_pd_svdm(struct tcpm_port *port, const __le32 *payload, int cnt,
1177
1169
break ;
1178
1170
case CMD_DISCOVER_MODES :
1179
1171
/* 6.4.4.3.3 */
1180
- svdm_consume_modes (port , payload , cnt );
1172
+ svdm_consume_modes (port , p , cnt );
1181
1173
modep -> svid_index ++ ;
1182
1174
if (modep -> svid_index < modep -> nsvids ) {
1183
1175
u16 svid = modep -> svids [modep -> svid_index ];
@@ -1240,15 +1232,18 @@ static int tcpm_pd_svdm(struct tcpm_port *port, const __le32 *payload, int cnt,
1240
1232
static void tcpm_handle_vdm_request (struct tcpm_port * port ,
1241
1233
const __le32 * payload , int cnt )
1242
1234
{
1243
- int rlen = 0 ;
1235
+ u32 p [ PD_MAX_PAYLOAD ] ;
1244
1236
u32 response [8 ] = { };
1245
- u32 p0 = le32_to_cpu (payload [0 ]);
1237
+ int i , rlen = 0 ;
1238
+
1239
+ for (i = 0 ; i < cnt ; i ++ )
1240
+ p [i ] = le32_to_cpu (payload [i ]);
1246
1241
1247
1242
if (port -> vdm_state == VDM_STATE_BUSY ) {
1248
1243
/* If UFP responded busy retry after timeout */
1249
- if (PD_VDO_CMDT (p0 ) == CMDT_RSP_BUSY ) {
1244
+ if (PD_VDO_CMDT (p [ 0 ] ) == CMDT_RSP_BUSY ) {
1250
1245
port -> vdm_state = VDM_STATE_WAIT_RSP_BUSY ;
1251
- port -> vdo_retry = (p0 & ~VDO_CMDT_MASK ) |
1246
+ port -> vdo_retry = (p [ 0 ] & ~VDO_CMDT_MASK ) |
1252
1247
CMDT_INIT ;
1253
1248
mod_delayed_work (port -> wq , & port -> vdm_state_machine ,
1254
1249
msecs_to_jiffies (PD_T_VDM_BUSY ));
@@ -1257,8 +1252,8 @@ static void tcpm_handle_vdm_request(struct tcpm_port *port,
1257
1252
port -> vdm_state = VDM_STATE_DONE ;
1258
1253
}
1259
1254
1260
- if (PD_VDO_SVDM (p0 ))
1261
- rlen = tcpm_pd_svdm (port , payload , cnt , response );
1255
+ if (PD_VDO_SVDM (p [ 0 ] ))
1256
+ rlen = tcpm_pd_svdm (port , p , cnt , response );
1262
1257
1263
1258
if (rlen > 0 )
1264
1259
tcpm_queue_vdm (port , response [0 ], & response [1 ], rlen - 1 );
0 commit comments