cd321x
static int cd321x_register_port_altmodes(struct cd321x *cd321x)
amode = typec_port_register_altmode(cd321x->tps.port, &desc);
cd321x->port_altmode_dp = amode;
amode = typec_port_register_altmode(cd321x->tps.port, &desc);
typec_unregister_altmode(cd321x->port_altmode_dp);
cd321x->port_altmode_dp = NULL;
cd321x->port_altmode_tbt = amode;
struct cd321x *cd321x = container_of(tps, struct cd321x, tps);
INIT_DELAYED_WORK(&cd321x->update_work, cd321x_update_work);
ret = cd321x_register_port_altmodes(cd321x);
cd321x->mux = fwnode_typec_mux_get(fwnode);
if (IS_ERR(cd321x->mux)) {
ret = PTR_ERR(cd321x->mux);
cd321x->state.alt = NULL;
cd321x->state.mode = TYPEC_STATE_SAFE;
cd321x->state.data = NULL;
typec_unregister_altmode(cd321x->port_altmode_dp);
typec_unregister_altmode(cd321x->port_altmode_tbt);
cd321x->port_altmode_dp = NULL;
cd321x->port_altmode_tbt = NULL;
struct cd321x *cd321x = container_of(tps, struct cd321x, tps);
typec_mux_put(cd321x->mux);
cd321x->mux = NULL;
typec_unregister_altmode(cd321x->port_altmode_dp);
cd321x->port_altmode_dp = NULL;
typec_unregister_altmode(cd321x->port_altmode_tbt);
cd321x->port_altmode_tbt = NULL;
struct cd321x *cd321x = container_of(tps, struct cd321x, tps);
cancel_delayed_work_sync(&cd321x->update_work);
.tps_struct_size = sizeof(struct cd321x),
struct cd321x *cd321x = container_of(tps, struct cd321x, tps);
&cd321x->dp_sid_status, sizeof(cd321x->dp_sid_status));
&cd321x->intel_vid_status, sizeof(cd321x->intel_vid_status));
&cd321x->usb4_status, sizeof(cd321x->usb4_status));
struct cd321x *cd321x = container_of(tps, struct cd321x, tps);
if (cd321x->state.mode == TYPEC_STATE_SAFE)
cd321x->state.alt = NULL;
cd321x->state.mode = TYPEC_STATE_SAFE;
cd321x->state.data = NULL;
typec_mux_set(cd321x->mux, &cd321x->state);
if (cd321x->state.alt == cd321x->port_altmode_dp &&
cd321x->state.mode == mode) {
cd321x->state.alt = cd321x->port_altmode_dp;
cd321x->state.data = &dp_data;
cd321x->state.mode = mode;
typec_mux_set(cd321x->mux, &cd321x->state);
if (cd321x->state.alt == cd321x->port_altmode_tbt &&
cd321x->state.mode == TYPEC_TBT_MODE)
cd321x->state.alt = cd321x->port_altmode_tbt;
cd321x->state.mode = TYPEC_TBT_MODE;
cd321x->state.data = &tbt_data;
typec_mux_set(cd321x->mux, &cd321x->state);
if (cd321x->state.alt == NULL && cd321x->state.mode == TYPEC_MODE_USB4)
cd321x->state.alt = NULL;
cd321x->state.data = &eusb_data;
cd321x->state.mode = TYPEC_MODE_USB4;
typec_mux_set(cd321x->mux, &cd321x->state);
if (cd321x->state.alt == NULL && cd321x->state.mode == TYPEC_STATE_USB)
cd321x->state.alt = NULL;
cd321x->state.mode = TYPEC_STATE_USB;
cd321x->state.data = NULL;
typec_mux_set(cd321x->mux, &cd321x->state);
cd321x->state.data = NULL;
struct cd321x *cd321x = container_of(to_delayed_work(work),
struct cd321x, update_work);
struct tps6598x *tps = &cd321x->tps;
st = cd321x->update_status;
cd321x->update_status.status_changed = 0;
&cd321x->cur_partner_identity, sizeof(struct usb_pd_identity))));
cd321x->state.alt = NULL;
cd321x->state.mode = TYPEC_STATE_SAFE;
cd321x->state.data = NULL;
cd321x->cur_partner_identity = st.partner_identity;
static void cd321x_queue_status(struct cd321x *cd321x)
cd321x->update_status.status_changed |= cd321x->update_status.status ^ cd321x->tps.status;
cd321x->update_status.status = cd321x->tps.status;
cd321x->update_status.pwr_status = cd321x->tps.pwr_status;
cd321x->update_status.data_status = cd321x->tps.data_status;
cd321x->update_status.partner_identity = cd321x->tps.partner_identity;
cd321x->update_status.dp_sid_status = cd321x->dp_sid_status;
cd321x->update_status.intel_vid_status = cd321x->intel_vid_status;
cd321x->update_status.usb4_status = cd321x->usb4_status;
struct cd321x *cd321x = container_of(tps, struct cd321x, tps);
cd321x_queue_status(cd321x);
cancel_delayed_work(&cd321x->update_work);
schedule_delayed_work(&cd321x->update_work, msecs_to_jiffies(CD321X_DEBOUNCE_DELAY_MS));