Lines Matching refs:dp

50 	struct ucsi_dp *dp = typec_altmode_get_drvdata(alt);
51 struct ucsi *ucsi = dp->con->ucsi;
57 mutex_lock(&dp->con->lock);
59 if (!dp->override && dp->initialized) {
68 command = UCSI_GET_CURRENT_CAM | UCSI_CONNECTOR_NUMBER(dp->con->num);
77 ret = dp->con->port_altmode[cur] == alt ? 0 : -EBUSY;
93 dp->header = VDO(USB_TYPEC_DP_SID, 1, svdm_version, CMD_ENTER_MODE);
94 dp->header |= VDO_OPOS(USB_TYPEC_DP_MODE);
95 dp->header |= VDO_CMDT(CMDT_RSP_ACK);
97 dp->vdo_data = NULL;
98 dp->vdo_size = 1;
100 schedule_work(&dp->work);
103 mutex_unlock(&dp->con->lock);
110 struct ucsi_dp *dp = typec_altmode_get_drvdata(alt);
115 mutex_lock(&dp->con->lock);
117 if (!dp->override) {
126 command = UCSI_CMD_SET_NEW_CAM(dp->con->num, 0, dp->offset, 0);
127 ret = ucsi_send_command(dp->con->ucsi, command, NULL, 0);
137 dp->header = VDO(USB_TYPEC_DP_SID, 1, svdm_version, CMD_EXIT_MODE);
138 dp->header |= VDO_OPOS(USB_TYPEC_DP_MODE);
139 dp->header |= VDO_CMDT(CMDT_RSP_ACK);
141 dp->vdo_data = NULL;
142 dp->vdo_size = 1;
144 schedule_work(&dp->work);
147 mutex_unlock(&dp->con->lock);
156 static int ucsi_displayport_status_update(struct ucsi_dp *dp)
158 u32 cap = dp->alt->vdo;
160 dp->data.status = DP_STATUS_ENABLED;
167 dp->data.status |= DP_STATUS_CON_UFP_D;
170 dp->data.status |= DP_STATUS_PREFER_MULTI_FUNC;
172 dp->data.status |= DP_STATUS_CON_DFP_D;
175 dp->data.status |= DP_STATUS_PREFER_MULTI_FUNC;
178 dp->vdo_data = &dp->data.status;
179 dp->vdo_size = 2;
184 static int ucsi_displayport_configure(struct ucsi_dp *dp)
186 u32 pins = DP_CONF_GET_PIN_ASSIGN(dp->data.conf);
189 if (!dp->override)
192 command = UCSI_CMD_SET_NEW_CAM(dp->con->num, 1, dp->offset, pins);
194 return ucsi_send_command(dp->con->ucsi, command, NULL, 0);
200 struct ucsi_dp *dp = typec_altmode_get_drvdata(alt);
205 mutex_lock(&dp->con->lock);
207 if (!dp->override && dp->initialized) {
212 mutex_unlock(&dp->con->lock);
218 mutex_unlock(&dp->con->lock);
225 typec_partner_set_svdm_version(dp->con->partner, PD_VDO_SVDM_VER(header));
229 dp->header = VDO(USB_TYPEC_DP_SID, 1, svdm_version, cmd);
230 dp->header |= VDO_OPOS(USB_TYPEC_DP_MODE);
234 if (ucsi_displayport_status_update(dp))
235 dp->header |= VDO_CMDT(CMDT_RSP_NAK);
237 dp->header |= VDO_CMDT(CMDT_RSP_ACK);
240 dp->data.conf = *data;
241 if (ucsi_displayport_configure(dp)) {
242 dp->header |= VDO_CMDT(CMDT_RSP_NAK);
244 dp->header |= VDO_CMDT(CMDT_RSP_ACK);
245 if (dp->initialized)
246 ucsi_altmode_update_active(dp->con);
248 dp->initialized = true;
252 dp->header |= VDO_CMDT(CMDT_RSP_ACK);
256 schedule_work(&dp->work);
262 mutex_unlock(&dp->con->lock);
275 struct ucsi_dp *dp = container_of(work, struct ucsi_dp, work);
278 mutex_lock(&dp->con->lock);
280 ret = typec_altmode_vdm(dp->alt, dp->header,
281 dp->vdo_data, dp->vdo_size);
283 dev_err(&dp->alt->dev, "VDM 0x%x failed\n", dp->header);
285 dp->vdo_data = NULL;
286 dp->vdo_size = 0;
287 dp->header = 0;
289 mutex_unlock(&dp->con->lock);
294 struct ucsi_dp *dp;
299 dp = typec_altmode_get_drvdata(alt);
300 if (!dp)
303 dp->data.conf = 0;
304 dp->data.status = 0;
305 dp->initialized = false;
315 struct ucsi_dp *dp;
328 dp = devm_kzalloc(&alt->dev, sizeof(*dp), GFP_KERNEL);
329 if (!dp) {
334 INIT_WORK(&dp->work, ucsi_displayport_work);
335 dp->override = override;
336 dp->offset = offset;
337 dp->con = con;
338 dp->alt = alt;
341 typec_altmode_set_drvdata(alt, dp);