Lines Matching defs:altmode

68 	struct pmic_glink_altmode *altmode;
108 static int pmic_glink_altmode_request(struct pmic_glink_altmode *altmode, u32 cmd, u32 arg)
118 guard(mutex)(&altmode->lock);
120 req.hdr.owner = cpu_to_le32(altmode->owner_id);
126 ret = pmic_glink_send(altmode->client, &req, sizeof(req));
128 dev_err(altmode->dev, "failed to send altmode request: %#x (%d)\n", cmd, ret);
132 left = wait_for_completion_timeout(&altmode->pan_ack, 5 * HZ);
134 dev_err(altmode->dev, "timeout waiting for altmode request ack for: %#x\n", cmd);
141 static void pmic_glink_altmode_enable_dp(struct pmic_glink_altmode *altmode,
162 dev_err(altmode->dev, "failed to switch mux to DP: %d\n", ret);
170 dev_err(altmode->dev, "failed to setup retimer to DP: %d\n", ret);
173 static void pmic_glink_altmode_enable_usb(struct pmic_glink_altmode *altmode,
184 dev_err(altmode->dev, "failed to switch mux to USB: %d\n", ret);
192 dev_err(altmode->dev, "failed to setup retimer to USB: %d\n", ret);
195 static void pmic_glink_altmode_safe(struct pmic_glink_altmode *altmode,
206 dev_err(altmode->dev, "failed to switch mux to safe mode: %d\n", ret);
214 dev_err(altmode->dev, "failed to setup retimer to USB: %d\n", ret);
220 struct pmic_glink_altmode *altmode = alt_port->altmode;
225 pmic_glink_altmode_safe(altmode, alt_port);
227 pmic_glink_altmode_enable_dp(altmode, alt_port, alt_port->mode,
230 pmic_glink_altmode_enable_usb(altmode, alt_port);
237 pmic_glink_altmode_request(altmode, ALTMODE_PAN_ACK, alt_port->index);
257 static void pmic_glink_altmode_sc8180xp_notify(struct pmic_glink_altmode *altmode,
272 dev_warn(altmode->dev, "invalid length of USBC_NOTIFY indication: %zd\n", len);
287 if (port >= ARRAY_SIZE(altmode->ports) || !altmode->ports[port].altmode) {
288 dev_dbg(altmode->dev, "notification on undefined port %d\n", port);
292 alt_port = &altmode->ports[port];
305 static void pmic_glink_altmode_sc8280xp_notify(struct pmic_glink_altmode *altmode,
317 dev_warn(altmode->dev, "invalid length USBC_NOTIFY_IND: %zd\n",
330 if (port >= ARRAY_SIZE(altmode->ports) || !altmode->ports[port].altmode) {
331 dev_dbg(altmode->dev, "notification on undefined port %d\n", port);
335 alt_port = &altmode->ports[port];
346 struct pmic_glink_altmode *altmode = priv;
356 complete(&altmode->pan_ack);
359 pmic_glink_altmode_sc8280xp_notify(altmode, svid, data, len);
362 pmic_glink_altmode_sc8180xp_notify(altmode, data, len);
384 struct pmic_glink_altmode *altmode = work_to_altmode(work);
387 ret = pmic_glink_altmode_request(altmode, ALTMODE_PAN_EN, 0);
389 dev_err(altmode->dev, "failed to request altmode notifications: %d\n", ret);
394 struct pmic_glink_altmode *altmode = priv;
397 schedule_work(&altmode->enable_work);
409 struct pmic_glink_altmode *altmode;
416 altmode = devm_kzalloc(dev, sizeof(*altmode), GFP_KERNEL);
417 if (!altmode)
420 altmode->dev = dev;
424 altmode->owner_id = (unsigned long)match->data;
426 altmode->owner_id = PMIC_GLINK_OWNER_USBC_PAN;
428 INIT_WORK(&altmode->enable_work, pmic_glink_altmode_enable_worker);
429 init_completion(&altmode->pan_ack);
430 mutex_init(&altmode->lock);
440 if (port >= ARRAY_SIZE(altmode->ports)) {
445 if (altmode->ports[port].altmode) {
451 alt_port = &altmode->ports[port];
452 alt_port->altmode = altmode;
512 for (port = 0; port < ARRAY_SIZE(altmode->ports); port++) {
513 alt_port = &altmode->ports[port];
522 altmode->client = devm_pmic_glink_client_alloc(dev,
523 altmode->owner_id,
526 altmode);
527 if (IS_ERR(altmode->client))
528 return PTR_ERR(altmode->client);
530 pmic_glink_client_register(altmode->client);
536 { .name = "pmic_glink.altmode", },