drivers/pci/quirks.c
5799
static void quirk_gpu_usb_typec_ucsi(struct pci_dev *ucsi)
drivers/pci/quirks.c
5801
pci_create_device_link(ucsi, 3, 0, PCI_BASE_CLASS_DISPLAY, 16);
drivers/usb/typec/ucsi/cros_ec_ucsi.c
114
static int cros_ucsi_sync_control(struct ucsi *ucsi, u64 cmd, u32 *cci,
drivers/usb/typec/ucsi/cros_ec_ucsi.c
117
struct cros_ucsi_data *udata = ucsi_get_drvdata(ucsi);
drivers/usb/typec/ucsi/cros_ec_ucsi.c
120
ret = ucsi_sync_control_common(ucsi, cmd, cci, data, size);
drivers/usb/typec/ucsi/cros_ec_ucsi.c
173
if (cros_ucsi_read_cci(udata->ucsi, &cci))
drivers/usb/typec/ucsi/cros_ec_ucsi.c
176
ucsi_notify_common(udata->ucsi, cci);
drivers/usb/typec/ucsi/cros_ec_ucsi.c
186
if (cros_ucsi_read(udata->ucsi, UCSI_CCI, &cci, sizeof(cci))) {
drivers/usb/typec/ucsi/cros_ec_ucsi.c
211
cros_ucsi_async_control(udata->ucsi, cmd);
drivers/usb/typec/ucsi/cros_ec_ucsi.c
224
ucsi_resume(udata->ucsi);
drivers/usb/typec/ucsi/cros_ec_ucsi.c
237
ucsi_resume(udata->ucsi);
drivers/usb/typec/ucsi/cros_ec_ucsi.c
254
ucsi_destroy(udata->ucsi);
drivers/usb/typec/ucsi/cros_ec_ucsi.c
280
udata->ucsi = ucsi_create(dev, &cros_ucsi_ops);
drivers/usb/typec/ucsi/cros_ec_ucsi.c
281
if (IS_ERR(udata->ucsi))
drivers/usb/typec/ucsi/cros_ec_ucsi.c
282
return dev_err_probe(dev, PTR_ERR(udata->ucsi), "failed to allocate UCSI instance\n");
drivers/usb/typec/ucsi/cros_ec_ucsi.c
284
ucsi_set_drvdata(udata->ucsi, udata);
drivers/usb/typec/ucsi/cros_ec_ucsi.c
290
ucsi_destroy(udata->ucsi);
drivers/usb/typec/ucsi/cros_ec_ucsi.c
294
ret = ucsi_register(udata->ucsi);
drivers/usb/typec/ucsi/cros_ec_ucsi.c
308
ucsi_unregister(udata->ucsi);
drivers/usb/typec/ucsi/cros_ec_ucsi.c
326
ucsi_resume(udata->ucsi);
drivers/usb/typec/ucsi/cros_ec_ucsi.c
44
struct ucsi *ucsi;
drivers/usb/typec/ucsi/cros_ec_ucsi.c
56
static int cros_ucsi_read(struct ucsi *ucsi, unsigned int offset, void *val,
drivers/usb/typec/ucsi/cros_ec_ucsi.c
59
struct cros_ucsi_data *udata = ucsi_get_drvdata(ucsi);
drivers/usb/typec/ucsi/cros_ec_ucsi.c
80
static int cros_ucsi_read_version(struct ucsi *ucsi, u16 *version)
drivers/usb/typec/ucsi/cros_ec_ucsi.c
82
return cros_ucsi_read(ucsi, UCSI_VERSION, version, sizeof(*version));
drivers/usb/typec/ucsi/cros_ec_ucsi.c
85
static int cros_ucsi_read_cci(struct ucsi *ucsi, u32 *cci)
drivers/usb/typec/ucsi/cros_ec_ucsi.c
87
return cros_ucsi_read(ucsi, UCSI_CCI, cci, sizeof(*cci));
drivers/usb/typec/ucsi/cros_ec_ucsi.c
90
static int cros_ucsi_read_message_in(struct ucsi *ucsi, void *val,
drivers/usb/typec/ucsi/cros_ec_ucsi.c
93
return cros_ucsi_read(ucsi, UCSI_MESSAGE_IN, val, val_len);
drivers/usb/typec/ucsi/cros_ec_ucsi.c
96
static int cros_ucsi_async_control(struct ucsi *ucsi, u64 cmd)
drivers/usb/typec/ucsi/cros_ec_ucsi.c
98
struct cros_ucsi_data *udata = ucsi_get_drvdata(ucsi);
drivers/usb/typec/ucsi/debugfs.c
106
struct ucsi *ucsi = m->private;
drivers/usb/typec/ucsi/debugfs.c
108
seq_printf(m, "%u mV\n", ucsi->connector->vbus_voltage);
drivers/usb/typec/ucsi/debugfs.c
113
void ucsi_debugfs_register(struct ucsi *ucsi)
drivers/usb/typec/ucsi/debugfs.c
115
ucsi->debugfs = kzalloc_obj(*ucsi->debugfs);
drivers/usb/typec/ucsi/debugfs.c
116
if (!ucsi->debugfs)
drivers/usb/typec/ucsi/debugfs.c
119
ucsi->debugfs->dentry = debugfs_create_dir(dev_name(ucsi->dev), ucsi_debugfs_root);
drivers/usb/typec/ucsi/debugfs.c
120
debugfs_create_file("command", 0200, ucsi->debugfs->dentry, ucsi, &ucsi_cmd_fops);
drivers/usb/typec/ucsi/debugfs.c
121
debugfs_create_file("response", 0400, ucsi->debugfs->dentry, ucsi, &ucsi_resp_fops);
drivers/usb/typec/ucsi/debugfs.c
122
debugfs_create_file("peak_current", 0400, ucsi->debugfs->dentry, ucsi, &ucsi_peak_curr_fops);
drivers/usb/typec/ucsi/debugfs.c
123
debugfs_create_file("avg_current", 0400, ucsi->debugfs->dentry, ucsi, &ucsi_avg_curr_fops);
drivers/usb/typec/ucsi/debugfs.c
124
debugfs_create_file("vbus_voltage", 0400, ucsi->debugfs->dentry, ucsi, &ucsi_vbus_volt_fops);
drivers/usb/typec/ucsi/debugfs.c
127
void ucsi_debugfs_unregister(struct ucsi *ucsi)
drivers/usb/typec/ucsi/debugfs.c
129
if (IS_ERR_OR_NULL(ucsi) || !ucsi->debugfs)
drivers/usb/typec/ucsi/debugfs.c
132
debugfs_remove_recursive(ucsi->debugfs->dentry);
drivers/usb/typec/ucsi/debugfs.c
133
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
56
ret = ucsi_send_command(ucsi, val,
drivers/usb/typec/ucsi/debugfs.c
57
&ucsi->debugfs->response,
drivers/usb/typec/ucsi/debugfs.c
58
sizeof(ucsi->debugfs->response));
drivers/usb/typec/ucsi/debugfs.c
65
ucsi->debugfs->status = ret;
drivers/usb/typec/ucsi/debugfs.c
75
struct ucsi *ucsi = s->private;
drivers/usb/typec/ucsi/debugfs.c
77
if (ucsi->debugfs->status)
drivers/usb/typec/ucsi/debugfs.c
78
return ucsi->debugfs->status;
drivers/usb/typec/ucsi/debugfs.c
80
seq_printf(s, "0x%016llx%016llx\n", ucsi->debugfs->response.high,
drivers/usb/typec/ucsi/debugfs.c
81
ucsi->debugfs->response.low);
drivers/usb/typec/ucsi/debugfs.c
88
struct ucsi *ucsi = m->private;
drivers/usb/typec/ucsi/debugfs.c
90
seq_printf(m, "%u mA\n", ucsi->connector->peak_current);
drivers/usb/typec/ucsi/debugfs.c
97
struct ucsi *ucsi = m->private;
drivers/usb/typec/ucsi/debugfs.c
99
seq_printf(m, "%u mA\n", ucsi->connector->avg_current);
drivers/usb/typec/ucsi/displayport.c
129
ret = ucsi_send_command(dp->con->ucsi, command, NULL, 0);
drivers/usb/typec/ucsi/displayport.c
196
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
101
static int ucsi_acknowledge(struct ucsi *ucsi, bool conn_ack)
drivers/usb/typec/ucsi/ucsi.c
1016
if (!con->partner || con->ucsi->version < UCSI_VERSION_2_1)
drivers/usb/typec/ucsi/ucsi.c
1020
ret = ucsi_send_command(con->ucsi, command, &con->cap, sizeof(con->cap));
drivers/usb/typec/ucsi/ucsi.c
1022
dev_err(con->ucsi->dev, "GET_CONNECTOR_CAPABILITY failed (%d)\n", ret);
drivers/usb/typec/ucsi/ucsi.c
1034
if (con->ucsi->version < UCSI_VERSION_2_0)
drivers/usb/typec/ucsi/ucsi.c
108
clear_bit(EVENT_PENDING, &ucsi->flags);
drivers/usb/typec/ucsi/ucsi.c
1108
if (con->ucsi->cap.features & UCSI_CAP_GET_PD_MESSAGE)
drivers/usb/typec/ucsi/ucsi.c
1112
if (con->ucsi->version >= UCSI_VERSION_2_1) {
drivers/usb/typec/ucsi/ucsi.c
1119
dev_err(con->ucsi->dev,
drivers/usb/typec/ucsi/ucsi.c
112
return ucsi->ops->sync_control(ucsi, ctrl, NULL, NULL, 0);
drivers/usb/typec/ucsi/ucsi.c
1127
if (con->ucsi->version >= UCSI_VERSION_3_0 &&
drivers/usb/typec/ucsi/ucsi.c
1130
else if (con->ucsi->version >= UCSI_VERSION_2_0 &&
drivers/usb/typec/ucsi/ucsi.c
1143
if (con->ucsi->ops->remove_partner_altmodes)
drivers/usb/typec/ucsi/ucsi.c
1144
con->ucsi->ops->remove_partner_altmodes(con);
drivers/usb/typec/ucsi/ucsi.c
115
static int ucsi_run_command(struct ucsi *ucsi, u64 command, u32 *cci,
drivers/usb/typec/ucsi/ucsi.c
1196
dev_err(con->ucsi->dev, "con:%d: failed to set usb role:%d\n",
drivers/usb/typec/ucsi/ucsi.c
1207
dev_err(con->ucsi->dev, "GET_CONNECTOR_STATUS failed (%d)\n", ret);
drivers/usb/typec/ucsi/ucsi.c
122
if (size > UCSI_MAX_DATA_LENGTH(ucsi))
drivers/usb/typec/ucsi/ucsi.c
1237
if (con->ucsi->cap.features & UCSI_CAP_GET_PD_MESSAGE) {
drivers/usb/typec/ucsi/ucsi.c
1243
if (con->ucsi->cap.features & UCSI_CAP_ALT_MODE_DETAILS) {
drivers/usb/typec/ucsi/ucsi.c
125
ret = ucsi->ops->sync_control(ucsi, command, cci, data, size);
drivers/usb/typec/ucsi/ucsi.c
1267
struct ucsi *ucsi = con->ucsi;
drivers/usb/typec/ucsi/ucsi.c
1276
if (!test_and_set_bit(EVENT_PENDING, &ucsi->flags))
drivers/usb/typec/ucsi/ucsi.c
1277
dev_err_once(ucsi->dev, "%s entered without EVENT_PENDING\n",
drivers/usb/typec/ucsi/ucsi.c
128
return ucsi_run_command(ucsi, UCSI_CANCEL, cci, NULL, 0, false) ?: -EBUSY;
drivers/usb/typec/ucsi/ucsi.c
1282
dev_err(ucsi->dev, "%s: GET_CONNECTOR_STATUS failed (%d)\n",
drivers/usb/typec/ucsi/ucsi.c
1284
clear_bit(EVENT_PENDING, &con->ucsi->flags);
drivers/usb/typec/ucsi/ucsi.c
1290
if (ucsi->ops->connector_status)
drivers/usb/typec/ucsi/ucsi.c
1291
ucsi->ops->connector_status(con);
drivers/usb/typec/ucsi/ucsi.c
1314
if (con->ucsi->cap.features & UCSI_CAP_GET_PD_MESSAGE)
drivers/usb/typec/ucsi/ucsi.c
1316
if (con->ucsi->cap.features & UCSI_CAP_CABLE_DETAILS)
drivers/usb/typec/ucsi/ucsi.c
1346
if (con->ucsi->version >= UCSI_VERSION_2_1 &&
drivers/usb/typec/ucsi/ucsi.c
1370
void ucsi_connector_change(struct ucsi *ucsi, u8 num)
drivers/usb/typec/ucsi/ucsi.c
1372
struct ucsi_connector *con = &ucsi->connector[num - 1];
drivers/usb/typec/ucsi/ucsi.c
1374
if (!(ucsi->ntfy & UCSI_ENABLE_NTFY_CONNECTOR_CHANGE)) {
drivers/usb/typec/ucsi/ucsi.c
1375
dev_dbg(ucsi->dev, "Early connector change event\n");
drivers/usb/typec/ucsi/ucsi.c
1379
if (!test_and_set_bit(EVENT_PENDING, &ucsi->flags))
drivers/usb/typec/ucsi/ucsi.c
1402
if (con->ucsi->version < UCSI_VERSION_1_1)
drivers/usb/typec/ucsi/ucsi.c
1404
else if (con->ucsi->version >= UCSI_VERSION_2_0)
drivers/usb/typec/ucsi/ucsi.c
1407
return ucsi_send_command(con->ucsi, command, NULL, 0);
drivers/usb/typec/ucsi/ucsi.c
1410
static int ucsi_reset_ppm(struct ucsi *ucsi)
drivers/usb/typec/ucsi/ucsi.c
1417
mutex_lock(&ucsi->ppm_lock);
drivers/usb/typec/ucsi/ucsi.c
1419
ret = ucsi->ops->poll_cci(ucsi, &cci);
drivers/usb/typec/ucsi/ucsi.c
1431
ret = ucsi->ops->async_control(ucsi, command);
drivers/usb/typec/ucsi/ucsi.c
1437
ret = ucsi->ops->poll_cci(ucsi, &cci);
drivers/usb/typec/ucsi/ucsi.c
145
ret = ucsi_acknowledge(ucsi, err ? false : conn_ack);
drivers/usb/typec/ucsi/ucsi.c
1451
ret = ucsi->ops->async_control(ucsi, command);
drivers/usb/typec/ucsi/ucsi.c
1466
ret = ucsi->ops->poll_cci(ucsi, &cci);
drivers/usb/typec/ucsi/ucsi.c
1472
ret = ucsi->ops->async_control(ucsi, command);
drivers/usb/typec/ucsi/ucsi.c
1480
mutex_unlock(&ucsi->ppm_lock);
drivers/usb/typec/ucsi/ucsi.c
1488
ret = ucsi_send_command(con->ucsi, command, NULL, 0);
drivers/usb/typec/ucsi/ucsi.c
1493
ucsi_reset_ppm(con->ucsi);
drivers/usb/typec/ucsi/ucsi.c
1495
c = UCSI_SET_NOTIFICATION_ENABLE | con->ucsi->ntfy;
drivers/usb/typec/ucsi/ucsi.c
1496
ucsi_send_command(con->ucsi, c, NULL, 0);
drivers/usb/typec/ucsi/ucsi.c
152
static int ucsi_read_error(struct ucsi *ucsi, u8 connector_num)
drivers/usb/typec/ucsi/ucsi.c
160
ret = ucsi_run_command(ucsi, command, &cci, &error, sizeof(error), false);
drivers/usb/typec/ucsi/ucsi.c
1607
device_for_each_child_node(con->ucsi->dev, fwnode)
drivers/usb/typec/ucsi/ucsi.c
1613
static int ucsi_register_port(struct ucsi *ucsi, struct ucsi_connector *con)
drivers/usb/typec/ucsi/ucsi.c
1622
name = kasprintf(GFP_KERNEL, "%s-con%d", dev_name(ucsi->dev), con->num);
drivers/usb/typec/ucsi/ucsi.c
1635
con->ucsi = ucsi;
drivers/usb/typec/ucsi/ucsi.c
1640
return dev_err_probe(ucsi->dev, PTR_ERR(con->usb_role_sw),
drivers/usb/typec/ucsi/ucsi.c
1649
ret = ucsi_send_command(ucsi, command, &con->cap, sizeof(con->cap));
drivers/usb/typec/ucsi/ucsi.c
1667
cap->revision = ucsi->cap.typec_version;
drivers/usb/typec/ucsi/ucsi.c
1668
cap->pd_revision = ucsi->cap.pd_version;
drivers/usb/typec/ucsi/ucsi.c
1686
cap->no_mode_control = !(con->ucsi->cap.features & UCSI_CAP_ALT_MODE_OVERRIDE);
drivers/usb/typec/ucsi/ucsi.c
1688
if (ucsi->version >= UCSI_VERSION_2_0)
drivers/usb/typec/ucsi/ucsi.c
1691
if (ucsi->ops->update_connector)
drivers/usb/typec/ucsi/ucsi.c
1692
ucsi->ops->update_connector(con);
drivers/usb/typec/ucsi/ucsi.c
1699
con->port = typec_register_port(ucsi->dev, cap);
drivers/usb/typec/ucsi/ucsi.c
1705
if (!(ucsi->quirks & UCSI_DELAY_DEVICE_PDOS))
drivers/usb/typec/ucsi/ucsi.c
1711
dev_err(ucsi->dev, "con%d: failed to register alt modes\n",
drivers/usb/typec/ucsi/ucsi.c
1719
dev_err(ucsi->dev, "con%d: failed to get status\n", con->num);
drivers/usb/typec/ucsi/ucsi.c
172
dev_warn(ucsi->dev, "Dead battery condition!\n");
drivers/usb/typec/ucsi/ucsi.c
1723
if (ucsi->ops->connector_status)
drivers/usb/typec/ucsi/ucsi.c
1724
ucsi->ops->connector_status(con);
drivers/usb/typec/ucsi/ucsi.c
1749
if (con->ucsi->cap.features & UCSI_CAP_GET_PD_MESSAGE)
drivers/usb/typec/ucsi/ucsi.c
1751
if (con->ucsi->cap.features & UCSI_CAP_CABLE_DETAILS)
drivers/usb/typec/ucsi/ucsi.c
1761
dev_err(ucsi->dev, "con:%d: failed to set usb role:%d\n",
drivers/usb/typec/ucsi/ucsi.c
177
dev_err(ucsi->dev, "possible UCSI driver bug %u\n", error);
drivers/usb/typec/ucsi/ucsi.c
1788
static u64 ucsi_get_supported_notifications(struct ucsi *ucsi)
drivers/usb/typec/ucsi/ucsi.c
1790
u16 features = ucsi->cap.features;
drivers/usb/typec/ucsi/ucsi.c
180
dev_warn(ucsi->dev, "Overcurrent condition\n");
drivers/usb/typec/ucsi/ucsi.c
1806
if (ucsi->version <= UCSI_VERSION_1_2)
drivers/usb/typec/ucsi/ucsi.c
183
dev_warn(ucsi->dev, "Partner rejected swap\n");
drivers/usb/typec/ucsi/ucsi.c
1832
static int ucsi_init(struct ucsi *ucsi)
drivers/usb/typec/ucsi/ucsi.c
1841
ret = ucsi_reset_ppm(ucsi);
drivers/usb/typec/ucsi/ucsi.c
1843
dev_err(ucsi->dev, "failed to reset PPM!\n");
drivers/usb/typec/ucsi/ucsi.c
1850
ret = ucsi_send_command(ucsi, command, NULL, 0);
drivers/usb/typec/ucsi/ucsi.c
1856
ret = ucsi_send_command(ucsi, command, &ucsi->cap,
drivers/usb/typec/ucsi/ucsi.c
186
dev_warn(ucsi->dev, "Hard reset occurred\n");
drivers/usb/typec/ucsi/ucsi.c
1861
if (!ucsi->cap.num_connectors) {
drivers/usb/typec/ucsi/ucsi.c
1866
if (ucsi->cap.num_connectors & 0x80) {
drivers/usb/typec/ucsi/ucsi.c
1867
dev_warn(ucsi->dev, "UCSI: Invalid num_connectors %d. Likely buggy FW\n",
drivers/usb/typec/ucsi/ucsi.c
1868
ucsi->cap.num_connectors);
drivers/usb/typec/ucsi/ucsi.c
1869
ucsi->cap.num_connectors &= 0x7f; // clear bit and carry on
drivers/usb/typec/ucsi/ucsi.c
1873
connector = kzalloc_objs(*connector, ucsi->cap.num_connectors + 1);
drivers/usb/typec/ucsi/ucsi.c
1880
for (i = 0; i < ucsi->cap.num_connectors; i++) {
drivers/usb/typec/ucsi/ucsi.c
1882
ret = ucsi_register_port(ucsi, &connector[i]);
drivers/usb/typec/ucsi/ucsi.c
1888
ntfy = ucsi_get_supported_notifications(ucsi);
drivers/usb/typec/ucsi/ucsi.c
189
dev_warn(ucsi->dev, "PPM Policy conflict\n");
drivers/usb/typec/ucsi/ucsi.c
1890
ret = ucsi_send_command(ucsi, command, NULL, 0);
drivers/usb/typec/ucsi/ucsi.c
1894
ucsi->connector = connector;
drivers/usb/typec/ucsi/ucsi.c
1895
ucsi->ntfy = ntfy;
drivers/usb/typec/ucsi/ucsi.c
1897
mutex_lock(&ucsi->ppm_lock);
drivers/usb/typec/ucsi/ucsi.c
1898
ret = ucsi->ops->read_cci(ucsi, &cci);
drivers/usb/typec/ucsi/ucsi.c
1899
mutex_unlock(&ucsi->ppm_lock);
drivers/usb/typec/ucsi/ucsi.c
1903
ucsi_connector_change(ucsi, UCSI_CCI_CONNECTOR(cci));
drivers/usb/typec/ucsi/ucsi.c
192
dev_warn(ucsi->dev, "Swap rejected\n");
drivers/usb/typec/ucsi/ucsi.c
1926
memset(&ucsi->cap, 0, sizeof(ucsi->cap));
drivers/usb/typec/ucsi/ucsi.c
1927
ucsi_reset_ppm(ucsi);
drivers/usb/typec/ucsi/ucsi.c
1934
struct ucsi *ucsi = container_of(work, struct ucsi, resume_work);
drivers/usb/typec/ucsi/ucsi.c
1940
command = UCSI_SET_NOTIFICATION_ENABLE | ucsi->ntfy;
drivers/usb/typec/ucsi/ucsi.c
1941
ret = ucsi_send_command(ucsi, command, NULL, 0);
drivers/usb/typec/ucsi/ucsi.c
1943
dev_err(ucsi->dev, "failed to re-enable notifications (%d)\n", ret);
drivers/usb/typec/ucsi/ucsi.c
1947
for (con = ucsi->connector; con->port; con++) {
drivers/usb/typec/ucsi/ucsi.c
195
dev_warn(ucsi->dev, "Reverse Current Protection detected\n");
drivers/usb/typec/ucsi/ucsi.c
1954
int ucsi_resume(struct ucsi *ucsi)
drivers/usb/typec/ucsi/ucsi.c
1956
if (ucsi->connector)
drivers/usb/typec/ucsi/ucsi.c
1957
queue_work(system_long_wq, &ucsi->resume_work);
drivers/usb/typec/ucsi/ucsi.c
1964
struct ucsi *ucsi = container_of(work, struct ucsi, work.work);
drivers/usb/typec/ucsi/ucsi.c
1967
ret = ucsi_init(ucsi);
drivers/usb/typec/ucsi/ucsi.c
1969
dev_err_probe(ucsi->dev, ret, "PPM init failed\n");
drivers/usb/typec/ucsi/ucsi.c
1972
if (ucsi->work_count++ > UCSI_ROLE_SWITCH_WAIT_COUNT) {
drivers/usb/typec/ucsi/ucsi.c
1973
dev_err(ucsi->dev, "PPM init failed, stop trying\n");
drivers/usb/typec/ucsi/ucsi.c
1977
queue_delayed_work(system_long_wq, &ucsi->work,
drivers/usb/typec/ucsi/ucsi.c
198
dev_warn(ucsi->dev, "Set Sink Path rejected\n");
drivers/usb/typec/ucsi/ucsi.c
1986
void *ucsi_get_drvdata(struct ucsi *ucsi)
drivers/usb/typec/ucsi/ucsi.c
1988
return ucsi->driver_data;
drivers/usb/typec/ucsi/ucsi.c
1997
void ucsi_set_drvdata(struct ucsi *ucsi, void *data)
drivers/usb/typec/ucsi/ucsi.c
1999
ucsi->driver_data = data;
drivers/usb/typec/ucsi/ucsi.c
202
dev_err(ucsi->dev, "unknown error %u\n", error);
drivers/usb/typec/ucsi/ucsi.c
2042
struct ucsi *ucsi_create(struct device *dev, const struct ucsi_operations *ops)
drivers/usb/typec/ucsi/ucsi.c
2044
struct ucsi *ucsi;
drivers/usb/typec/ucsi/ucsi.c
2051
ucsi = kzalloc_obj(*ucsi);
drivers/usb/typec/ucsi/ucsi.c
2052
if (!ucsi)
drivers/usb/typec/ucsi/ucsi.c
2055
INIT_WORK(&ucsi->resume_work, ucsi_resume_work);
drivers/usb/typec/ucsi/ucsi.c
2056
INIT_DELAYED_WORK(&ucsi->work, ucsi_init_work);
drivers/usb/typec/ucsi/ucsi.c
2057
mutex_init(&ucsi->ppm_lock);
drivers/usb/typec/ucsi/ucsi.c
2058
init_completion(&ucsi->complete);
drivers/usb/typec/ucsi/ucsi.c
2059
ucsi->dev = dev;
drivers/usb/typec/ucsi/ucsi.c
2060
ucsi->ops = ops;
drivers/usb/typec/ucsi/ucsi.c
2062
return ucsi;
drivers/usb/typec/ucsi/ucsi.c
2070
void ucsi_destroy(struct ucsi *ucsi)
drivers/usb/typec/ucsi/ucsi.c
2072
ucsi_debugfs_unregister(ucsi);
drivers/usb/typec/ucsi/ucsi.c
2073
kfree(ucsi);
drivers/usb/typec/ucsi/ucsi.c
2081
int ucsi_register(struct ucsi *ucsi)
drivers/usb/typec/ucsi/ucsi.c
2085
ret = ucsi->ops->read_version(ucsi, &ucsi->version);
drivers/usb/typec/ucsi/ucsi.c
2089
if (!ucsi->version)
drivers/usb/typec/ucsi/ucsi.c
209
static int ucsi_send_command_common(struct ucsi *ucsi, u64 cmd,
drivers/usb/typec/ucsi/ucsi.c
2096
dev_dbg(ucsi->dev, "Registered UCSI interface with version %x.%x.%x",
drivers/usb/typec/ucsi/ucsi.c
2097
UCSI_BCD_GET_MAJOR(ucsi->version),
drivers/usb/typec/ucsi/ucsi.c
2098
UCSI_BCD_GET_MINOR(ucsi->version),
drivers/usb/typec/ucsi/ucsi.c
2099
UCSI_BCD_GET_SUBMINOR(ucsi->version));
drivers/usb/typec/ucsi/ucsi.c
2101
queue_delayed_work(system_long_wq, &ucsi->work, 0);
drivers/usb/typec/ucsi/ucsi.c
2103
ucsi_debugfs_register(ucsi);
drivers/usb/typec/ucsi/ucsi.c
2114
void ucsi_unregister(struct ucsi *ucsi)
drivers/usb/typec/ucsi/ucsi.c
2120
cancel_delayed_work_sync(&ucsi->work);
drivers/usb/typec/ucsi/ucsi.c
2121
cancel_work_sync(&ucsi->resume_work);
drivers/usb/typec/ucsi/ucsi.c
2124
ucsi->ops->async_control(ucsi, cmd);
drivers/usb/typec/ucsi/ucsi.c
2126
if (!ucsi->connector)
drivers/usb/typec/ucsi/ucsi.c
2129
for (i = 0; i < ucsi->cap.num_connectors; i++) {
drivers/usb/typec/ucsi/ucsi.c
2130
cancel_work_sync(&ucsi->connector[i].work);
drivers/usb/typec/ucsi/ucsi.c
2132
if (ucsi->connector[i].wq) {
drivers/usb/typec/ucsi/ucsi.c
2135
mutex_lock(&ucsi->connector[i].lock);
drivers/usb/typec/ucsi/ucsi.c
2140
list_for_each_entry(uwork, &ucsi->connector[i].partner_tasks, node)
drivers/usb/typec/ucsi/ucsi.c
2141
mod_delayed_work(ucsi->connector[i].wq, &uwork->work, 0);
drivers/usb/typec/ucsi/ucsi.c
2142
mutex_unlock(&ucsi->connector[i].lock);
drivers/usb/typec/ucsi/ucsi.c
2143
destroy_workqueue(ucsi->connector[i].wq);
drivers/usb/typec/ucsi/ucsi.c
2146
ucsi_unregister_partner(&ucsi->connector[i]);
drivers/usb/typec/ucsi/ucsi.c
2147
ucsi_unregister_altmodes(&ucsi->connector[i],
drivers/usb/typec/ucsi/ucsi.c
2149
ucsi_unregister_port_psy(&ucsi->connector[i]);
drivers/usb/typec/ucsi/ucsi.c
2151
usb_power_delivery_unregister_capabilities(ucsi->connector[i].port_sink_caps);
drivers/usb/typec/ucsi/ucsi.c
2152
ucsi->connector[i].port_sink_caps = NULL;
drivers/usb/typec/ucsi/ucsi.c
2153
usb_power_delivery_unregister_capabilities(ucsi->connector[i].port_source_caps);
drivers/usb/typec/ucsi/ucsi.c
2154
ucsi->connector[i].port_source_caps = NULL;
drivers/usb/typec/ucsi/ucsi.c
2155
usb_power_delivery_unregister(ucsi->connector[i].pd);
drivers/usb/typec/ucsi/ucsi.c
2156
ucsi->connector[i].pd = NULL;
drivers/usb/typec/ucsi/ucsi.c
2157
typec_unregister_port(ucsi->connector[i].port);
drivers/usb/typec/ucsi/ucsi.c
216
if (ucsi->version > UCSI_VERSION_1_2) {
drivers/usb/typec/ucsi/ucsi.c
2160
kfree(ucsi->connector);
drivers/usb/typec/ucsi/ucsi.c
236
mutex_lock(&ucsi->ppm_lock);
drivers/usb/typec/ucsi/ucsi.c
238
ret = ucsi_run_command(ucsi, cmd, &cci, data, size, conn_ack);
drivers/usb/typec/ucsi/ucsi.c
241
ret = ucsi_read_error(ucsi, connector_num);
drivers/usb/typec/ucsi/ucsi.c
243
mutex_unlock(&ucsi->ppm_lock);
drivers/usb/typec/ucsi/ucsi.c
247
int ucsi_send_command(struct ucsi *ucsi, u64 command,
drivers/usb/typec/ucsi/ucsi.c
250
return ucsi_send_command_common(ucsi, command, data, size, false);
drivers/usb/typec/ucsi/ucsi.c
329
ret = ucsi_send_command(con->ucsi, command, &cur, sizeof(cur));
drivers/usb/typec/ucsi/ucsi.c
331
if (con->ucsi->version > 0x0100) {
drivers/usb/typec/ucsi/ucsi.c
332
dev_err(con->ucsi->dev,
drivers/usb/typec/ucsi/ucsi.c
398
override = !!(con->ucsi->cap.features & UCSI_CAP_ALT_MODE_OVERRIDE);
drivers/usb/typec/ucsi/ucsi.c
40
void ucsi_notify_common(struct ucsi *ucsi, u32 cci)
drivers/usb/typec/ucsi/ucsi.c
47
if (UCSI_CCI_CONNECTOR(cci) <= ucsi->cap.num_connectors)
drivers/usb/typec/ucsi/ucsi.c
48
ucsi_connector_change(ucsi, UCSI_CCI_CONNECTOR(cci));
drivers/usb/typec/ucsi/ucsi.c
492
dev_err(con->ucsi->dev, "failed to registers svid 0x%04x mode %d\n",
drivers/usb/typec/ucsi/ucsi.c
50
dev_err(ucsi->dev, "bogus connector number in CCI: %lu\n",
drivers/usb/typec/ucsi/ucsi.c
506
struct ucsi *ucsi = con->ucsi;
drivers/usb/typec/ucsi/ucsi.c
515
max_altmodes = con->ucsi->cap.num_alt_modes;
drivers/usb/typec/ucsi/ucsi.c
527
len = ucsi_send_command(con->ucsi, command, &alt, sizeof(alt));
drivers/usb/typec/ucsi/ucsi.c
548
multi_dp = ucsi->ops->update_altmodes(ucsi, recipient, orig, updated);
drivers/usb/typec/ucsi/ucsi.c
55
test_and_clear_bit(ACK_PENDING, &ucsi->flags))
drivers/usb/typec/ucsi/ucsi.c
56
complete(&ucsi->complete);
drivers/usb/typec/ucsi/ucsi.c
585
if (!(con->ucsi->cap.features & UCSI_CAP_ALT_MODE_DETAILS))
drivers/usb/typec/ucsi/ucsi.c
59
test_and_clear_bit(COMMAND_PENDING, &ucsi->flags))
drivers/usb/typec/ucsi/ucsi.c
591
if (con->ucsi->ops->update_altmodes)
drivers/usb/typec/ucsi/ucsi.c
595
max_altmodes = con->ucsi->cap.num_alt_modes;
drivers/usb/typec/ucsi/ucsi.c
60
complete(&ucsi->complete);
drivers/usb/typec/ucsi/ucsi.c
603
len = ucsi_send_command(con->ucsi, command, alt, sizeof(alt));
drivers/usb/typec/ucsi/ucsi.c
626
desc.mode_selection = con->ucsi->ops->add_partner_altmodes &&
drivers/usb/typec/ucsi/ucsi.c
64
int ucsi_sync_control_common(struct ucsi *ucsi, u64 command, u32 *cci,
drivers/usb/typec/ucsi/ucsi.c
678
UCSI_MAX_DATA_LENGTH(con->ucsi));
drivers/usb/typec/ucsi/ucsi.c
681
ret = ucsi_send_command_common(con->ucsi, command, &con->status, size, conn_ack);
drivers/usb/typec/ucsi/ucsi.c
690
struct ucsi *ucsi = con->ucsi;
drivers/usb/typec/ucsi/ucsi.c
695
ucsi->quirks & UCSI_NO_PARTNER_PDOS &&
drivers/usb/typec/ucsi/ucsi.c
704
ret = ucsi_send_command(ucsi, command, pdos + offset,
drivers/usb/typec/ucsi/ucsi.c
707
dev_err(ucsi->dev, "UCSI_GET_PDOS failed (%d)\n", ret);
drivers/usb/typec/ucsi/ucsi.c
71
set_bit(ACK_PENDING, &ucsi->flags);
drivers/usb/typec/ucsi/ucsi.c
715
struct ucsi *ucsi = con->ucsi;
drivers/usb/typec/ucsi/ucsi.c
719
if (!(ucsi->cap.features & UCSI_CAP_PDO_DETAILS))
drivers/usb/typec/ucsi/ucsi.c
73
set_bit(COMMAND_PENDING, &ucsi->flags);
drivers/usb/typec/ucsi/ucsi.c
75
reinit_completion(&ucsi->complete);
drivers/usb/typec/ucsi/ucsi.c
77
ret = ucsi->ops->async_control(ucsi, command);
drivers/usb/typec/ucsi/ucsi.c
778
size_t len = min(bytes, UCSI_MAX_DATA_LENGTH(con->ucsi));
drivers/usb/typec/ucsi/ucsi.c
792
ret = ucsi_send_command(con->ucsi, command, data + offset, len);
drivers/usb/typec/ucsi/ucsi.c
81
if (!wait_for_completion_timeout(&ucsi->complete, 5 * HZ))
drivers/usb/typec/ucsi/ucsi.c
815
dev_err(con->ucsi->dev, "Failed to set partner identity (%d)\n", ret);
drivers/usb/typec/ucsi/ucsi.c
834
dev_err(con->ucsi->dev, "Failed to set cable identity (%d)\n", ret);
drivers/usb/typec/ucsi/ucsi.c
845
dev_err(con->ucsi->dev,
drivers/usb/typec/ucsi/ucsi.c
853
if (con->ucsi->ops->add_partner_altmodes)
drivers/usb/typec/ucsi/ucsi.c
854
con->ucsi->ops->add_partner_altmodes(con);
drivers/usb/typec/ucsi/ucsi.c
86
clear_bit(ACK_PENDING, &ucsi->flags);
drivers/usb/typec/ucsi/ucsi.c
866
struct ucsi *ucsi = con->ucsi;
drivers/usb/typec/ucsi/ucsi.c
867
struct usb_power_delivery_desc desc = { ucsi->cap.pd_version };
drivers/usb/typec/ucsi/ucsi.c
873
con->pd = usb_power_delivery_register(ucsi->dev, &desc);
drivers/usb/typec/ucsi/ucsi.c
88
clear_bit(COMMAND_PENDING, &ucsi->flags);
drivers/usb/typec/ucsi/ucsi.c
888
struct usb_power_delivery_desc desc = { con->ucsi->cap.pd_version };
drivers/usb/typec/ucsi/ucsi.c
91
ret = ucsi->ops->read_cci(ucsi, cci);
drivers/usb/typec/ucsi/ucsi.c
930
dev_err(con->ucsi->dev,
drivers/usb/typec/ucsi/ucsi.c
95
ret = ucsi->ops->read_message_in(ucsi, data, size);
drivers/usb/typec/ucsi/ucsi.c
959
ret = ucsi_send_command(con->ucsi, command, &cable_prop, sizeof(cable_prop));
drivers/usb/typec/ucsi/ucsi.c
961
dev_err(con->ucsi->dev, "GET_CABLE_PROPERTY failed (%d)\n", ret);
drivers/usb/typec/ucsi/ucsi.c
980
if (con->ucsi->cap.features & UCSI_CAP_GET_PD_MESSAGE)
drivers/usb/typec/ucsi/ucsi.c
984
if (con->ucsi->version >= UCSI_VERSION_2_1)
drivers/usb/typec/ucsi/ucsi.c
989
dev_err(con->ucsi->dev,
drivers/usb/typec/ucsi/ucsi.h
100
void ucsi_unregister(struct ucsi *ucsi);
drivers/usb/typec/ucsi/ucsi.h
101
void *ucsi_get_drvdata(struct ucsi *ucsi);
drivers/usb/typec/ucsi/ucsi.h
102
void ucsi_set_drvdata(struct ucsi *ucsi, void *data);
drivers/usb/typec/ucsi/ucsi.h
106
void ucsi_connector_change(struct ucsi *ucsi, u8 num);
drivers/usb/typec/ucsi/ucsi.h
19
struct ucsi;
drivers/usb/typec/ucsi/ucsi.h
333
((_con_)->ucsi->version >= UCSI_VERSION_2_0 && \
drivers/usb/typec/ucsi/ucsi.h
449
ucsi_bitfield_read((_con_)->cap, UCSI_CONCAP_##_field_, (_con_)->ucsi->version)
drivers/usb/typec/ucsi/ucsi.h
452
ucsi_bitfield_read((_con_)->status, UCSI_CONSTAT_##_field_, (_con_)->ucsi->version)
drivers/usb/typec/ucsi/ucsi.h
515
struct ucsi *ucsi;
drivers/usb/typec/ucsi/ucsi.h
562
int ucsi_send_command(struct ucsi *ucsi, u64 command,
drivers/usb/typec/ucsi/ucsi.h
566
int ucsi_resume(struct ucsi *ucsi);
drivers/usb/typec/ucsi/ucsi.h
568
void ucsi_notify_common(struct ucsi *ucsi, u32 cci);
drivers/usb/typec/ucsi/ucsi.h
569
int ucsi_sync_control_common(struct ucsi *ucsi, u64 command, u32 *cci,
drivers/usb/typec/ucsi/ucsi.h
626
void ucsi_debugfs_register(struct ucsi *ucsi);
drivers/usb/typec/ucsi/ucsi.h
627
void ucsi_debugfs_unregister(struct ucsi *ucsi);
drivers/usb/typec/ucsi/ucsi.h
631
static inline void ucsi_debugfs_register(struct ucsi *ucsi) { }
drivers/usb/typec/ucsi/ucsi.h
632
static inline void ucsi_debugfs_unregister(struct ucsi *ucsi) { }
drivers/usb/typec/ucsi/ucsi.h
81
int (*read_version)(struct ucsi *ucsi, u16 *version);
drivers/usb/typec/ucsi/ucsi.h
82
int (*read_cci)(struct ucsi *ucsi, u32 *cci);
drivers/usb/typec/ucsi/ucsi.h
83
int (*poll_cci)(struct ucsi *ucsi, u32 *cci);
drivers/usb/typec/ucsi/ucsi.h
84
int (*read_message_in)(struct ucsi *ucsi, void *val, size_t val_len);
drivers/usb/typec/ucsi/ucsi.h
85
int (*sync_control)(struct ucsi *ucsi, u64 command, u32 *cci,
drivers/usb/typec/ucsi/ucsi.h
87
int (*async_control)(struct ucsi *ucsi, u64 command);
drivers/usb/typec/ucsi/ucsi.h
88
bool (*update_altmodes)(struct ucsi *ucsi, u8 recipient,
drivers/usb/typec/ucsi/ucsi.h
97
struct ucsi *ucsi_create(struct device *dev, const struct ucsi_operations *ops);
drivers/usb/typec/ucsi/ucsi.h
98
void ucsi_destroy(struct ucsi *ucsi);
drivers/usb/typec/ucsi/ucsi.h
99
int ucsi_register(struct ucsi *ucsi);
drivers/usb/typec/ucsi/ucsi_acpi.c
108
static int ucsi_gram_sync_control(struct ucsi *ucsi, u64 command, u32 *cci,
drivers/usb/typec/ucsi/ucsi_acpi.c
113
struct ucsi_acpi *ua = ucsi_get_drvdata(ucsi);
drivers/usb/typec/ucsi/ucsi_acpi.c
116
ret = ucsi_sync_control_common(ucsi, command, cci, val, len);
drivers/usb/typec/ucsi/ucsi_acpi.c
164
ret = ua->ucsi->ops->read_cci(ua->ucsi, &cci);
drivers/usb/typec/ucsi/ucsi_acpi.c
168
ucsi_notify_common(ua->ucsi, cci);
drivers/usb/typec/ucsi/ucsi_acpi.c
208
ua->ucsi = ucsi_create(&pdev->dev, ops);
drivers/usb/typec/ucsi/ucsi_acpi.c
209
if (IS_ERR(ua->ucsi))
drivers/usb/typec/ucsi/ucsi_acpi.c
210
return PTR_ERR(ua->ucsi);
drivers/usb/typec/ucsi/ucsi_acpi.c
212
ucsi_set_drvdata(ua->ucsi, ua);
drivers/usb/typec/ucsi/ucsi_acpi.c
219
ucsi_destroy(ua->ucsi);
drivers/usb/typec/ucsi/ucsi_acpi.c
22
struct ucsi *ucsi;
drivers/usb/typec/ucsi/ucsi_acpi.c
223
ret = ucsi_register(ua->ucsi);
drivers/usb/typec/ucsi/ucsi_acpi.c
228
ucsi_destroy(ua->ucsi);
drivers/usb/typec/ucsi/ucsi_acpi.c
241
ucsi_unregister(ua->ucsi);
drivers/usb/typec/ucsi/ucsi_acpi.c
242
ucsi_destroy(ua->ucsi);
drivers/usb/typec/ucsi/ucsi_acpi.c
252
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_async_control(struct ucsi *ucsi, u64 command)
drivers/usb/typec/ucsi/ucsi_acpi.c
91
struct ucsi_acpi *ua = ucsi_get_drvdata(ucsi);
drivers/usb/typec/ucsi/ucsi_ccg.c
1353
status = ucsi_register(uc->ucsi);
drivers/usb/typec/ucsi/ucsi_ccg.c
1374
ucsi_unregister(uc->ucsi);
drivers/usb/typec/ucsi/ucsi_ccg.c
1473
uc->ucsi = ucsi_create(dev, &ucsi_ccg_ops);
drivers/usb/typec/ucsi/ucsi_ccg.c
1474
if (IS_ERR(uc->ucsi))
drivers/usb/typec/ucsi/ucsi_ccg.c
1475
return PTR_ERR(uc->ucsi);
drivers/usb/typec/ucsi/ucsi_ccg.c
1477
ucsi_set_drvdata(uc->ucsi, uc);
drivers/usb/typec/ucsi/ucsi_ccg.c
1485
status = ucsi_register(uc->ucsi);
drivers/usb/typec/ucsi/ucsi_ccg.c
1504
ucsi_destroy(uc->ucsi);
drivers/usb/typec/ucsi/ucsi_ccg.c
1516
ucsi_unregister(uc->ucsi);
drivers/usb/typec/ucsi/ucsi_ccg.c
1517
ucsi_destroy(uc->ucsi);
drivers/usb/typec/ucsi/ucsi_ccg.c
1544
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
613
struct ucsi_ccg *uc = ucsi_get_drvdata(ucsi);
drivers/usb/typec/ucsi/ucsi_ccg.c
629
con = &uc->ucsi->connector[con_index - 1];
drivers/usb/typec/ucsi/ucsi_ccg.c
633
ret = ucsi_sync_control_common(ucsi, command, cci, data, size);
drivers/usb/typec/ucsi/ucsi_ccg.c
709
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
388
struct pmic_glink_ucsi *ucsi;
drivers/usb/typec/ucsi/ucsi_glink.c
393
ucsi = devm_kzalloc(dev, sizeof(*ucsi), GFP_KERNEL);
drivers/usb/typec/ucsi/ucsi_glink.c
394
if (!ucsi)
drivers/usb/typec/ucsi/ucsi_glink.c
397
ucsi->dev = dev;
drivers/usb/typec/ucsi/ucsi_glink.c
398
dev_set_drvdata(dev, ucsi);
drivers/usb/typec/ucsi/ucsi_glink.c
400
INIT_WORK(&ucsi->notify_work, pmic_glink_ucsi_notify);
drivers/usb/typec/ucsi/ucsi_glink.c
401
INIT_WORK(&ucsi->register_work, pmic_glink_ucsi_register);
drivers/usb/typec/ucsi/ucsi_glink.c
402
init_completion(&ucsi->read_ack);
drivers/usb/typec/ucsi/ucsi_glink.c
403
init_completion(&ucsi->write_ack);
drivers/usb/typec/ucsi/ucsi_glink.c
404
spin_lock_init(&ucsi->state_lock);
drivers/usb/typec/ucsi/ucsi_glink.c
405
mutex_init(&ucsi->lock);
drivers/usb/typec/ucsi/ucsi_glink.c
407
ucsi->ucsi = ucsi_create(dev, &pmic_glink_ucsi_ops);
drivers/usb/typec/ucsi/ucsi_glink.c
408
if (IS_ERR(ucsi->ucsi))
drivers/usb/typec/ucsi/ucsi_glink.c
409
return PTR_ERR(ucsi->ucsi);
drivers/usb/typec/ucsi/ucsi_glink.c
412
ret = devm_add_action_or_reset(dev, pmic_glink_ucsi_destroy, ucsi);
drivers/usb/typec/ucsi/ucsi_glink.c
418
ucsi->ucsi->quirks = *(unsigned long *)match->data;
drivers/usb/typec/ucsi/ucsi_glink.c
420
ucsi_set_drvdata(ucsi->ucsi, ucsi);
drivers/usb/typec/ucsi/ucsi_glink.c
447
ucsi->port_orientation[port] = desc;
drivers/usb/typec/ucsi/ucsi_glink.c
450
ucsi->client = devm_pmic_glink_client_alloc(dev, PMIC_GLINK_OWNER_USBC,
drivers/usb/typec/ucsi/ucsi_glink.c
453
ucsi);
drivers/usb/typec/ucsi/ucsi_glink.c
454
if (IS_ERR(ucsi->client))
drivers/usb/typec/ucsi/ucsi_glink.c
455
return PTR_ERR(ucsi->client);
drivers/usb/typec/ucsi/ucsi_glink.c
457
pmic_glink_client_register(ucsi->client);
drivers/usb/typec/ucsi/ucsi_glink.c
464
struct pmic_glink_ucsi *ucsi = dev_get_drvdata(&adev->dev);
drivers/usb/typec/ucsi/ucsi_glink.c
467
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
108
static int gaokun_ucsi_read_version(struct ucsi *ucsi, u16 *version)
drivers/usb/typec/ucsi/ucsi_huawei_gaokun.c
110
struct gaokun_ucsi *uec = ucsi_get_drvdata(ucsi);
drivers/usb/typec/ucsi/ucsi_huawei_gaokun.c
117
static int gaokun_ucsi_read_cci(struct ucsi *ucsi, u32 *cci)
drivers/usb/typec/ucsi/ucsi_huawei_gaokun.c
119
struct gaokun_ucsi *uec = ucsi_get_drvdata(ucsi);
drivers/usb/typec/ucsi/ucsi_huawei_gaokun.c
132
static int gaokun_ucsi_read_message_in(struct ucsi *ucsi,
drivers/usb/typec/ucsi/ucsi_huawei_gaokun.c
135
struct gaokun_ucsi *uec = ucsi_get_drvdata(ucsi);
drivers/usb/typec/ucsi/ucsi_huawei_gaokun.c
149
static int gaokun_ucsi_async_control(struct ucsi *ucsi, u64 command)
drivers/usb/typec/ucsi/ucsi_huawei_gaokun.c
151
struct gaokun_ucsi *uec = ucsi_get_drvdata(ucsi);
drivers/usb/typec/ucsi/ucsi_huawei_gaokun.c
161
struct gaokun_ucsi *uec = ucsi_get_drvdata(con->ucsi);
drivers/usb/typec/ucsi/ucsi_huawei_gaokun.c
184
struct gaokun_ucsi *uec = ucsi_get_drvdata(con->ucsi);
drivers/usb/typec/ucsi/ucsi_huawei_gaokun.c
213
struct gaokun_ucsi *uec = port->ucsi;
drivers/usb/typec/ucsi/ucsi_huawei_gaokun.c
292
struct gaokun_ucsi *uec = port->ucsi;
drivers/usb/typec/ucsi/ucsi_huawei_gaokun.c
295
if (idx >= uec->ucsi->cap.num_connectors) {
drivers/usb/typec/ucsi/ucsi_huawei_gaokun.c
314
if (!uec->ucsi->connector) { /* slow to register */
drivers/usb/typec/ucsi/ucsi_huawei_gaokun.c
373
ret = gaokun_ucsi_read_cci(uec->ucsi, &cci);
drivers/usb/typec/ucsi/ucsi_huawei_gaokun.c
377
ucsi_notify_common(uec->ucsi, cci);
drivers/usb/typec/ucsi/ucsi_huawei_gaokun.c
408
ucsi_port->ucsi = uec;
drivers/usb/typec/ucsi/ucsi_huawei_gaokun.c
449
struct ucsi *ucsi;
drivers/usb/typec/ucsi/ucsi_huawei_gaokun.c
453
ucsi = uec->ucsi;
drivers/usb/typec/ucsi/ucsi_huawei_gaokun.c
457
dev_err_probe(ucsi->dev, ret, "notifier register failed\n");
drivers/usb/typec/ucsi/ucsi_huawei_gaokun.c
461
ret = ucsi_register(ucsi);
drivers/usb/typec/ucsi/ucsi_huawei_gaokun.c
463
dev_err_probe(ucsi->dev, ret, "ucsi register failed\n");
drivers/usb/typec/ucsi/ucsi_huawei_gaokun.c
489
uec->ucsi = ucsi_create(dev, &gaokun_ucsi_ops);
drivers/usb/typec/ucsi/ucsi_huawei_gaokun.c
490
if (IS_ERR(uec->ucsi))
drivers/usb/typec/ucsi/ucsi_huawei_gaokun.c
491
return PTR_ERR(uec->ucsi);
drivers/usb/typec/ucsi/ucsi_huawei_gaokun.c
493
ucsi_set_drvdata(uec->ucsi, uec);
drivers/usb/typec/ucsi/ucsi_huawei_gaokun.c
508
ucsi_unregister(uec->ucsi);
drivers/usb/typec/ucsi/ucsi_huawei_gaokun.c
509
ucsi_destroy(uec->ucsi);
drivers/usb/typec/ucsi/ucsi_huawei_gaokun.c
82
struct gaokun_ucsi *ucsi;
drivers/usb/typec/ucsi/ucsi_huawei_gaokun.c
96
struct 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
109
dev_dbg(ucsi->dev, "faking DP altmode for con1\n");
drivers/usb/typec/ucsi/ucsi_yoga_c630.c
123
dev_dbg(ucsi->dev, "ignoring altmodes for con2\n");
drivers/usb/typec/ucsi/ucsi_yoga_c630.c
129
ret = ucsi_sync_control_common(ucsi, command, cci, data, size);
drivers/usb/typec/ucsi/ucsi_yoga_c630.c
140
static bool yoga_c630_ucsi_update_altmodes(struct ucsi *ucsi,
drivers/usb/typec/ucsi/ucsi_yoga_c630.c
153
dev_dbg(ucsi->dev, "Found duplicate altmodes, starting from %d\n", i);
drivers/usb/typec/ucsi/ucsi_yoga_c630.c
192
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
196
if (uec->ucsi->connector && uec->ucsi->connector[0].port)
drivers/usb/typec/ucsi/ucsi_yoga_c630.c
197
typec_set_orientation(uec->ucsi->connector[0].port,
drivers/usb/typec/ucsi/ucsi_yoga_c630.c
221
ucsi_connector_change(uec->ucsi, 1);
drivers/usb/typec/ucsi/ucsi_yoga_c630.c
225
ret = uec->ucsi->ops->read_cci(uec->ucsi, &cci);
drivers/usb/typec/ucsi/ucsi_yoga_c630.c
229
ucsi_notify_common(uec->ucsi, cci);
drivers/usb/typec/ucsi/ucsi_yoga_c630.c
270
uec->ucsi = ucsi_create(&adev->dev, &yoga_c630_ucsi_ops);
drivers/usb/typec/ucsi/ucsi_yoga_c630.c
271
if (IS_ERR(uec->ucsi))
drivers/usb/typec/ucsi/ucsi_yoga_c630.c
272
return PTR_ERR(uec->ucsi);
drivers/usb/typec/ucsi/ucsi_yoga_c630.c
274
ucsi_set_drvdata(uec->ucsi, uec);
drivers/usb/typec/ucsi/ucsi_yoga_c630.c
284
ret = ucsi_register(uec->ucsi);
drivers/usb/typec/ucsi/ucsi_yoga_c630.c
297
ucsi_unregister(uec->ucsi);
drivers/usb/typec/ucsi/ucsi_yoga_c630.c
303
ucsi_destroy(uec->ucsi);
drivers/usb/typec/ucsi/ucsi_yoga_c630.c
312
ucsi_unregister(uec->ucsi);
drivers/usb/typec/ucsi/ucsi_yoga_c630.c
314
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,