Symbol: ucsi
drivers/pci/quirks.c
5834
static void quirk_gpu_usb_typec_ucsi(struct pci_dev *ucsi)
drivers/pci/quirks.c
5836
pci_create_device_link(ucsi, 3, 0, PCI_BASE_CLASS_DISPLAY, 16);
drivers/usb/typec/ucsi/cros_ec_ucsi.c
115
static int cros_ucsi_sync_control(struct ucsi *ucsi, u64 cmd, u32 *cci,
drivers/usb/typec/ucsi/cros_ec_ucsi.c
119
struct cros_ucsi_data *udata = ucsi_get_drvdata(ucsi);
drivers/usb/typec/ucsi/cros_ec_ucsi.c
122
ret = ucsi_sync_control_common(ucsi, cmd, cci, data, size, msg_out,
drivers/usb/typec/ucsi/cros_ec_ucsi.c
176
if (cros_ucsi_read_cci(udata->ucsi, &cci))
drivers/usb/typec/ucsi/cros_ec_ucsi.c
179
ucsi_notify_common(udata->ucsi, cci);
drivers/usb/typec/ucsi/cros_ec_ucsi.c
189
if (cros_ucsi_read(udata->ucsi, UCSI_CCI, &cci, sizeof(cci))) {
drivers/usb/typec/ucsi/cros_ec_ucsi.c
214
cros_ucsi_async_control(udata->ucsi, cmd);
drivers/usb/typec/ucsi/cros_ec_ucsi.c
227
ucsi_resume(udata->ucsi);
drivers/usb/typec/ucsi/cros_ec_ucsi.c
240
ucsi_resume(udata->ucsi);
drivers/usb/typec/ucsi/cros_ec_ucsi.c
257
ucsi_destroy(udata->ucsi);
drivers/usb/typec/ucsi/cros_ec_ucsi.c
289
udata->ucsi = ucsi_create(dev, &cros_ucsi_ops);
drivers/usb/typec/ucsi/cros_ec_ucsi.c
290
if (IS_ERR(udata->ucsi))
drivers/usb/typec/ucsi/cros_ec_ucsi.c
291
return dev_err_probe(dev, PTR_ERR(udata->ucsi), "failed to allocate UCSI instance\n");
drivers/usb/typec/ucsi/cros_ec_ucsi.c
293
ucsi_set_drvdata(udata->ucsi, udata);
drivers/usb/typec/ucsi/cros_ec_ucsi.c
299
ucsi_destroy(udata->ucsi);
drivers/usb/typec/ucsi/cros_ec_ucsi.c
303
ret = ucsi_register(udata->ucsi);
drivers/usb/typec/ucsi/cros_ec_ucsi.c
317
ucsi_unregister(udata->ucsi);
drivers/usb/typec/ucsi/cros_ec_ucsi.c
335
ucsi_resume(udata->ucsi);
drivers/usb/typec/ucsi/cros_ec_ucsi.c
45
struct ucsi *ucsi;
drivers/usb/typec/ucsi/cros_ec_ucsi.c
57
static int cros_ucsi_read(struct ucsi *ucsi, unsigned int offset, void *val,
drivers/usb/typec/ucsi/cros_ec_ucsi.c
60
struct cros_ucsi_data *udata = ucsi_get_drvdata(ucsi);
drivers/usb/typec/ucsi/cros_ec_ucsi.c
81
static int cros_ucsi_read_version(struct ucsi *ucsi, u16 *version)
drivers/usb/typec/ucsi/cros_ec_ucsi.c
83
return cros_ucsi_read(ucsi, UCSI_VERSION, version, sizeof(*version));
drivers/usb/typec/ucsi/cros_ec_ucsi.c
86
static int cros_ucsi_read_cci(struct ucsi *ucsi, u32 *cci)
drivers/usb/typec/ucsi/cros_ec_ucsi.c
88
return cros_ucsi_read(ucsi, UCSI_CCI, cci, sizeof(*cci));
drivers/usb/typec/ucsi/cros_ec_ucsi.c
91
static int cros_ucsi_read_message_in(struct ucsi *ucsi, void *val,
drivers/usb/typec/ucsi/cros_ec_ucsi.c
94
return cros_ucsi_read(ucsi, UCSI_MESSAGE_IN, val, val_len);
drivers/usb/typec/ucsi/cros_ec_ucsi.c
97
static int cros_ucsi_async_control(struct ucsi *ucsi, u64 cmd)
drivers/usb/typec/ucsi/cros_ec_ucsi.c
99
struct cros_ucsi_data *udata = ucsi_get_drvdata(ucsi);
drivers/usb/typec/ucsi/debugfs.c
102
struct ucsi *ucsi = m->private;
drivers/usb/typec/ucsi/debugfs.c
104
seq_printf(m, "%u mA\n", ucsi->connector->avg_current);
drivers/usb/typec/ucsi/debugfs.c
111
struct ucsi *ucsi = m->private;
drivers/usb/typec/ucsi/debugfs.c
113
seq_printf(m, "%u mV\n", ucsi->connector->vbus_voltage);
drivers/usb/typec/ucsi/debugfs.c
121
struct ucsi *ucsi = file->private_data;
drivers/usb/typec/ucsi/debugfs.c
128
ret = hex2bin(ucsi->debugfs->message_out, buf,
drivers/usb/typec/ucsi/debugfs.c
129
min(count / 2, sizeof(ucsi->debugfs->message_out)));
drivers/usb/typec/ucsi/debugfs.c
142
void ucsi_debugfs_register(struct ucsi *ucsi)
drivers/usb/typec/ucsi/debugfs.c
144
ucsi->debugfs = kzalloc_obj(*ucsi->debugfs);
drivers/usb/typec/ucsi/debugfs.c
145
if (!ucsi->debugfs)
drivers/usb/typec/ucsi/debugfs.c
148
ucsi->debugfs->dentry = debugfs_create_dir(dev_name(ucsi->dev), ucsi_debugfs_root);
drivers/usb/typec/ucsi/debugfs.c
149
debugfs_create_file("command", 0200, ucsi->debugfs->dentry, ucsi, &ucsi_cmd_fops);
drivers/usb/typec/ucsi/debugfs.c
150
debugfs_create_file("response", 0400, ucsi->debugfs->dentry, ucsi, &ucsi_resp_fops);
drivers/usb/typec/ucsi/debugfs.c
151
debugfs_create_file("peak_current", 0400, ucsi->debugfs->dentry, ucsi, &ucsi_peak_curr_fops);
drivers/usb/typec/ucsi/debugfs.c
152
debugfs_create_file("avg_current", 0400, ucsi->debugfs->dentry, ucsi, &ucsi_avg_curr_fops);
drivers/usb/typec/ucsi/debugfs.c
153
debugfs_create_file("vbus_voltage", 0400, ucsi->debugfs->dentry, ucsi, &ucsi_vbus_volt_fops);
drivers/usb/typec/ucsi/debugfs.c
154
debugfs_create_file("message_out", 0200, ucsi->debugfs->dentry, ucsi,
drivers/usb/typec/ucsi/debugfs.c
158
void ucsi_debugfs_unregister(struct ucsi *ucsi)
drivers/usb/typec/ucsi/debugfs.c
160
if (IS_ERR_OR_NULL(ucsi) || !ucsi->debugfs)
drivers/usb/typec/ucsi/debugfs.c
163
debugfs_remove_recursive(ucsi->debugfs->dentry);
drivers/usb/typec/ucsi/debugfs.c
164
kfree(ucsi->debugfs);
drivers/usb/typec/ucsi/debugfs.c
25
struct ucsi *ucsi = data;
drivers/usb/typec/ucsi/debugfs.c
28
memset(&ucsi->debugfs->response, 0, sizeof(ucsi->debugfs->response));
drivers/usb/typec/ucsi/debugfs.c
29
ucsi->debugfs->status = 0;
drivers/usb/typec/ucsi/debugfs.c
41
ret = ucsi_send_command(ucsi, val, NULL, 0);
drivers/usb/typec/ucsi/debugfs.c
44
ret = ucsi_write_message_out_command(ucsi, val, NULL, 0,
drivers/usb/typec/ucsi/debugfs.c
45
ucsi->debugfs->message_out,
drivers/usb/typec/ucsi/debugfs.c
61
ret = ucsi_send_command(ucsi, val,
drivers/usb/typec/ucsi/debugfs.c
62
&ucsi->debugfs->response,
drivers/usb/typec/ucsi/debugfs.c
63
sizeof(ucsi->debugfs->response));
drivers/usb/typec/ucsi/debugfs.c
70
ucsi->debugfs->status = ret;
drivers/usb/typec/ucsi/debugfs.c
80
struct ucsi *ucsi = s->private;
drivers/usb/typec/ucsi/debugfs.c
82
if (ucsi->debugfs->status)
drivers/usb/typec/ucsi/debugfs.c
83
return ucsi->debugfs->status;
drivers/usb/typec/ucsi/debugfs.c
85
seq_printf(s, "0x%016llx%016llx\n", ucsi->debugfs->response.high,
drivers/usb/typec/ucsi/debugfs.c
86
ucsi->debugfs->response.low);
drivers/usb/typec/ucsi/debugfs.c
93
struct ucsi *ucsi = m->private;
drivers/usb/typec/ucsi/debugfs.c
95
seq_printf(m, "%u mA\n", ucsi->connector->peak_current);
drivers/usb/typec/ucsi/displayport.c
129
ret = ucsi_send_command(dp->con->ucsi, command, NULL, 0);
drivers/usb/typec/ucsi/displayport.c
195
return ucsi_send_command(dp->con->ucsi, command, NULL, 0);
drivers/usb/typec/ucsi/displayport.c
51
struct ucsi *ucsi = dp->con->ucsi;
drivers/usb/typec/ucsi/displayport.c
70
ret = ucsi_send_command(ucsi, command, &cur, sizeof(cur));
drivers/usb/typec/ucsi/displayport.c
72
if (ucsi->version > 0x0100)
drivers/usb/typec/ucsi/psy.c
315
struct device *dev = con->ucsi->dev;
drivers/usb/typec/ucsi/psy.c
39
struct device *dev = con->ucsi->dev;
drivers/usb/typec/ucsi/psy.c
46
if (con->ucsi->cap.attributes & mask)
drivers/usb/typec/ucsi/psy.c
63
if (con->ucsi->version >= UCSI_VERSION_2_0)
drivers/usb/typec/ucsi/thunderbolt.c
60
ret = ucsi_send_command(tbt->con->ucsi, command, NULL, 0);
drivers/usb/typec/ucsi/thunderbolt.c
93
ret = ucsi_send_command(con->ucsi, command, &cur, sizeof(cur));
drivers/usb/typec/ucsi/thunderbolt.c
95
if (con->ucsi->version > 0x0100)
drivers/usb/typec/ucsi/trace.h
4
#define TRACE_SYSTEM ucsi
drivers/usb/typec/ucsi/ucsi.c
1007
dev_err(con->ucsi->dev, "Failed to set cable identity (%d)\n", ret);
drivers/usb/typec/ucsi/ucsi.c
101
clear_bit(COMMAND_PENDING, &ucsi->flags);
drivers/usb/typec/ucsi/ucsi.c
1018
dev_err(con->ucsi->dev,
drivers/usb/typec/ucsi/ucsi.c
1026
if (con->ucsi->ops->add_partner_altmodes)
drivers/usb/typec/ucsi/ucsi.c
1027
con->ucsi->ops->add_partner_altmodes(con);
drivers/usb/typec/ucsi/ucsi.c
1039
struct ucsi *ucsi = con->ucsi;
drivers/usb/typec/ucsi/ucsi.c
104
ret = ucsi->ops->read_cci(ucsi, cci);
drivers/usb/typec/ucsi/ucsi.c
1040
struct usb_power_delivery_desc desc = { ucsi->cap.pd_version };
drivers/usb/typec/ucsi/ucsi.c
1046
con->pd = usb_power_delivery_register(ucsi->dev, &desc);
drivers/usb/typec/ucsi/ucsi.c
1061
struct usb_power_delivery_desc desc = { con->ucsi->cap.pd_version };
drivers/usb/typec/ucsi/ucsi.c
108
ret = ucsi->ops->read_message_in(ucsi, data, size);
drivers/usb/typec/ucsi/ucsi.c
1103
dev_err(con->ucsi->dev,
drivers/usb/typec/ucsi/ucsi.c
1132
ret = ucsi_send_command(con->ucsi, command, &cable_prop, sizeof(cable_prop));
drivers/usb/typec/ucsi/ucsi.c
1134
dev_err(con->ucsi->dev, "GET_CABLE_PROPERTY failed (%d)\n", ret);
drivers/usb/typec/ucsi/ucsi.c
114
static int ucsi_acknowledge(struct ucsi *ucsi, bool conn_ack)
drivers/usb/typec/ucsi/ucsi.c
1153
if (con->ucsi->cap.features & UCSI_CAP_GET_PD_MESSAGE)
drivers/usb/typec/ucsi/ucsi.c
1157
if (con->ucsi->version >= UCSI_VERSION_2_1)
drivers/usb/typec/ucsi/ucsi.c
1162
dev_err(con->ucsi->dev,
drivers/usb/typec/ucsi/ucsi.c
1189
if (!con->partner || con->ucsi->version < UCSI_VERSION_2_1)
drivers/usb/typec/ucsi/ucsi.c
1193
ret = ucsi_send_command(con->ucsi, command, &con->cap, sizeof(con->cap));
drivers/usb/typec/ucsi/ucsi.c
1195
dev_err(con->ucsi->dev, "GET_CONNECTOR_CAPABILITY failed (%d)\n", ret);
drivers/usb/typec/ucsi/ucsi.c
1207
if (con->ucsi->version < UCSI_VERSION_2_0)
drivers/usb/typec/ucsi/ucsi.c
121
clear_bit(EVENT_PENDING, &ucsi->flags);
drivers/usb/typec/ucsi/ucsi.c
125
return ucsi->ops->sync_control(ucsi, ctrl, NULL, NULL, 0, NULL, 0);
drivers/usb/typec/ucsi/ucsi.c
128
static int ucsi_run_command(struct ucsi *ucsi, u64 command, u32 *cci,
drivers/usb/typec/ucsi/ucsi.c
1281
if (con->ucsi->cap.features & UCSI_CAP_GET_PD_MESSAGE)
drivers/usb/typec/ucsi/ucsi.c
1285
if (con->ucsi->version >= UCSI_VERSION_2_1) {
drivers/usb/typec/ucsi/ucsi.c
1292
dev_err(con->ucsi->dev,
drivers/usb/typec/ucsi/ucsi.c
1300
if (con->ucsi->version >= UCSI_VERSION_3_0 &&
drivers/usb/typec/ucsi/ucsi.c
1303
else if (con->ucsi->version >= UCSI_VERSION_2_0 &&
drivers/usb/typec/ucsi/ucsi.c
1316
if (con->ucsi->ops->remove_partner_altmodes)
drivers/usb/typec/ucsi/ucsi.c
1317
con->ucsi->ops->remove_partner_altmodes(con);
drivers/usb/typec/ucsi/ucsi.c
136
if (size > UCSI_MAX_DATA_LENGTH(ucsi))
drivers/usb/typec/ucsi/ucsi.c
1362
if (((con->ucsi->version >= UCSI_VERSION_3_0 &&
drivers/usb/typec/ucsi/ucsi.c
1364
(con->ucsi->version >= UCSI_VERSION_2_0 &&
drivers/usb/typec/ucsi/ucsi.c
1370
((con->ucsi->quirks & UCSI_USB4_IMPLIES_USB) &&
drivers/usb/typec/ucsi/ucsi.c
1377
dev_err(con->ucsi->dev, "con:%d: failed to set usb role:%d\n",
drivers/usb/typec/ucsi/ucsi.c
1388
dev_err(con->ucsi->dev, "GET_CONNECTOR_STATUS failed (%d)\n", ret);
drivers/usb/typec/ucsi/ucsi.c
139
ret = ucsi->ops->sync_control(ucsi, command, cci, data, size,
drivers/usb/typec/ucsi/ucsi.c
1418
if (con->ucsi->cap.features & UCSI_CAP_GET_PD_MESSAGE) {
drivers/usb/typec/ucsi/ucsi.c
1424
if (con->ucsi->cap.features & UCSI_CAP_ALT_MODE_DETAILS) {
drivers/usb/typec/ucsi/ucsi.c
143
return ucsi_run_command(ucsi, UCSI_CANCEL, cci,
drivers/usb/typec/ucsi/ucsi.c
1448
struct ucsi *ucsi = con->ucsi;
drivers/usb/typec/ucsi/ucsi.c
1457
if (!test_and_set_bit(EVENT_PENDING, &ucsi->flags))
drivers/usb/typec/ucsi/ucsi.c
1458
dev_err_once(ucsi->dev, "%s entered without EVENT_PENDING\n",
drivers/usb/typec/ucsi/ucsi.c
1465
dev_err(ucsi->dev, "%s: GET_CONNECTOR_STATUS failed (%d)\n",
drivers/usb/typec/ucsi/ucsi.c
1467
clear_bit(EVENT_PENDING, &con->ucsi->flags);
drivers/usb/typec/ucsi/ucsi.c
1473
if (ucsi->ops->connector_status)
drivers/usb/typec/ucsi/ucsi.c
1474
ucsi->ops->connector_status(con);
drivers/usb/typec/ucsi/ucsi.c
1502
if (con->ucsi->cap.features & UCSI_CAP_GET_PD_MESSAGE)
drivers/usb/typec/ucsi/ucsi.c
1504
if (con->ucsi->cap.features & UCSI_CAP_CABLE_DETAILS)
drivers/usb/typec/ucsi/ucsi.c
1534
if (con->ucsi->version >= UCSI_VERSION_2_1 &&
drivers/usb/typec/ucsi/ucsi.c
1558
void ucsi_connector_change(struct ucsi *ucsi, u8 num)
drivers/usb/typec/ucsi/ucsi.c
1562
if (!(ucsi->ntfy & UCSI_ENABLE_NTFY_CONNECTOR_CHANGE)) {
drivers/usb/typec/ucsi/ucsi.c
1563
dev_dbg(ucsi->dev, "Early connector change event\n");
drivers/usb/typec/ucsi/ucsi.c
1567
if (!num || num > ucsi->cap.num_connectors) {
drivers/usb/typec/ucsi/ucsi.c
1568
dev_warn_ratelimited(ucsi->dev,
drivers/usb/typec/ucsi/ucsi.c
1570
num, ucsi->cap.num_connectors);
drivers/usb/typec/ucsi/ucsi.c
1574
con = &ucsi->connector[num - 1];
drivers/usb/typec/ucsi/ucsi.c
1576
if (!test_and_set_bit(EVENT_PENDING, &ucsi->flags))
drivers/usb/typec/ucsi/ucsi.c
1599
if (con->ucsi->version < UCSI_VERSION_1_1)
drivers/usb/typec/ucsi/ucsi.c
1601
else if (con->ucsi->version >= UCSI_VERSION_2_0)
drivers/usb/typec/ucsi/ucsi.c
1604
return ucsi_send_command(con->ucsi, command, NULL, 0);
drivers/usb/typec/ucsi/ucsi.c
1607
static int ucsi_reset_ppm(struct ucsi *ucsi)
drivers/usb/typec/ucsi/ucsi.c
161
ret = ucsi_acknowledge(ucsi, err ? false : conn_ack);
drivers/usb/typec/ucsi/ucsi.c
1614
mutex_lock(&ucsi->ppm_lock);
drivers/usb/typec/ucsi/ucsi.c
1616
ret = ucsi->ops->poll_cci(ucsi, &cci);
drivers/usb/typec/ucsi/ucsi.c
1628
ret = ucsi->ops->async_control(ucsi, command);
drivers/usb/typec/ucsi/ucsi.c
1634
ret = ucsi->ops->poll_cci(ucsi, &cci);
drivers/usb/typec/ucsi/ucsi.c
1648
ret = ucsi->ops->async_control(ucsi, command);
drivers/usb/typec/ucsi/ucsi.c
1663
ret = ucsi->ops->poll_cci(ucsi, &cci);
drivers/usb/typec/ucsi/ucsi.c
1669
ret = ucsi->ops->async_control(ucsi, command);
drivers/usb/typec/ucsi/ucsi.c
1677
mutex_unlock(&ucsi->ppm_lock);
drivers/usb/typec/ucsi/ucsi.c
168
static int ucsi_read_error(struct ucsi *ucsi, u8 connector_num)
drivers/usb/typec/ucsi/ucsi.c
1685
ret = ucsi_send_command(con->ucsi, command, NULL, 0);
drivers/usb/typec/ucsi/ucsi.c
1690
ucsi_reset_ppm(con->ucsi);
drivers/usb/typec/ucsi/ucsi.c
1692
c = UCSI_SET_NOTIFICATION_ENABLE | con->ucsi->ntfy;
drivers/usb/typec/ucsi/ucsi.c
1693
ucsi_send_command(con->ucsi, c, NULL, 0);
drivers/usb/typec/ucsi/ucsi.c
176
ret = ucsi_run_command(ucsi, command, &cci, &error,
drivers/usb/typec/ucsi/ucsi.c
1804
device_for_each_child_node(con->ucsi->dev, fwnode)
drivers/usb/typec/ucsi/ucsi.c
1810
static int ucsi_register_port(struct ucsi *ucsi, struct ucsi_connector *con)
drivers/usb/typec/ucsi/ucsi.c
1819
name = kasprintf(GFP_KERNEL, "%s-con%d", dev_name(ucsi->dev), con->num);
drivers/usb/typec/ucsi/ucsi.c
1833
con->ucsi = ucsi;
drivers/usb/typec/ucsi/ucsi.c
1838
return dev_err_probe(ucsi->dev, PTR_ERR(con->usb_role_sw),
drivers/usb/typec/ucsi/ucsi.c
1847
ret = ucsi_send_command(ucsi, command, &con->cap, sizeof(con->cap));
drivers/usb/typec/ucsi/ucsi.c
1865
cap->revision = ucsi->cap.typec_version;
drivers/usb/typec/ucsi/ucsi.c
1866
cap->pd_revision = ucsi->cap.pd_version;
drivers/usb/typec/ucsi/ucsi.c
1884
cap->no_mode_control = !(con->ucsi->cap.features & UCSI_CAP_ALT_MODE_OVERRIDE);
drivers/usb/typec/ucsi/ucsi.c
1886
if (ucsi->version >= UCSI_VERSION_2_0)
drivers/usb/typec/ucsi/ucsi.c
1889
if (ucsi->ops->update_connector)
drivers/usb/typec/ucsi/ucsi.c
189
dev_warn(ucsi->dev, "Dead battery condition!\n");
drivers/usb/typec/ucsi/ucsi.c
1890
ucsi->ops->update_connector(con);
drivers/usb/typec/ucsi/ucsi.c
1897
con->port = typec_register_port(ucsi->dev, cap);
drivers/usb/typec/ucsi/ucsi.c
1903
if (!(ucsi->quirks & UCSI_DELAY_DEVICE_PDOS))
drivers/usb/typec/ucsi/ucsi.c
1909
dev_err(ucsi->dev, "con%d: failed to register alt modes\n",
drivers/usb/typec/ucsi/ucsi.c
1917
dev_err(ucsi->dev, "con%d: failed to get status\n", con->num);
drivers/usb/typec/ucsi/ucsi.c
1921
if (ucsi->ops->connector_status)
drivers/usb/typec/ucsi/ucsi.c
1922
ucsi->ops->connector_status(con);
drivers/usb/typec/ucsi/ucsi.c
194
dev_err(ucsi->dev, "possible UCSI driver bug %u\n", error);
drivers/usb/typec/ucsi/ucsi.c
1947
if (con->ucsi->cap.features & UCSI_CAP_GET_PD_MESSAGE)
drivers/usb/typec/ucsi/ucsi.c
1949
if (con->ucsi->cap.features & UCSI_CAP_CABLE_DETAILS)
drivers/usb/typec/ucsi/ucsi.c
1959
dev_err(ucsi->dev, "con:%d: failed to set usb role:%d\n",
drivers/usb/typec/ucsi/ucsi.c
197
dev_warn(ucsi->dev, "Overcurrent condition\n");
drivers/usb/typec/ucsi/ucsi.c
200
dev_warn(ucsi->dev, "Partner rejected swap\n");
drivers/usb/typec/ucsi/ucsi.c
2022
static u64 ucsi_get_supported_notifications(struct ucsi *ucsi)
drivers/usb/typec/ucsi/ucsi.c
2024
u16 features = ucsi->cap.features;
drivers/usb/typec/ucsi/ucsi.c
203
dev_warn(ucsi->dev, "Hard reset occurred\n");
drivers/usb/typec/ucsi/ucsi.c
2040
if (ucsi->version <= UCSI_VERSION_1_2)
drivers/usb/typec/ucsi/ucsi.c
206
dev_warn(ucsi->dev, "PPM Policy conflict\n");
drivers/usb/typec/ucsi/ucsi.c
2066
static int ucsi_init(struct ucsi *ucsi)
drivers/usb/typec/ucsi/ucsi.c
2075
ret = ucsi_reset_ppm(ucsi);
drivers/usb/typec/ucsi/ucsi.c
2077
dev_err(ucsi->dev, "failed to reset PPM!\n");
drivers/usb/typec/ucsi/ucsi.c
2084
ret = ucsi_send_command(ucsi, command, NULL, 0);
drivers/usb/typec/ucsi/ucsi.c
209
dev_warn(ucsi->dev, "Swap rejected\n");
drivers/usb/typec/ucsi/ucsi.c
2090
ret = ucsi_send_command(ucsi, command, &ucsi->cap,
drivers/usb/typec/ucsi/ucsi.c
2095
if (!ucsi->cap.num_connectors) {
drivers/usb/typec/ucsi/ucsi.c
2100
if (ucsi->cap.num_connectors & 0x80) {
drivers/usb/typec/ucsi/ucsi.c
2101
dev_warn(ucsi->dev, "UCSI: Invalid num_connectors %d. Likely buggy FW\n",
drivers/usb/typec/ucsi/ucsi.c
2102
ucsi->cap.num_connectors);
drivers/usb/typec/ucsi/ucsi.c
2103
ucsi->cap.num_connectors &= 0x7f; // clear bit and carry on
drivers/usb/typec/ucsi/ucsi.c
2107
connector = kzalloc_objs(*connector, ucsi->cap.num_connectors + 1);
drivers/usb/typec/ucsi/ucsi.c
2113
for (i = 0; i < ucsi->cap.num_connectors; i++)
drivers/usb/typec/ucsi/ucsi.c
2117
for (i = 0; i < ucsi->cap.num_connectors; i++) {
drivers/usb/typec/ucsi/ucsi.c
2119
ret = ucsi_register_port(ucsi, &connector[i]);
drivers/usb/typec/ucsi/ucsi.c
212
dev_warn(ucsi->dev, "Reverse Current Protection detected\n");
drivers/usb/typec/ucsi/ucsi.c
2125
ntfy = ucsi_get_supported_notifications(ucsi);
drivers/usb/typec/ucsi/ucsi.c
2127
ret = ucsi_send_command(ucsi, command, NULL, 0);
drivers/usb/typec/ucsi/ucsi.c
2131
ucsi->connector = connector;
drivers/usb/typec/ucsi/ucsi.c
2132
ucsi->ntfy = ntfy;
drivers/usb/typec/ucsi/ucsi.c
2134
mutex_lock(&ucsi->ppm_lock);
drivers/usb/typec/ucsi/ucsi.c
2135
ret = ucsi->ops->read_cci(ucsi, &cci);
drivers/usb/typec/ucsi/ucsi.c
2136
mutex_unlock(&ucsi->ppm_lock);
drivers/usb/typec/ucsi/ucsi.c
2140
ucsi_connector_change(ucsi, UCSI_CCI_CONNECTOR(cci));
drivers/usb/typec/ucsi/ucsi.c
2147
for (i = 0; i < ucsi->cap.num_connectors; i++)
drivers/usb/typec/ucsi/ucsi.c
215
dev_warn(ucsi->dev, "Set Sink Path rejected\n");
drivers/usb/typec/ucsi/ucsi.c
2152
memset(&ucsi->cap, 0, sizeof(ucsi->cap));
drivers/usb/typec/ucsi/ucsi.c
2153
ucsi_reset_ppm(ucsi);
drivers/usb/typec/ucsi/ucsi.c
2160
struct ucsi *ucsi = container_of(work, struct ucsi, resume_work);
drivers/usb/typec/ucsi/ucsi.c
2166
command = UCSI_SET_NOTIFICATION_ENABLE | ucsi->ntfy;
drivers/usb/typec/ucsi/ucsi.c
2167
ret = ucsi_send_command(ucsi, command, NULL, 0);
drivers/usb/typec/ucsi/ucsi.c
2169
dev_err(ucsi->dev, "failed to re-enable notifications (%d)\n", ret);
drivers/usb/typec/ucsi/ucsi.c
2173
for (con = ucsi->connector; con->port; con++) {
drivers/usb/typec/ucsi/ucsi.c
2180
int ucsi_suspend(struct ucsi *ucsi)
drivers/usb/typec/ucsi/ucsi.c
2188
cancel_delayed_work_sync(&ucsi->work);
drivers/usb/typec/ucsi/ucsi.c
219
dev_err(ucsi->dev, "unknown error %u\n", error);
drivers/usb/typec/ucsi/ucsi.c
2190
if (!ucsi->connector)
drivers/usb/typec/ucsi/ucsi.c
2193
for (i = 0; i < ucsi->cap.num_connectors; i++)
drivers/usb/typec/ucsi/ucsi.c
2194
cancel_work_sync(&ucsi->connector[i].work);
drivers/usb/typec/ucsi/ucsi.c
2200
int ucsi_resume(struct ucsi *ucsi)
drivers/usb/typec/ucsi/ucsi.c
2202
if (ucsi->connector)
drivers/usb/typec/ucsi/ucsi.c
2203
queue_work(system_long_wq, &ucsi->resume_work);
drivers/usb/typec/ucsi/ucsi.c
2210
struct ucsi *ucsi = container_of(work, struct ucsi, work.work);
drivers/usb/typec/ucsi/ucsi.c
2213
ret = ucsi_init(ucsi);
drivers/usb/typec/ucsi/ucsi.c
2215
dev_err_probe(ucsi->dev, ret, "PPM init failed\n");
drivers/usb/typec/ucsi/ucsi.c
2218
if (ucsi->work_count++ > UCSI_ROLE_SWITCH_WAIT_COUNT) {
drivers/usb/typec/ucsi/ucsi.c
2219
dev_err(ucsi->dev, "PPM init failed, stop trying\n");
drivers/usb/typec/ucsi/ucsi.c
2223
queue_delayed_work(system_long_wq, &ucsi->work,
drivers/usb/typec/ucsi/ucsi.c
2232
void *ucsi_get_drvdata(struct ucsi *ucsi)
drivers/usb/typec/ucsi/ucsi.c
2234
return ucsi->driver_data;
drivers/usb/typec/ucsi/ucsi.c
2243
void ucsi_set_drvdata(struct ucsi *ucsi, void *data)
drivers/usb/typec/ucsi/ucsi.c
2245
ucsi->driver_data = data;
drivers/usb/typec/ucsi/ucsi.c
226
static int ucsi_send_command_common(struct ucsi *ucsi, u64 cmd,
drivers/usb/typec/ucsi/ucsi.c
2288
struct ucsi *ucsi_create(struct device *dev, const struct ucsi_operations *ops)
drivers/usb/typec/ucsi/ucsi.c
2290
struct ucsi *ucsi;
drivers/usb/typec/ucsi/ucsi.c
2297
ucsi = kzalloc_obj(*ucsi);
drivers/usb/typec/ucsi/ucsi.c
2298
if (!ucsi)
drivers/usb/typec/ucsi/ucsi.c
2301
INIT_WORK(&ucsi->resume_work, ucsi_resume_work);
drivers/usb/typec/ucsi/ucsi.c
2302
INIT_DELAYED_WORK(&ucsi->work, ucsi_init_work);
drivers/usb/typec/ucsi/ucsi.c
2303
mutex_init(&ucsi->ppm_lock);
drivers/usb/typec/ucsi/ucsi.c
2304
init_completion(&ucsi->complete);
drivers/usb/typec/ucsi/ucsi.c
2305
ucsi->dev = dev;
drivers/usb/typec/ucsi/ucsi.c
2306
ucsi->ops = ops;
drivers/usb/typec/ucsi/ucsi.c
2308
return ucsi;
drivers/usb/typec/ucsi/ucsi.c
2316
void ucsi_destroy(struct ucsi *ucsi)
drivers/usb/typec/ucsi/ucsi.c
2318
ucsi_debugfs_unregister(ucsi);
drivers/usb/typec/ucsi/ucsi.c
2319
kfree(ucsi);
drivers/usb/typec/ucsi/ucsi.c
2327
int ucsi_register(struct ucsi *ucsi)
drivers/usb/typec/ucsi/ucsi.c
2331
ret = ucsi->ops->read_version(ucsi, &ucsi->version);
drivers/usb/typec/ucsi/ucsi.c
2335
if (!ucsi->version)
drivers/usb/typec/ucsi/ucsi.c
234
if (ucsi->version > UCSI_VERSION_1_2) {
drivers/usb/typec/ucsi/ucsi.c
2342
dev_dbg(ucsi->dev, "Registered UCSI interface with version %x.%x.%x",
drivers/usb/typec/ucsi/ucsi.c
2343
UCSI_BCD_GET_MAJOR(ucsi->version),
drivers/usb/typec/ucsi/ucsi.c
2344
UCSI_BCD_GET_MINOR(ucsi->version),
drivers/usb/typec/ucsi/ucsi.c
2345
UCSI_BCD_GET_SUBMINOR(ucsi->version));
drivers/usb/typec/ucsi/ucsi.c
2347
queue_delayed_work(system_long_wq, &ucsi->work, 0);
drivers/usb/typec/ucsi/ucsi.c
2349
ucsi_debugfs_register(ucsi);
drivers/usb/typec/ucsi/ucsi.c
2360
void ucsi_unregister(struct ucsi *ucsi)
drivers/usb/typec/ucsi/ucsi.c
2366
cancel_delayed_work_sync(&ucsi->work);
drivers/usb/typec/ucsi/ucsi.c
2367
cancel_work_sync(&ucsi->resume_work);
drivers/usb/typec/ucsi/ucsi.c
2370
ucsi->ops->async_control(ucsi, cmd);
drivers/usb/typec/ucsi/ucsi.c
2372
if (!ucsi->connector)
drivers/usb/typec/ucsi/ucsi.c
2375
for (i = 0; i < ucsi->cap.num_connectors; i++) {
drivers/usb/typec/ucsi/ucsi.c
2376
cancel_work_sync(&ucsi->connector[i].work);
drivers/usb/typec/ucsi/ucsi.c
2377
ucsi_unregister_port(&ucsi->connector[i]);
drivers/usb/typec/ucsi/ucsi.c
2378
lockdep_unregister_key(&ucsi->connector[i].lock_key);
drivers/usb/typec/ucsi/ucsi.c
2381
kfree(ucsi->connector);
drivers/usb/typec/ucsi/ucsi.c
254
mutex_lock(&ucsi->ppm_lock);
drivers/usb/typec/ucsi/ucsi.c
256
ret = ucsi_run_command(ucsi, cmd, &cci, data, size,
drivers/usb/typec/ucsi/ucsi.c
260
ret = ucsi_read_error(ucsi, connector_num);
drivers/usb/typec/ucsi/ucsi.c
264
mutex_unlock(&ucsi->ppm_lock);
drivers/usb/typec/ucsi/ucsi.c
268
int ucsi_send_command(struct ucsi *ucsi, u64 command,
drivers/usb/typec/ucsi/ucsi.c
271
return ucsi_send_command_common(ucsi, command, data,
drivers/usb/typec/ucsi/ucsi.c
276
int ucsi_write_message_out_command(struct ucsi *ucsi, u64 command,
drivers/usb/typec/ucsi/ucsi.c
280
if (msg_out_size > UCSI_MAX_MSG_OUT_DATA_LEN(ucsi))
drivers/usb/typec/ucsi/ucsi.c
283
return ucsi_send_command_common(ucsi, command, data,
drivers/usb/typec/ucsi/ucsi.c
363
ret = ucsi_send_command(con->ucsi, command, &cur, sizeof(cur));
drivers/usb/typec/ucsi/ucsi.c
365
if (con->ucsi->version > 0x0100) {
drivers/usb/typec/ucsi/ucsi.c
366
dev_err(con->ucsi->dev,
drivers/usb/typec/ucsi/ucsi.c
40
void ucsi_notify_common(struct ucsi *ucsi, u32 cci)
drivers/usb/typec/ucsi/ucsi.c
432
override = !!(con->ucsi->cap.features & UCSI_CAP_ALT_MODE_OVERRIDE);
drivers/usb/typec/ucsi/ucsi.c
47
if (!ucsi->cap.num_connectors ||
drivers/usb/typec/ucsi/ucsi.c
48
UCSI_CCI_CONNECTOR(cci) <= ucsi->cap.num_connectors)
drivers/usb/typec/ucsi/ucsi.c
49
ucsi_connector_change(ucsi, UCSI_CCI_CONNECTOR(cci));
drivers/usb/typec/ucsi/ucsi.c
51
dev_err(ucsi->dev, "bogus connector number in CCI: %lu\n",
drivers/usb/typec/ucsi/ucsi.c
526
dev_err(con->ucsi->dev, "failed to registers svid 0x%04x mode %d\n",
drivers/usb/typec/ucsi/ucsi.c
544
dev_warn(con->ucsi->dev,
drivers/usb/typec/ucsi/ucsi.c
549
dev_warn(con->ucsi->dev,
drivers/usb/typec/ucsi/ucsi.c
56
test_and_clear_bit(ACK_PENDING, &ucsi->flags))
drivers/usb/typec/ucsi/ucsi.c
57
complete(&ucsi->complete);
drivers/usb/typec/ucsi/ucsi.c
60
test_and_clear_bit(COMMAND_PENDING, &ucsi->flags))
drivers/usb/typec/ucsi/ucsi.c
61
complete(&ucsi->complete);
drivers/usb/typec/ucsi/ucsi.c
65
int ucsi_sync_control_common(struct ucsi *ucsi, u64 command, u32 *cci,
drivers/usb/typec/ucsi/ucsi.c
663
struct ucsi *ucsi = con->ucsi;
drivers/usb/typec/ucsi/ucsi.c
672
max_altmodes = con->ucsi->cap.num_alt_modes;
drivers/usb/typec/ucsi/ucsi.c
684
len = ucsi_send_command(con->ucsi, command, &alt, sizeof(alt));
drivers/usb/typec/ucsi/ucsi.c
705
multi_dp = ucsi->ops->update_altmodes(ucsi, recipient, orig, updated);
drivers/usb/typec/ucsi/ucsi.c
73
set_bit(ACK_PENDING, &ucsi->flags);
drivers/usb/typec/ucsi/ucsi.c
748
if (!(con->ucsi->cap.features & UCSI_CAP_ALT_MODE_DETAILS))
drivers/usb/typec/ucsi/ucsi.c
75
set_bit(COMMAND_PENDING, &ucsi->flags);
drivers/usb/typec/ucsi/ucsi.c
754
if (con->ucsi->ops->update_altmodes)
drivers/usb/typec/ucsi/ucsi.c
758
max_altmodes = con->ucsi->cap.num_alt_modes;
drivers/usb/typec/ucsi/ucsi.c
766
len = ucsi_send_command(con->ucsi, command, alt, sizeof(alt));
drivers/usb/typec/ucsi/ucsi.c
77
reinit_completion(&ucsi->complete);
drivers/usb/typec/ucsi/ucsi.c
798
desc.mode_selection = con->ucsi->ops->add_partner_altmodes &&
drivers/usb/typec/ucsi/ucsi.c
80
if (!ucsi->ops->write_message_out) {
drivers/usb/typec/ucsi/ucsi.c
85
ret = ucsi->ops->write_message_out(ucsi, msg_out, msg_out_size);
drivers/usb/typec/ucsi/ucsi.c
850
UCSI_MAX_DATA_LENGTH(con->ucsi));
drivers/usb/typec/ucsi/ucsi.c
853
ret = ucsi_send_command_common(con->ucsi, command, &con->status, size,
drivers/usb/typec/ucsi/ucsi.c
863
struct ucsi *ucsi = con->ucsi;
drivers/usb/typec/ucsi/ucsi.c
868
ucsi->quirks & UCSI_NO_PARTNER_PDOS &&
drivers/usb/typec/ucsi/ucsi.c
877
ret = ucsi_send_command(ucsi, command, pdos + offset,
drivers/usb/typec/ucsi/ucsi.c
880
dev_err(ucsi->dev, "UCSI_GET_PDOS failed (%d)\n", ret);
drivers/usb/typec/ucsi/ucsi.c
888
struct ucsi *ucsi = con->ucsi;
drivers/usb/typec/ucsi/ucsi.c
892
if (!(ucsi->cap.features & UCSI_CAP_PDO_DETAILS))
drivers/usb/typec/ucsi/ucsi.c
90
ret = ucsi->ops->async_control(ucsi, command);
drivers/usb/typec/ucsi/ucsi.c
94
if (!wait_for_completion_timeout(&ucsi->complete, 5 * HZ))
drivers/usb/typec/ucsi/ucsi.c
951
size_t len = min(bytes, UCSI_MAX_DATA_LENGTH(con->ucsi));
drivers/usb/typec/ucsi/ucsi.c
965
ret = ucsi_send_command(con->ucsi, command, data + offset, len);
drivers/usb/typec/ucsi/ucsi.c
988
dev_err(con->ucsi->dev, "Failed to set partner identity (%d)\n", ret);
drivers/usb/typec/ucsi/ucsi.c
99
clear_bit(ACK_PENDING, &ucsi->flags);
drivers/usb/typec/ucsi/ucsi.h
100
void ucsi_destroy(struct ucsi *ucsi);
drivers/usb/typec/ucsi/ucsi.h
101
int ucsi_register(struct ucsi *ucsi);
drivers/usb/typec/ucsi/ucsi.h
102
void ucsi_unregister(struct ucsi *ucsi);
drivers/usb/typec/ucsi/ucsi.h
103
void *ucsi_get_drvdata(struct ucsi *ucsi);
drivers/usb/typec/ucsi/ucsi.h
104
void ucsi_set_drvdata(struct ucsi *ucsi, void *data);
drivers/usb/typec/ucsi/ucsi.h
108
void ucsi_connector_change(struct ucsi *ucsi, u8 num);
drivers/usb/typec/ucsi/ucsi.h
19
struct ucsi;
drivers/usb/typec/ucsi/ucsi.h
339
((_con_)->ucsi->version >= UCSI_VERSION_2_0 && \
drivers/usb/typec/ucsi/ucsi.h
455
ucsi_bitfield_read((_con_)->cap, UCSI_CONCAP_##_field_, (_con_)->ucsi->version)
drivers/usb/typec/ucsi/ucsi.h
458
ucsi_bitfield_read((_con_)->status, UCSI_CONSTAT_##_field_, (_con_)->ucsi->version)
drivers/usb/typec/ucsi/ucsi.h
530
struct ucsi *ucsi;
drivers/usb/typec/ucsi/ucsi.h
578
int ucsi_send_command(struct ucsi *ucsi, u64 command,
drivers/usb/typec/ucsi/ucsi.h
580
int ucsi_write_message_out_command(struct ucsi *ucsi, u64 command,
drivers/usb/typec/ucsi/ucsi.h
585
int ucsi_suspend(struct ucsi *ucsi);
drivers/usb/typec/ucsi/ucsi.h
586
int ucsi_resume(struct ucsi *ucsi);
drivers/usb/typec/ucsi/ucsi.h
588
void ucsi_notify_common(struct ucsi *ucsi, u32 cci);
drivers/usb/typec/ucsi/ucsi.h
589
int ucsi_sync_control_common(struct ucsi *ucsi, u64 command, u32 *cci,
drivers/usb/typec/ucsi/ucsi.h
647
void ucsi_debugfs_register(struct ucsi *ucsi);
drivers/usb/typec/ucsi/ucsi.h
648
void ucsi_debugfs_unregister(struct ucsi *ucsi);
drivers/usb/typec/ucsi/ucsi.h
652
static inline void ucsi_debugfs_register(struct ucsi *ucsi) { }
drivers/usb/typec/ucsi/ucsi.h
653
static inline void ucsi_debugfs_unregister(struct ucsi *ucsi) { }
drivers/usb/typec/ucsi/ucsi.h
82
int (*read_version)(struct ucsi *ucsi, u16 *version);
drivers/usb/typec/ucsi/ucsi.h
83
int (*read_cci)(struct ucsi *ucsi, u32 *cci);
drivers/usb/typec/ucsi/ucsi.h
84
int (*poll_cci)(struct ucsi *ucsi, u32 *cci);
drivers/usb/typec/ucsi/ucsi.h
85
int (*read_message_in)(struct ucsi *ucsi, void *val, size_t val_len);
drivers/usb/typec/ucsi/ucsi.h
86
int (*write_message_out)(struct ucsi *ucsi, void *data, size_t data_len);
drivers/usb/typec/ucsi/ucsi.h
87
int (*sync_control)(struct ucsi *ucsi, u64 command, u32 *cci,
drivers/usb/typec/ucsi/ucsi.h
89
int (*async_control)(struct ucsi *ucsi, u64 command);
drivers/usb/typec/ucsi/ucsi.h
90
bool (*update_altmodes)(struct ucsi *ucsi, u8 recipient,
drivers/usb/typec/ucsi/ucsi.h
99
struct ucsi *ucsi_create(struct device *dev, const struct ucsi_operations *ops);
drivers/usb/typec/ucsi/ucsi_acpi.c
104
static int ucsi_acpi_async_control(struct ucsi *ucsi, u64 command)
drivers/usb/typec/ucsi/ucsi_acpi.c
106
struct ucsi_acpi *ua = ucsi_get_drvdata(ucsi);
drivers/usb/typec/ucsi/ucsi_acpi.c
124
static int ucsi_gram_sync_control(struct ucsi *ucsi, u64 command, u32 *cci,
drivers/usb/typec/ucsi/ucsi_acpi.c
130
struct ucsi_acpi *ua = ucsi_get_drvdata(ucsi);
drivers/usb/typec/ucsi/ucsi_acpi.c
133
ret = ucsi_sync_control_common(ucsi, command, cci, val, len,
drivers/usb/typec/ucsi/ucsi_acpi.c
182
ret = ua->ucsi->ops->read_cci(ua->ucsi, &cci);
drivers/usb/typec/ucsi/ucsi_acpi.c
186
ucsi_notify_common(ua->ucsi, cci);
drivers/usb/typec/ucsi/ucsi_acpi.c
22
struct ucsi *ucsi;
drivers/usb/typec/ucsi/ucsi_acpi.c
226
ua->ucsi = ucsi_create(&pdev->dev, ops);
drivers/usb/typec/ucsi/ucsi_acpi.c
227
if (IS_ERR(ua->ucsi))
drivers/usb/typec/ucsi/ucsi_acpi.c
228
return PTR_ERR(ua->ucsi);
drivers/usb/typec/ucsi/ucsi_acpi.c
230
ucsi_set_drvdata(ua->ucsi, ua);
drivers/usb/typec/ucsi/ucsi_acpi.c
237
ucsi_destroy(ua->ucsi);
drivers/usb/typec/ucsi/ucsi_acpi.c
241
ret = ucsi_register(ua->ucsi);
drivers/usb/typec/ucsi/ucsi_acpi.c
246
ucsi_destroy(ua->ucsi);
drivers/usb/typec/ucsi/ucsi_acpi.c
259
ucsi_unregister(ua->ucsi);
drivers/usb/typec/ucsi/ucsi_acpi.c
260
ucsi_destroy(ua->ucsi);
drivers/usb/typec/ucsi/ucsi_acpi.c
270
return ucsi_suspend(ua->ucsi);
drivers/usb/typec/ucsi/ucsi_acpi.c
277
return ucsi_resume(ua->ucsi);
drivers/usb/typec/ucsi/ucsi_acpi.c
45
static int ucsi_acpi_read_version(struct ucsi *ucsi, u16 *version)
drivers/usb/typec/ucsi/ucsi_acpi.c
47
struct ucsi_acpi *ua = ucsi_get_drvdata(ucsi);
drivers/usb/typec/ucsi/ucsi_acpi.c
59
static int ucsi_acpi_read_cci(struct ucsi *ucsi, u32 *cci)
drivers/usb/typec/ucsi/ucsi_acpi.c
61
struct ucsi_acpi *ua = ucsi_get_drvdata(ucsi);
drivers/usb/typec/ucsi/ucsi_acpi.c
68
static int ucsi_acpi_poll_cci(struct ucsi *ucsi, u32 *cci)
drivers/usb/typec/ucsi/ucsi_acpi.c
70
struct ucsi_acpi *ua = ucsi_get_drvdata(ucsi);
drivers/usb/typec/ucsi/ucsi_acpi.c
77
return ucsi_acpi_read_cci(ucsi, cci);
drivers/usb/typec/ucsi/ucsi_acpi.c
80
static int ucsi_acpi_read_message_in(struct ucsi *ucsi, void *val, size_t val_len)
drivers/usb/typec/ucsi/ucsi_acpi.c
82
struct ucsi_acpi *ua = ucsi_get_drvdata(ucsi);
drivers/usb/typec/ucsi/ucsi_acpi.c
89
static int ucsi_acpi_write_message_out(struct ucsi *ucsi, void *data, size_t data_len)
drivers/usb/typec/ucsi/ucsi_acpi.c
91
struct ucsi_acpi *ua = ucsi_get_drvdata(ucsi);
drivers/usb/typec/ucsi/ucsi_acpi.c
96
if (ucsi->version <= UCSI_VERSION_1_2)
drivers/usb/typec/ucsi/ucsi_ccg.c
1360
status = ucsi_register(uc->ucsi);
drivers/usb/typec/ucsi/ucsi_ccg.c
1381
ucsi_unregister(uc->ucsi);
drivers/usb/typec/ucsi/ucsi_ccg.c
1480
uc->ucsi = ucsi_create(dev, &ucsi_ccg_ops);
drivers/usb/typec/ucsi/ucsi_ccg.c
1481
if (IS_ERR(uc->ucsi))
drivers/usb/typec/ucsi/ucsi_ccg.c
1482
return PTR_ERR(uc->ucsi);
drivers/usb/typec/ucsi/ucsi_ccg.c
1484
ucsi_set_drvdata(uc->ucsi, uc);
drivers/usb/typec/ucsi/ucsi_ccg.c
1492
status = ucsi_register(uc->ucsi);
drivers/usb/typec/ucsi/ucsi_ccg.c
1511
ucsi_destroy(uc->ucsi);
drivers/usb/typec/ucsi/ucsi_ccg.c
1523
ucsi_unregister(uc->ucsi);
drivers/usb/typec/ucsi/ucsi_ccg.c
1525
ucsi_destroy(uc->ucsi);
drivers/usb/typec/ucsi/ucsi_ccg.c
1551
return ucsi_resume(uc->ucsi);
drivers/usb/typec/ucsi/ucsi_ccg.c
204
struct ucsi *ucsi;
drivers/usb/typec/ucsi/ucsi_ccg.c
397
static bool ucsi_ccg_update_altmodes(struct ucsi *ucsi,
drivers/usb/typec/ucsi/ucsi_ccg.c
402
struct ucsi_ccg *uc = ucsi_get_drvdata(ucsi);
drivers/usb/typec/ucsi/ucsi_ccg.c
564
static int ucsi_ccg_read_version(struct ucsi *ucsi, u16 *version)
drivers/usb/typec/ucsi/ucsi_ccg.c
566
struct ucsi_ccg *uc = ucsi_get_drvdata(ucsi);
drivers/usb/typec/ucsi/ucsi_ccg.c
572
static int ucsi_ccg_read_cci(struct ucsi *ucsi, u32 *cci)
drivers/usb/typec/ucsi/ucsi_ccg.c
574
struct ucsi_ccg *uc = ucsi_get_drvdata(ucsi);
drivers/usb/typec/ucsi/ucsi_ccg.c
583
static int ucsi_ccg_read_message_in(struct ucsi *ucsi, void *val, size_t val_len)
drivers/usb/typec/ucsi/ucsi_ccg.c
585
struct ucsi_ccg *uc = ucsi_get_drvdata(ucsi);
drivers/usb/typec/ucsi/ucsi_ccg.c
594
static int ucsi_ccg_async_control(struct ucsi *ucsi, u64 command)
drivers/usb/typec/ucsi/ucsi_ccg.c
596
struct ucsi_ccg *uc = ucsi_get_drvdata(ucsi);
drivers/usb/typec/ucsi/ucsi_ccg.c
610
static int ucsi_ccg_sync_control(struct ucsi *ucsi, u64 command, u32 *cci,
drivers/usb/typec/ucsi/ucsi_ccg.c
614
struct ucsi_ccg *uc = ucsi_get_drvdata(ucsi);
drivers/usb/typec/ucsi/ucsi_ccg.c
630
con = &uc->ucsi->connector[con_index - 1];
drivers/usb/typec/ucsi/ucsi_ccg.c
634
ret = ucsi_sync_control_common(ucsi, command, cci, data, size,
drivers/usb/typec/ucsi/ucsi_ccg.c
711
ucsi_notify_common(uc->ucsi, cci);
drivers/usb/typec/ucsi/ucsi_glink.c
100
ret = pmic_glink_send(ucsi->client, &req, sizeof(req));
drivers/usb/typec/ucsi/ucsi_glink.c
102
dev_err(ucsi->dev, "failed to send UCSI read request: %d\n", ret);
drivers/usb/typec/ucsi/ucsi_glink.c
106
left = wait_for_completion_timeout(&ucsi->read_ack, 5 * HZ);
drivers/usb/typec/ucsi/ucsi_glink.c
108
dev_err(ucsi->dev, "timeout waiting for UCSI read response\n");
drivers/usb/typec/ucsi/ucsi_glink.c
113
memcpy(val, &ucsi->read_buf[offset], val_len);
drivers/usb/typec/ucsi/ucsi_glink.c
117
mutex_unlock(&ucsi->lock);
drivers/usb/typec/ucsi/ucsi_glink.c
122
static int pmic_glink_ucsi_read_version(struct ucsi *ucsi, u16 *version)
drivers/usb/typec/ucsi/ucsi_glink.c
124
return pmic_glink_ucsi_read(ucsi, UCSI_VERSION, version, sizeof(*version));
drivers/usb/typec/ucsi/ucsi_glink.c
127
static int pmic_glink_ucsi_read_cci(struct ucsi *ucsi, u32 *cci)
drivers/usb/typec/ucsi/ucsi_glink.c
129
return pmic_glink_ucsi_read(ucsi, UCSI_CCI, cci, sizeof(*cci));
drivers/usb/typec/ucsi/ucsi_glink.c
132
static int pmic_glink_ucsi_read_message_in(struct ucsi *ucsi, void *val, size_t val_len)
drivers/usb/typec/ucsi/ucsi_glink.c
134
return pmic_glink_ucsi_read(ucsi, UCSI_MESSAGE_IN, val, val_len);
drivers/usb/typec/ucsi/ucsi_glink.c
137
static int pmic_glink_ucsi_locked_write(struct pmic_glink_ucsi *ucsi, unsigned int offset,
drivers/usb/typec/ucsi/ucsi_glink.c
150
if (ucsi->ucsi->version >= UCSI_VERSION_2_0) {
drivers/usb/typec/ucsi/ucsi_glink.c
153
} else if (ucsi->ucsi->version) {
drivers/usb/typec/ucsi/ucsi_glink.c
157
dev_err(ucsi->dev, "UCSI version unknown\n");
drivers/usb/typec/ucsi/ucsi_glink.c
167
reinit_completion(&ucsi->write_ack);
drivers/usb/typec/ucsi/ucsi_glink.c
169
ret = pmic_glink_send(ucsi->client, &req, req_len);
drivers/usb/typec/ucsi/ucsi_glink.c
171
dev_err(ucsi->dev, "failed to send UCSI write request: %d\n", ret);
drivers/usb/typec/ucsi/ucsi_glink.c
175
left = wait_for_completion_timeout(&ucsi->write_ack, 5 * HZ);
drivers/usb/typec/ucsi/ucsi_glink.c
177
dev_err(ucsi->dev, "timeout waiting for UCSI write response\n");
drivers/usb/typec/ucsi/ucsi_glink.c
184
static int pmic_glink_ucsi_async_control(struct ucsi *__ucsi, u64 command)
drivers/usb/typec/ucsi/ucsi_glink.c
186
struct pmic_glink_ucsi *ucsi = ucsi_get_drvdata(__ucsi);
drivers/usb/typec/ucsi/ucsi_glink.c
189
mutex_lock(&ucsi->lock);
drivers/usb/typec/ucsi/ucsi_glink.c
190
ret = pmic_glink_ucsi_locked_write(ucsi, UCSI_CONTROL, &command, sizeof(command));
drivers/usb/typec/ucsi/ucsi_glink.c
191
mutex_unlock(&ucsi->lock);
drivers/usb/typec/ucsi/ucsi_glink.c
198
struct pmic_glink_ucsi *ucsi = ucsi_get_drvdata(con->ucsi);
drivers/usb/typec/ucsi/ucsi_glink.c
201
!ucsi->port_orientation[con->num - 1])
drivers/usb/typec/ucsi/ucsi_glink.c
209
struct pmic_glink_ucsi *ucsi = ucsi_get_drvdata(con->ucsi);
drivers/usb/typec/ucsi/ucsi_glink.c
218
!ucsi->port_orientation[con->num - 1])
drivers/usb/typec/ucsi/ucsi_glink.c
221
orientation = gpiod_get_value(ucsi->port_orientation[con->num - 1]);
drivers/usb/typec/ucsi/ucsi_glink.c
241
static void pmic_glink_ucsi_read_ack(struct pmic_glink_ucsi *ucsi, const void *data, int len)
drivers/usb/typec/ucsi/ucsi_glink.c
246
if (ucsi->ucsi->version) {
drivers/usb/typec/ucsi/ucsi_glink.c
247
if (ucsi->ucsi->version >= UCSI_VERSION_2_0) {
drivers/usb/typec/ucsi/ucsi_glink.c
254
} else if (!ucsi->ucsi_registered) {
drivers/usb/typec/ucsi/ucsi_glink.c
267
dev_err(ucsi->dev, "Device has been registered but UCSI version is still unknown\n");
drivers/usb/typec/ucsi/ucsi_glink.c
284
memcpy(ucsi->read_buf, buf, buf_len);
drivers/usb/typec/ucsi/ucsi_glink.c
285
complete(&ucsi->read_ack);
drivers/usb/typec/ucsi/ucsi_glink.c
288
static void pmic_glink_ucsi_write_ack(struct pmic_glink_ucsi *ucsi, const void *data, int len)
drivers/usb/typec/ucsi/ucsi_glink.c
295
complete(&ucsi->write_ack);
drivers/usb/typec/ucsi/ucsi_glink.c
300
struct pmic_glink_ucsi *ucsi = container_of(work, struct pmic_glink_ucsi, notify_work);
drivers/usb/typec/ucsi/ucsi_glink.c
304
ret = pmic_glink_ucsi_read(ucsi->ucsi, UCSI_CCI, &cci, sizeof(cci));
drivers/usb/typec/ucsi/ucsi_glink.c
306
dev_err(ucsi->dev, "failed to read CCI on notification\n");
drivers/usb/typec/ucsi/ucsi_glink.c
310
ucsi_notify_common(ucsi->ucsi, cci);
drivers/usb/typec/ucsi/ucsi_glink.c
315
struct pmic_glink_ucsi *ucsi = container_of(work, struct pmic_glink_ucsi, register_work);
drivers/usb/typec/ucsi/ucsi_glink.c
319
spin_lock_irqsave(&ucsi->state_lock, flags);
drivers/usb/typec/ucsi/ucsi_glink.c
320
pd_running = ucsi->pd_running;
drivers/usb/typec/ucsi/ucsi_glink.c
321
spin_unlock_irqrestore(&ucsi->state_lock, flags);
drivers/usb/typec/ucsi/ucsi_glink.c
323
if (!ucsi->ucsi_registered && pd_running) {
drivers/usb/typec/ucsi/ucsi_glink.c
324
ucsi_register(ucsi->ucsi);
drivers/usb/typec/ucsi/ucsi_glink.c
325
ucsi->ucsi_registered = true;
drivers/usb/typec/ucsi/ucsi_glink.c
326
} else if (ucsi->ucsi_registered && !pd_running) {
drivers/usb/typec/ucsi/ucsi_glink.c
327
ucsi_unregister(ucsi->ucsi);
drivers/usb/typec/ucsi/ucsi_glink.c
328
ucsi->ucsi_registered = false;
drivers/usb/typec/ucsi/ucsi_glink.c
334
struct pmic_glink_ucsi *ucsi = priv;
drivers/usb/typec/ucsi/ucsi_glink.c
339
pmic_glink_ucsi_read_ack(ucsi, data, len);
drivers/usb/typec/ucsi/ucsi_glink.c
342
pmic_glink_ucsi_write_ack(ucsi, data, len);
drivers/usb/typec/ucsi/ucsi_glink.c
345
schedule_work(&ucsi->notify_work);
drivers/usb/typec/ucsi/ucsi_glink.c
352
struct pmic_glink_ucsi *ucsi = priv;
drivers/usb/typec/ucsi/ucsi_glink.c
355
spin_lock_irqsave(&ucsi->state_lock, flags);
drivers/usb/typec/ucsi/ucsi_glink.c
356
ucsi->pd_running = (state == SERVREG_SERVICE_STATE_UP);
drivers/usb/typec/ucsi/ucsi_glink.c
357
spin_unlock_irqrestore(&ucsi->state_lock, flags);
drivers/usb/typec/ucsi/ucsi_glink.c
358
schedule_work(&ucsi->register_work);
drivers/usb/typec/ucsi/ucsi_glink.c
363
struct pmic_glink_ucsi *ucsi = data;
drivers/usb/typec/ucsi/ucsi_glink.c
366
mutex_lock(&ucsi->lock);
drivers/usb/typec/ucsi/ucsi_glink.c
367
ucsi_destroy(ucsi->ucsi);
drivers/usb/typec/ucsi/ucsi_glink.c
368
mutex_unlock(&ucsi->lock);
drivers/usb/typec/ucsi/ucsi_glink.c
392
struct pmic_glink_ucsi *ucsi;
drivers/usb/typec/ucsi/ucsi_glink.c
397
ucsi = devm_kzalloc(dev, sizeof(*ucsi), GFP_KERNEL);
drivers/usb/typec/ucsi/ucsi_glink.c
398
if (!ucsi)
drivers/usb/typec/ucsi/ucsi_glink.c
401
ucsi->dev = dev;
drivers/usb/typec/ucsi/ucsi_glink.c
402
dev_set_drvdata(dev, ucsi);
drivers/usb/typec/ucsi/ucsi_glink.c
404
INIT_WORK(&ucsi->notify_work, pmic_glink_ucsi_notify);
drivers/usb/typec/ucsi/ucsi_glink.c
405
INIT_WORK(&ucsi->register_work, pmic_glink_ucsi_register);
drivers/usb/typec/ucsi/ucsi_glink.c
406
init_completion(&ucsi->read_ack);
drivers/usb/typec/ucsi/ucsi_glink.c
407
init_completion(&ucsi->write_ack);
drivers/usb/typec/ucsi/ucsi_glink.c
408
spin_lock_init(&ucsi->state_lock);
drivers/usb/typec/ucsi/ucsi_glink.c
409
mutex_init(&ucsi->lock);
drivers/usb/typec/ucsi/ucsi_glink.c
411
ucsi->ucsi = ucsi_create(dev, &pmic_glink_ucsi_ops);
drivers/usb/typec/ucsi/ucsi_glink.c
412
if (IS_ERR(ucsi->ucsi))
drivers/usb/typec/ucsi/ucsi_glink.c
413
return PTR_ERR(ucsi->ucsi);
drivers/usb/typec/ucsi/ucsi_glink.c
416
ret = devm_add_action_or_reset(dev, pmic_glink_ucsi_destroy, ucsi);
drivers/usb/typec/ucsi/ucsi_glink.c
422
ucsi->ucsi->quirks = *(unsigned long *)match->data;
drivers/usb/typec/ucsi/ucsi_glink.c
424
ucsi_set_drvdata(ucsi->ucsi, ucsi);
drivers/usb/typec/ucsi/ucsi_glink.c
451
ucsi->port_orientation[port] = desc;
drivers/usb/typec/ucsi/ucsi_glink.c
454
ucsi->client = devm_pmic_glink_client_alloc(dev, PMIC_GLINK_OWNER_USBC,
drivers/usb/typec/ucsi/ucsi_glink.c
457
ucsi);
drivers/usb/typec/ucsi/ucsi_glink.c
458
if (IS_ERR(ucsi->client))
drivers/usb/typec/ucsi/ucsi_glink.c
459
return PTR_ERR(ucsi->client);
drivers/usb/typec/ucsi/ucsi_glink.c
461
pmic_glink_client_register(ucsi->client);
drivers/usb/typec/ucsi/ucsi_glink.c
468
struct pmic_glink_ucsi *ucsi = dev_get_drvdata(&adev->dev);
drivers/usb/typec/ucsi/ucsi_glink.c
471
ucsi_unregister(ucsi->ucsi);
drivers/usb/typec/ucsi/ucsi_glink.c
70
struct ucsi *ucsi;
drivers/usb/typec/ucsi/ucsi_glink.c
84
static int pmic_glink_ucsi_read(struct ucsi *__ucsi, unsigned int offset,
drivers/usb/typec/ucsi/ucsi_glink.c
87
struct pmic_glink_ucsi *ucsi = ucsi_get_drvdata(__ucsi);
drivers/usb/typec/ucsi/ucsi_glink.c
96
mutex_lock(&ucsi->lock);
drivers/usb/typec/ucsi/ucsi_glink.c
97
memset(ucsi->read_buf, 0, sizeof(ucsi->read_buf));
drivers/usb/typec/ucsi/ucsi_glink.c
98
reinit_completion(&ucsi->read_ack);
drivers/usb/typec/ucsi/ucsi_huawei_gaokun.c
101
struct ucsi *ucsi;
drivers/usb/typec/ucsi/ucsi_huawei_gaokun.c
113
static int gaokun_ucsi_read_version(struct ucsi *ucsi, u16 *version)
drivers/usb/typec/ucsi/ucsi_huawei_gaokun.c
115
struct gaokun_ucsi *uec = ucsi_get_drvdata(ucsi);
drivers/usb/typec/ucsi/ucsi_huawei_gaokun.c
122
static int gaokun_ucsi_read_cci(struct ucsi *ucsi, u32 *cci)
drivers/usb/typec/ucsi/ucsi_huawei_gaokun.c
124
struct gaokun_ucsi *uec = ucsi_get_drvdata(ucsi);
drivers/usb/typec/ucsi/ucsi_huawei_gaokun.c
137
static int gaokun_ucsi_read_message_in(struct ucsi *ucsi,
drivers/usb/typec/ucsi/ucsi_huawei_gaokun.c
140
struct gaokun_ucsi *uec = ucsi_get_drvdata(ucsi);
drivers/usb/typec/ucsi/ucsi_huawei_gaokun.c
154
static int gaokun_ucsi_async_control(struct ucsi *ucsi, u64 command)
drivers/usb/typec/ucsi/ucsi_huawei_gaokun.c
156
struct gaokun_ucsi *uec = ucsi_get_drvdata(ucsi);
drivers/usb/typec/ucsi/ucsi_huawei_gaokun.c
166
struct gaokun_ucsi *uec = ucsi_get_drvdata(con->ucsi);
drivers/usb/typec/ucsi/ucsi_huawei_gaokun.c
189
struct gaokun_ucsi *uec = ucsi_get_drvdata(con->ucsi);
drivers/usb/typec/ucsi/ucsi_huawei_gaokun.c
218
struct gaokun_ucsi *uec = port->ucsi;
drivers/usb/typec/ucsi/ucsi_huawei_gaokun.c
296
struct gaokun_ucsi *uec = port->ucsi;
drivers/usb/typec/ucsi/ucsi_huawei_gaokun.c
330
if (!uec->ucsi->connector) { /* slow to register */
drivers/usb/typec/ucsi/ucsi_huawei_gaokun.c
389
ret = gaokun_ucsi_read_cci(uec->ucsi, &cci);
drivers/usb/typec/ucsi/ucsi_huawei_gaokun.c
393
ucsi_notify_common(uec->ucsi, cci);
drivers/usb/typec/ucsi/ucsi_huawei_gaokun.c
424
ucsi_port->ucsi = uec;
drivers/usb/typec/ucsi/ucsi_huawei_gaokun.c
472
struct ucsi *ucsi;
drivers/usb/typec/ucsi/ucsi_huawei_gaokun.c
476
ucsi = uec->ucsi;
drivers/usb/typec/ucsi/ucsi_huawei_gaokun.c
480
dev_err_probe(ucsi->dev, ret, "notifier register failed\n");
drivers/usb/typec/ucsi/ucsi_huawei_gaokun.c
484
ret = ucsi_register(ucsi);
drivers/usb/typec/ucsi/ucsi_huawei_gaokun.c
486
dev_err_probe(ucsi->dev, ret, "ucsi register failed\n");
drivers/usb/typec/ucsi/ucsi_huawei_gaokun.c
512
uec->ucsi = ucsi_create(dev, &gaokun_ucsi_ops);
drivers/usb/typec/ucsi/ucsi_huawei_gaokun.c
513
if (IS_ERR(uec->ucsi))
drivers/usb/typec/ucsi/ucsi_huawei_gaokun.c
514
return PTR_ERR(uec->ucsi);
drivers/usb/typec/ucsi/ucsi_huawei_gaokun.c
516
ucsi_set_drvdata(uec->ucsi, uec);
drivers/usb/typec/ucsi/ucsi_huawei_gaokun.c
532
ucsi_unregister(uec->ucsi);
drivers/usb/typec/ucsi/ucsi_huawei_gaokun.c
536
ucsi_destroy(uec->ucsi);
drivers/usb/typec/ucsi/ucsi_huawei_gaokun.c
83
struct gaokun_ucsi *ucsi;
drivers/usb/typec/ucsi/ucsi_stm32g0.c
119
static int ucsi_stm32g0_bl_cmd_check_ack(struct ucsi *ucsi, unsigned int cmd, bool check_ack)
drivers/usb/typec/ucsi/ucsi_stm32g0.c
121
struct ucsi_stm32g0 *g0 = ucsi_get_drvdata(ucsi);
drivers/usb/typec/ucsi/ucsi_stm32g0.c
150
return ucsi_stm32g0_bl_check_ack(ucsi);
drivers/usb/typec/ucsi/ucsi_stm32g0.c
155
static int ucsi_stm32g0_bl_cmd(struct ucsi *ucsi, unsigned int cmd)
drivers/usb/typec/ucsi/ucsi_stm32g0.c
157
return ucsi_stm32g0_bl_cmd_check_ack(ucsi, cmd, true);
drivers/usb/typec/ucsi/ucsi_stm32g0.c
160
static int ucsi_stm32g0_bl_rcv_check_ack(struct ucsi *ucsi, void *data, size_t len, bool check_ack)
drivers/usb/typec/ucsi/ucsi_stm32g0.c
162
struct ucsi_stm32g0 *g0 = ucsi_get_drvdata(ucsi);
drivers/usb/typec/ucsi/ucsi_stm32g0.c
182
return ucsi_stm32g0_bl_check_ack(ucsi);
drivers/usb/typec/ucsi/ucsi_stm32g0.c
187
static int ucsi_stm32g0_bl_rcv(struct ucsi *ucsi, void *data, size_t len)
drivers/usb/typec/ucsi/ucsi_stm32g0.c
189
return ucsi_stm32g0_bl_rcv_check_ack(ucsi, data, len, true);
drivers/usb/typec/ucsi/ucsi_stm32g0.c
192
static int ucsi_stm32g0_bl_rcv_woack(struct ucsi *ucsi, void *data, size_t len)
drivers/usb/typec/ucsi/ucsi_stm32g0.c
194
return ucsi_stm32g0_bl_rcv_check_ack(ucsi, data, len, false);
drivers/usb/typec/ucsi/ucsi_stm32g0.c
197
static int ucsi_stm32g0_bl_send(struct ucsi *ucsi, void *data, size_t len)
drivers/usb/typec/ucsi/ucsi_stm32g0.c
199
struct ucsi_stm32g0 *g0 = ucsi_get_drvdata(ucsi);
drivers/usb/typec/ucsi/ucsi_stm32g0.c
218
return ucsi_stm32g0_bl_check_ack(ucsi);
drivers/usb/typec/ucsi/ucsi_stm32g0.c
222
static int ucsi_stm32g0_bl_get_version(struct ucsi *ucsi, u8 *bl_version)
drivers/usb/typec/ucsi/ucsi_stm32g0.c
226
ret = ucsi_stm32g0_bl_cmd(ucsi, STM32_CMD_GVR);
drivers/usb/typec/ucsi/ucsi_stm32g0.c
230
return ucsi_stm32g0_bl_rcv(ucsi, bl_version, STM32_CMD_GVR_LEN);
drivers/usb/typec/ucsi/ucsi_stm32g0.c
233
static int ucsi_stm32g0_bl_send_addr(struct ucsi *ucsi, u32 addr)
drivers/usb/typec/ucsi/ucsi_stm32g0.c
241
return ucsi_stm32g0_bl_send(ucsi, data8, STM32_CMD_ADDR_LEN);
drivers/usb/typec/ucsi/ucsi_stm32g0.c
244
static int ucsi_stm32g0_bl_global_mass_erase(struct ucsi *ucsi)
drivers/usb/typec/ucsi/ucsi_stm32g0.c
253
ret = ucsi_stm32g0_bl_cmd(ucsi, STM32_CMD_ERASE);
drivers/usb/typec/ucsi/ucsi_stm32g0.c
257
return ucsi_stm32g0_bl_send(ucsi, data8, STM32_CMD_ERASE_SPECIAL_LEN);
drivers/usb/typec/ucsi/ucsi_stm32g0.c
260
static int ucsi_stm32g0_bl_write(struct ucsi *ucsi, u32 addr, const void *data, size_t len)
drivers/usb/typec/ucsi/ucsi_stm32g0.c
273
ret = ucsi_stm32g0_bl_cmd(ucsi, STM32_CMD_WM);
drivers/usb/typec/ucsi/ucsi_stm32g0.c
277
ret = ucsi_stm32g0_bl_send_addr(ucsi, addr);
drivers/usb/typec/ucsi/ucsi_stm32g0.c
287
ret = ucsi_stm32g0_bl_send(ucsi, data8, len + 2);
drivers/usb/typec/ucsi/ucsi_stm32g0.c
294
static int ucsi_stm32g0_bl_read(struct ucsi *ucsi, u32 addr, void *data, size_t len)
drivers/usb/typec/ucsi/ucsi_stm32g0.c
301
ret = ucsi_stm32g0_bl_cmd(ucsi, STM32_CMD_RM);
drivers/usb/typec/ucsi/ucsi_stm32g0.c
305
ret = ucsi_stm32g0_bl_send_addr(ucsi, addr);
drivers/usb/typec/ucsi/ucsi_stm32g0.c
309
ret = ucsi_stm32g0_bl_cmd(ucsi, len - 1);
drivers/usb/typec/ucsi/ucsi_stm32g0.c
313
return ucsi_stm32g0_bl_rcv_woack(ucsi, data, len);
drivers/usb/typec/ucsi/ucsi_stm32g0.c
317
static int ucsi_stm32g0_fw_cmd(struct ucsi *ucsi, unsigned int cmd)
drivers/usb/typec/ucsi/ucsi_stm32g0.c
319
return ucsi_stm32g0_bl_cmd_check_ack(ucsi, cmd, false);
drivers/usb/typec/ucsi/ucsi_stm32g0.c
322
static int ucsi_stm32g0_fw_rcv(struct ucsi *ucsi, void *data, size_t len)
drivers/usb/typec/ucsi/ucsi_stm32g0.c
324
return ucsi_stm32g0_bl_rcv_woack(ucsi, data, len);
drivers/usb/typec/ucsi/ucsi_stm32g0.c
328
static int ucsi_stm32g0_read(struct ucsi *ucsi, unsigned int offset, void *val, size_t len)
drivers/usb/typec/ucsi/ucsi_stm32g0.c
330
struct ucsi_stm32g0 *g0 = ucsi_get_drvdata(ucsi);
drivers/usb/typec/ucsi/ucsi_stm32g0.c
359
static int ucsi_stm32g0_read_version(struct ucsi *ucsi, u16 *version)
drivers/usb/typec/ucsi/ucsi_stm32g0.c
361
return ucsi_stm32g0_read(ucsi, UCSI_VERSION, version, sizeof(*version));
drivers/usb/typec/ucsi/ucsi_stm32g0.c
364
static int ucsi_stm32g0_read_cci(struct ucsi *ucsi, u32 *cci)
drivers/usb/typec/ucsi/ucsi_stm32g0.c
366
return ucsi_stm32g0_read(ucsi, UCSI_CCI, cci, sizeof(*cci));
drivers/usb/typec/ucsi/ucsi_stm32g0.c
369
static int ucsi_stm32g0_read_message_in(struct ucsi *ucsi, void *val, size_t len)
drivers/usb/typec/ucsi/ucsi_stm32g0.c
371
return ucsi_stm32g0_read(ucsi, UCSI_MESSAGE_IN, val, len);
drivers/usb/typec/ucsi/ucsi_stm32g0.c
374
static int ucsi_stm32g0_async_control(struct ucsi *ucsi, u64 command)
drivers/usb/typec/ucsi/ucsi_stm32g0.c
376
struct ucsi_stm32g0 *g0 = ucsi_get_drvdata(ucsi);
drivers/usb/typec/ucsi/ucsi_stm32g0.c
416
ret = ucsi_stm32g0_read(g0->ucsi, UCSI_CCI, &cci, sizeof(cci));
drivers/usb/typec/ucsi/ucsi_stm32g0.c
420
ucsi_notify_common(g0->ucsi, cci);
drivers/usb/typec/ucsi/ucsi_stm32g0.c
434
static int ucsi_stm32g0_register(struct ucsi *ucsi)
drivers/usb/typec/ucsi/ucsi_stm32g0.c
436
struct ucsi_stm32g0 *g0 = ucsi_get_drvdata(ucsi);
drivers/usb/typec/ucsi/ucsi_stm32g0.c
448
ret = ucsi_register(ucsi);
drivers/usb/typec/ucsi/ucsi_stm32g0.c
458
static void ucsi_stm32g0_unregister(struct ucsi *ucsi)
drivers/usb/typec/ucsi/ucsi_stm32g0.c
460
struct ucsi_stm32g0 *g0 = ucsi_get_drvdata(ucsi);
drivers/usb/typec/ucsi/ucsi_stm32g0.c
463
ucsi_unregister(ucsi);
drivers/usb/typec/ucsi/ucsi_stm32g0.c
487
ret = ucsi_stm32g0_fw_cmd(g0->ucsi, STM32G0_FW_GETVER);
drivers/usb/typec/ucsi/ucsi_stm32g0.c
492
ret = ucsi_stm32g0_fw_rcv(g0->ucsi, &fw_version,
drivers/usb/typec/ucsi/ucsi_stm32g0.c
506
ucsi_stm32g0_unregister(g0->ucsi);
drivers/usb/typec/ucsi/ucsi_stm32g0.c
507
ret = ucsi_stm32g0_fw_cmd(g0->ucsi, STM32G0_FW_RSTGOBL);
drivers/usb/typec/ucsi/ucsi_stm32g0.c
518
ret = ucsi_stm32g0_bl_global_mass_erase(g0->ucsi);
drivers/usb/typec/ucsi/ucsi_stm32g0.c
528
ret = ucsi_stm32g0_bl_write(g0->ucsi, addr, data, size);
drivers/usb/typec/ucsi/ucsi_stm32g0.c
539
ret = ucsi_stm32g0_bl_read(g0->ucsi, STM32G0_USER_OPTION_BYTES, &ob, sizeof(ob));
drivers/usb/typec/ucsi/ucsi_stm32g0.c
551
ret = ucsi_stm32g0_bl_write(g0->ucsi, STM32G0_USER_OPTION_BYTES, &ob, sizeof(ob));
drivers/usb/typec/ucsi/ucsi_stm32g0.c
563
if (!ucsi_stm32g0_register(g0->ucsi))
drivers/usb/typec/ucsi/ucsi_stm32g0.c
570
static int ucsi_stm32g0_probe_bootloader(struct ucsi *ucsi)
drivers/usb/typec/ucsi/ucsi_stm32g0.c
572
struct ucsi_stm32g0 *g0 = ucsi_get_drvdata(ucsi);
drivers/usb/typec/ucsi/ucsi_stm32g0.c
597
ret = ucsi_stm32g0_read(ucsi, UCSI_VERSION, &ucsi_version, sizeof(ucsi_version));
drivers/usb/typec/ucsi/ucsi_stm32g0.c
602
ret = ucsi_stm32g0_bl_get_version(ucsi, &g0->bl_version);
drivers/usb/typec/ucsi/ucsi_stm32g0.c
629
g0->ucsi = ucsi_create(dev, &ucsi_stm32g0_ops);
drivers/usb/typec/ucsi/ucsi_stm32g0.c
630
if (IS_ERR(g0->ucsi))
drivers/usb/typec/ucsi/ucsi_stm32g0.c
631
return PTR_ERR(g0->ucsi);
drivers/usb/typec/ucsi/ucsi_stm32g0.c
633
ucsi_set_drvdata(g0->ucsi, g0);
drivers/usb/typec/ucsi/ucsi_stm32g0.c
635
ret = ucsi_stm32g0_probe_bootloader(g0->ucsi);
drivers/usb/typec/ucsi/ucsi_stm32g0.c
644
ret = ucsi_stm32g0_register(g0->ucsi);
drivers/usb/typec/ucsi/ucsi_stm32g0.c
655
GFP_KERNEL, g0->ucsi, ucsi_stm32g0_fw_cb);
drivers/usb/typec/ucsi/ucsi_stm32g0.c
666
ucsi_stm32g0_unregister(g0->ucsi);
drivers/usb/typec/ucsi/ucsi_stm32g0.c
67
struct ucsi *ucsi;
drivers/usb/typec/ucsi/ucsi_stm32g0.c
671
ucsi_destroy(g0->ucsi);
drivers/usb/typec/ucsi/ucsi_stm32g0.c
681
ucsi_stm32g0_unregister(g0->ucsi);
drivers/usb/typec/ucsi/ucsi_stm32g0.c
684
ucsi_destroy(g0->ucsi);
drivers/usb/typec/ucsi/ucsi_stm32g0.c
82
static int ucsi_stm32g0_bl_check_ack(struct ucsi *ucsi)
drivers/usb/typec/ucsi/ucsi_stm32g0.c
84
struct ucsi_stm32g0 *g0 = ucsi_get_drvdata(ucsi);
drivers/usb/typec/ucsi/ucsi_yoga_c630.c
110
dev_dbg(ucsi->dev, "faking DP altmode for con1\n");
drivers/usb/typec/ucsi/ucsi_yoga_c630.c
124
dev_dbg(ucsi->dev, "ignoring altmodes for con2\n");
drivers/usb/typec/ucsi/ucsi_yoga_c630.c
130
ret = ucsi_sync_control_common(ucsi, command, cci,
drivers/usb/typec/ucsi/ucsi_yoga_c630.c
171
dev_dbg(uec->ucsi->dev, " mux %04x (muxc %d ccst %d dppn %d hpds %d hsfl %d)\n",
drivers/usb/typec/ucsi/ucsi_yoga_c630.c
175
if (uec->ucsi->connector && uec->ucsi->connector[0].port)
drivers/usb/typec/ucsi/ucsi_yoga_c630.c
176
typec_set_orientation(uec->ucsi->connector[0].port,
drivers/usb/typec/ucsi/ucsi_yoga_c630.c
200
ucsi_connector_change(uec->ucsi, 1);
drivers/usb/typec/ucsi/ucsi_yoga_c630.c
204
ret = uec->ucsi->ops->read_cci(uec->ucsi, &cci);
drivers/usb/typec/ucsi/ucsi_yoga_c630.c
208
ucsi_notify_common(uec->ucsi, cci);
drivers/usb/typec/ucsi/ucsi_yoga_c630.c
249
uec->ucsi = ucsi_create(&adev->dev, &yoga_c630_ucsi_ops);
drivers/usb/typec/ucsi/ucsi_yoga_c630.c
250
if (IS_ERR(uec->ucsi))
drivers/usb/typec/ucsi/ucsi_yoga_c630.c
251
return PTR_ERR(uec->ucsi);
drivers/usb/typec/ucsi/ucsi_yoga_c630.c
253
ucsi_set_drvdata(uec->ucsi, uec);
drivers/usb/typec/ucsi/ucsi_yoga_c630.c
263
ret = ucsi_register(uec->ucsi);
drivers/usb/typec/ucsi/ucsi_yoga_c630.c
276
ucsi_unregister(uec->ucsi);
drivers/usb/typec/ucsi/ucsi_yoga_c630.c
282
ucsi_destroy(uec->ucsi);
drivers/usb/typec/ucsi/ucsi_yoga_c630.c
291
ucsi_unregister(uec->ucsi);
drivers/usb/typec/ucsi/ucsi_yoga_c630.c
293
ucsi_destroy(uec->ucsi);
drivers/usb/typec/ucsi/ucsi_yoga_c630.c
35
struct ucsi *ucsi;
drivers/usb/typec/ucsi/ucsi_yoga_c630.c
41
static int yoga_c630_ucsi_read_version(struct ucsi *ucsi, u16 *version)
drivers/usb/typec/ucsi/ucsi_yoga_c630.c
43
struct yoga_c630_ucsi *uec = ucsi_get_drvdata(ucsi);
drivers/usb/typec/ucsi/ucsi_yoga_c630.c
50
static int yoga_c630_ucsi_read_cci(struct ucsi *ucsi, u32 *cci)
drivers/usb/typec/ucsi/ucsi_yoga_c630.c
52
struct yoga_c630_ucsi *uec = ucsi_get_drvdata(ucsi);
drivers/usb/typec/ucsi/ucsi_yoga_c630.c
65
static int yoga_c630_ucsi_read_message_in(struct ucsi *ucsi,
drivers/usb/typec/ucsi/ucsi_yoga_c630.c
68
struct yoga_c630_ucsi *uec = ucsi_get_drvdata(ucsi);
drivers/usb/typec/ucsi/ucsi_yoga_c630.c
82
static int yoga_c630_ucsi_async_control(struct ucsi *ucsi, u64 command)
drivers/usb/typec/ucsi/ucsi_yoga_c630.c
84
struct yoga_c630_ucsi *uec = ucsi_get_drvdata(ucsi);
drivers/usb/typec/ucsi/ucsi_yoga_c630.c
89
static int yoga_c630_ucsi_sync_control(struct ucsi *ucsi,