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;
227 pmic_glink_altmode_safe(altmode, alt_port);
229 pmic_glink_altmode_enable_dp(altmode, alt_port,
242 pmic_glink_altmode_enable_usb(altmode, alt_port);
245 pmic_glink_altmode_request(altmode, ALTMODE_PAN_ACK, alt_port->index);
265 static void pmic_glink_altmode_sc8180xp_notify(struct pmic_glink_altmode *altmode,
280 dev_warn(altmode->dev, "invalid length of USBC_NOTIFY indication: %zd\n", len);
295 if (port >= ARRAY_SIZE(altmode->ports) || !altmode->ports[port].altmode) {
296 dev_dbg(altmode->dev, "notification on undefined port %d\n", port);
300 alt_port = &altmode->ports[port];
313 static void pmic_glink_altmode_sc8280xp_notify(struct pmic_glink_altmode *altmode,
325 dev_warn(altmode->dev, "invalid length USBC_NOTIFY_IND: %zd\n",
338 if (port >= ARRAY_SIZE(altmode->ports) || !altmode->ports[port].altmode) {
339 dev_dbg(altmode->dev, "notification on undefined port %d\n", port);
343 alt_port = &altmode->ports[port];
354 struct pmic_glink_altmode *altmode = priv;
364 complete(&altmode->pan_ack);
367 pmic_glink_altmode_sc8280xp_notify(altmode, svid, data, len);
370 pmic_glink_altmode_sc8180xp_notify(altmode, data, len);
392 struct pmic_glink_altmode *altmode = work_to_altmode(work);
395 ret = pmic_glink_altmode_request(altmode, ALTMODE_PAN_EN, 0);
397 dev_err(altmode->dev, "failed to request altmode notifications: %d\n", ret);
402 struct pmic_glink_altmode *altmode = priv;
405 schedule_work(&altmode->enable_work);
417 struct pmic_glink_altmode *altmode;
424 altmode = devm_kzalloc(dev, sizeof(*altmode), GFP_KERNEL);
425 if (!altmode)
428 altmode->dev = dev;
432 altmode->owner_id = (unsigned long)match->data;
434 altmode->owner_id = PMIC_GLINK_OWNER_USBC_PAN;
436 INIT_WORK(&altmode->enable_work, pmic_glink_altmode_enable_worker);
437 init_completion(&altmode->pan_ack);
438 mutex_init(&altmode->lock);
448 if (port >= ARRAY_SIZE(altmode->ports)) {
453 if (altmode->ports[port].altmode) {
459 alt_port = &altmode->ports[port];
460 alt_port->altmode = altmode;
520 for (port = 0; port < ARRAY_SIZE(altmode->ports); port++) {
521 alt_port = &altmode->ports[port];
530 altmode->client = devm_pmic_glink_client_alloc(dev,
531 altmode->owner_id,
534 altmode);
535 if (IS_ERR(altmode->client))
536 return PTR_ERR(altmode->client);
538 pmic_glink_client_register(altmode->client);
544 { .name = "pmic_glink.altmode", },