Loading drivers/usb/pd/policy_engine.c +19 −22 Original line number Diff line number Diff line Loading @@ -275,7 +275,7 @@ static void *usbpd_ipc_log; #define PD_MAX_DATA_OBJ 7 #define PD_SRC_CAP_EXT_DB_LEN 24 #define PD_STATUS_DB_LEN 5 #define PD_STATUS_DB_LEN 6 #define PD_BATTERY_CAP_DB_LEN 9 #define PD_MAX_EXT_MSG_LEN 260 Loading Loading @@ -1412,10 +1412,12 @@ int usbpd_send_svdm(struct usbpd *pd, u16 svid, u8 cmd, enum usbpd_svdm_cmd_type cmd_type, int obj_pos, const u32 *vdos, int num_vdos) { u32 svdm_hdr = SVDM_HDR(svid, 0, obj_pos, cmd_type, cmd); u32 svdm_hdr = SVDM_HDR(svid, pd->spec_rev == USBPD_REV_30 ? 1 : 0, obj_pos, cmd_type, cmd); usbpd_dbg(&pd->dev, "VDM tx: svid:%x cmd:%x cmd_type:%x svdm_hdr:%x\n", svid, cmd, cmd_type, svdm_hdr); usbpd_dbg(&pd->dev, "VDM tx: svid:%04x ver:%d obj_pos:%d cmd:%x cmd_type:%x svdm_hdr:%x\n", svid, pd->spec_rev == USBPD_REV_30 ? 1 : 0, obj_pos, cmd, cmd_type, svdm_hdr); return usbpd_send_vdm(pd, svdm_hdr, vdos, num_vdos); } Loading Loading @@ -1582,7 +1584,7 @@ static void handle_vdm_rx(struct usbpd *pd, struct rx_msg *rx_msg) ktime_t recvd_time = ktime_get(); usbpd_dbg(&pd->dev, "VDM rx: svid:%x cmd:%x cmd_type:%x vdm_hdr:%x has_dp: %s\n", "VDM rx: svid:%04x cmd:%x cmd_type:%x vdm_hdr:%x has_dp: %s\n", svid, cmd, cmd_type, vdm_hdr, pd->has_dp ? "true" : "false"); Loading @@ -1605,11 +1607,9 @@ static void handle_vdm_rx(struct usbpd *pd, struct rx_msg *rx_msg) return; } if (SVDM_HDR_VER(vdm_hdr) > 1) { usbpd_dbg(&pd->dev, "Discarding SVDM with incorrect version:%d\n", if (SVDM_HDR_VER(vdm_hdr) > 1) usbpd_dbg(&pd->dev, "Received SVDM with unsupported version:%d\n", SVDM_HDR_VER(vdm_hdr)); return; } if (cmd_type != SVDM_CMD_TYPE_INITIATOR && pd->current_state != PE_SRC_STARTUP_WAIT_FOR_VDM_RESP) Loading @@ -1634,11 +1634,6 @@ static void handle_vdm_rx(struct usbpd *pd, struct rx_msg *rx_msg) 0, SOP_MSG); if (ret) usbpd_set_state(pd, PE_SEND_SOFT_RESET); } else { usbpd_send_svdm(pd, svid, cmd, SVDM_CMD_TYPE_RESP_NAK, SVDM_HDR_OBJ_POS(vdm_hdr), NULL, 0); } } break; Loading Loading @@ -3016,13 +3011,15 @@ static bool handle_ext_snk_ready(struct usbpd *pd, struct rx_msg *rx_msg) complete(&pd->is_ready); break; case MSG_STATUS: if (rx_msg->data_len != PD_STATUS_DB_LEN) { usbpd_err(&pd->dev, "Invalid status db\n"); break; } if (rx_msg->data_len > PD_STATUS_DB_LEN) usbpd_err(&pd->dev, "Invalid status db length:%d\n", rx_msg->data_len); memset(&pd->status_db, 0, sizeof(pd->status_db)); memcpy(&pd->status_db, rx_msg->payload, sizeof(pd->status_db)); min((size_t)rx_msg->data_len, sizeof(pd->status_db))); kobject_uevent(&pd->dev.kobj, KOBJ_CHANGE); complete(&pd->is_ready); break; case MSG_BATTERY_CAPABILITIES: if (rx_msg->data_len != PD_BATTERY_CAP_DB_LEN) { Loading Loading @@ -4014,9 +4011,9 @@ static int usbpd_uevent(struct device *dev, struct kobj_uevent_env *env) "explicit" : "implicit"); add_uevent_var(env, "ALT_MODE=%d", pd->vdm_state == MODE_ENTERED); add_uevent_var(env, "SDB=%02x %02x %02x %02x %02x", pd->status_db[0], pd->status_db[1], pd->status_db[2], pd->status_db[3], pd->status_db[4]); add_uevent_var(env, "SDB=%02x %02x %02x %02x %02x %02x", pd->status_db[0], pd->status_db[1], pd->status_db[2], pd->status_db[3], pd->status_db[4], pd->status_db[5]); return 0; } Loading Loading
drivers/usb/pd/policy_engine.c +19 −22 Original line number Diff line number Diff line Loading @@ -275,7 +275,7 @@ static void *usbpd_ipc_log; #define PD_MAX_DATA_OBJ 7 #define PD_SRC_CAP_EXT_DB_LEN 24 #define PD_STATUS_DB_LEN 5 #define PD_STATUS_DB_LEN 6 #define PD_BATTERY_CAP_DB_LEN 9 #define PD_MAX_EXT_MSG_LEN 260 Loading Loading @@ -1412,10 +1412,12 @@ int usbpd_send_svdm(struct usbpd *pd, u16 svid, u8 cmd, enum usbpd_svdm_cmd_type cmd_type, int obj_pos, const u32 *vdos, int num_vdos) { u32 svdm_hdr = SVDM_HDR(svid, 0, obj_pos, cmd_type, cmd); u32 svdm_hdr = SVDM_HDR(svid, pd->spec_rev == USBPD_REV_30 ? 1 : 0, obj_pos, cmd_type, cmd); usbpd_dbg(&pd->dev, "VDM tx: svid:%x cmd:%x cmd_type:%x svdm_hdr:%x\n", svid, cmd, cmd_type, svdm_hdr); usbpd_dbg(&pd->dev, "VDM tx: svid:%04x ver:%d obj_pos:%d cmd:%x cmd_type:%x svdm_hdr:%x\n", svid, pd->spec_rev == USBPD_REV_30 ? 1 : 0, obj_pos, cmd, cmd_type, svdm_hdr); return usbpd_send_vdm(pd, svdm_hdr, vdos, num_vdos); } Loading Loading @@ -1582,7 +1584,7 @@ static void handle_vdm_rx(struct usbpd *pd, struct rx_msg *rx_msg) ktime_t recvd_time = ktime_get(); usbpd_dbg(&pd->dev, "VDM rx: svid:%x cmd:%x cmd_type:%x vdm_hdr:%x has_dp: %s\n", "VDM rx: svid:%04x cmd:%x cmd_type:%x vdm_hdr:%x has_dp: %s\n", svid, cmd, cmd_type, vdm_hdr, pd->has_dp ? "true" : "false"); Loading @@ -1605,11 +1607,9 @@ static void handle_vdm_rx(struct usbpd *pd, struct rx_msg *rx_msg) return; } if (SVDM_HDR_VER(vdm_hdr) > 1) { usbpd_dbg(&pd->dev, "Discarding SVDM with incorrect version:%d\n", if (SVDM_HDR_VER(vdm_hdr) > 1) usbpd_dbg(&pd->dev, "Received SVDM with unsupported version:%d\n", SVDM_HDR_VER(vdm_hdr)); return; } if (cmd_type != SVDM_CMD_TYPE_INITIATOR && pd->current_state != PE_SRC_STARTUP_WAIT_FOR_VDM_RESP) Loading @@ -1634,11 +1634,6 @@ static void handle_vdm_rx(struct usbpd *pd, struct rx_msg *rx_msg) 0, SOP_MSG); if (ret) usbpd_set_state(pd, PE_SEND_SOFT_RESET); } else { usbpd_send_svdm(pd, svid, cmd, SVDM_CMD_TYPE_RESP_NAK, SVDM_HDR_OBJ_POS(vdm_hdr), NULL, 0); } } break; Loading Loading @@ -3016,13 +3011,15 @@ static bool handle_ext_snk_ready(struct usbpd *pd, struct rx_msg *rx_msg) complete(&pd->is_ready); break; case MSG_STATUS: if (rx_msg->data_len != PD_STATUS_DB_LEN) { usbpd_err(&pd->dev, "Invalid status db\n"); break; } if (rx_msg->data_len > PD_STATUS_DB_LEN) usbpd_err(&pd->dev, "Invalid status db length:%d\n", rx_msg->data_len); memset(&pd->status_db, 0, sizeof(pd->status_db)); memcpy(&pd->status_db, rx_msg->payload, sizeof(pd->status_db)); min((size_t)rx_msg->data_len, sizeof(pd->status_db))); kobject_uevent(&pd->dev.kobj, KOBJ_CHANGE); complete(&pd->is_ready); break; case MSG_BATTERY_CAPABILITIES: if (rx_msg->data_len != PD_BATTERY_CAP_DB_LEN) { Loading Loading @@ -4014,9 +4011,9 @@ static int usbpd_uevent(struct device *dev, struct kobj_uevent_env *env) "explicit" : "implicit"); add_uevent_var(env, "ALT_MODE=%d", pd->vdm_state == MODE_ENTERED); add_uevent_var(env, "SDB=%02x %02x %02x %02x %02x", pd->status_db[0], pd->status_db[1], pd->status_db[2], pd->status_db[3], pd->status_db[4]); add_uevent_var(env, "SDB=%02x %02x %02x %02x %02x %02x", pd->status_db[0], pd->status_db[1], pd->status_db[2], pd->status_db[3], pd->status_db[4], pd->status_db[5]); return 0; } Loading