Symbol: wusb3801
drivers/usb/typec/wusb3801.c
101
switch (wusb3801->port_type) {
drivers/usb/typec/wusb3801.c
108
if (wusb3801->cap.prefer_role == TYPEC_SOURCE)
drivers/usb/typec/wusb3801.c
183
struct wusb3801 *wusb3801 = typec_get_drvdata(port);
drivers/usb/typec/wusb3801.c
185
return regmap_update_bits(wusb3801->regmap, WUSB3801_REG_CTRL0,
drivers/usb/typec/wusb3801.c
193
struct wusb3801 *wusb3801 = typec_get_drvdata(port);
drivers/usb/typec/wusb3801.c
196
ret = regmap_update_bits(wusb3801->regmap, WUSB3801_REG_CTRL0,
drivers/usb/typec/wusb3801.c
202
wusb3801->port_type = type;
drivers/usb/typec/wusb3801.c
212
static int wusb3801_hw_init(struct wusb3801 *wusb3801)
drivers/usb/typec/wusb3801.c
214
return regmap_write(wusb3801->regmap, WUSB3801_REG_CTRL0,
drivers/usb/typec/wusb3801.c
215
wusb3801_map_try_role(wusb3801->cap.prefer_role) |
drivers/usb/typec/wusb3801.c
216
wusb3801_map_pwr_opmode(wusb3801->pwr_opmode) |
drivers/usb/typec/wusb3801.c
217
wusb3801_map_port_type(wusb3801->port_type));
drivers/usb/typec/wusb3801.c
220
static void wusb3801_hw_update(struct wusb3801 *wusb3801)
drivers/usb/typec/wusb3801.c
222
struct typec_port *port = wusb3801->port;
drivers/usb/typec/wusb3801.c
223
struct device *dev = wusb3801->dev;
drivers/usb/typec/wusb3801.c
227
ret = regmap_read(wusb3801->regmap, WUSB3801_REG_STAT, &status);
drivers/usb/typec/wusb3801.c
237
if (!wusb3801->vbus_on) {
drivers/usb/typec/wusb3801.c
238
ret = regulator_enable(wusb3801->vbus_supply);
drivers/usb/typec/wusb3801.c
241
wusb3801->vbus_on = true;
drivers/usb/typec/wusb3801.c
244
if (wusb3801->vbus_on) {
drivers/usb/typec/wusb3801.c
245
regulator_disable(wusb3801->vbus_supply);
drivers/usb/typec/wusb3801.c
246
wusb3801->vbus_on = false;
drivers/usb/typec/wusb3801.c
250
if (partner_type != wusb3801->partner_type) {
drivers/usb/typec/wusb3801.c
253
enum typec_role pwr_role = wusb3801_get_default_role(wusb3801);
drivers/usb/typec/wusb3801.c
272
if (wusb3801->partner) {
drivers/usb/typec/wusb3801.c
273
typec_unregister_partner(wusb3801->partner);
drivers/usb/typec/wusb3801.c
274
wusb3801->partner = NULL;
drivers/usb/typec/wusb3801.c
278
wusb3801->partner = typec_register_partner(port, &desc);
drivers/usb/typec/wusb3801.c
279
if (IS_ERR(wusb3801->partner))
drivers/usb/typec/wusb3801.c
281
PTR_ERR(wusb3801->partner));
drivers/usb/typec/wusb3801.c
290
typec_set_pwr_opmode(wusb3801->port,
drivers/usb/typec/wusb3801.c
293
: wusb3801->pwr_opmode);
drivers/usb/typec/wusb3801.c
294
typec_set_orientation(wusb3801->port,
drivers/usb/typec/wusb3801.c
297
wusb3801->partner_type = partner_type;
drivers/usb/typec/wusb3801.c
302
struct wusb3801 *wusb3801 = data;
drivers/usb/typec/wusb3801.c
309
regmap_read(wusb3801->regmap, WUSB3801_REG_INT, &dummy);
drivers/usb/typec/wusb3801.c
311
wusb3801_hw_update(wusb3801);
drivers/usb/typec/wusb3801.c
326
struct wusb3801 *wusb3801;
drivers/usb/typec/wusb3801.c
330
wusb3801 = devm_kzalloc(dev, sizeof(*wusb3801), GFP_KERNEL);
drivers/usb/typec/wusb3801.c
331
if (!wusb3801)
drivers/usb/typec/wusb3801.c
334
i2c_set_clientdata(client, wusb3801);
drivers/usb/typec/wusb3801.c
336
wusb3801->dev = dev;
drivers/usb/typec/wusb3801.c
338
wusb3801->regmap = devm_regmap_init_i2c(client, &config);
drivers/usb/typec/wusb3801.c
339
if (IS_ERR(wusb3801->regmap))
drivers/usb/typec/wusb3801.c
340
return PTR_ERR(wusb3801->regmap);
drivers/usb/typec/wusb3801.c
342
wusb3801->vbus_supply = devm_regulator_get(dev, "vbus");
drivers/usb/typec/wusb3801.c
343
if (IS_ERR(wusb3801->vbus_supply))
drivers/usb/typec/wusb3801.c
344
return PTR_ERR(wusb3801->vbus_supply);
drivers/usb/typec/wusb3801.c
350
ret = typec_get_fw_cap(&wusb3801->cap, connector);
drivers/usb/typec/wusb3801.c
353
wusb3801->port_type = wusb3801->cap.type;
drivers/usb/typec/wusb3801.c
362
wusb3801->pwr_opmode = ret;
drivers/usb/typec/wusb3801.c
365
ret = wusb3801_hw_init(wusb3801);
drivers/usb/typec/wusb3801.c
369
wusb3801->cap.revision = USB_TYPEC_REV_1_2;
drivers/usb/typec/wusb3801.c
370
wusb3801->cap.accessory[0] = TYPEC_ACCESSORY_AUDIO;
drivers/usb/typec/wusb3801.c
371
wusb3801->cap.accessory[1] = TYPEC_ACCESSORY_DEBUG;
drivers/usb/typec/wusb3801.c
372
wusb3801->cap.orientation_aware = true;
drivers/usb/typec/wusb3801.c
373
wusb3801->cap.driver_data = wusb3801;
drivers/usb/typec/wusb3801.c
374
wusb3801->cap.ops = &wusb3801_typec_ops;
drivers/usb/typec/wusb3801.c
376
wusb3801->port = typec_register_port(dev, &wusb3801->cap);
drivers/usb/typec/wusb3801.c
377
if (IS_ERR(wusb3801->port)) {
drivers/usb/typec/wusb3801.c
378
ret = PTR_ERR(wusb3801->port);
drivers/usb/typec/wusb3801.c
383
wusb3801_hw_update(wusb3801);
drivers/usb/typec/wusb3801.c
386
IRQF_ONESHOT, dev_name(dev), wusb3801);
drivers/usb/typec/wusb3801.c
395
typec_unregister_port(wusb3801->port);
drivers/usb/typec/wusb3801.c
404
struct wusb3801 *wusb3801 = i2c_get_clientdata(client);
drivers/usb/typec/wusb3801.c
406
free_irq(client->irq, wusb3801);
drivers/usb/typec/wusb3801.c
408
if (wusb3801->partner)
drivers/usb/typec/wusb3801.c
409
typec_unregister_partner(wusb3801->partner);
drivers/usb/typec/wusb3801.c
410
typec_unregister_port(wusb3801->port);
drivers/usb/typec/wusb3801.c
412
if (wusb3801->vbus_on)
drivers/usb/typec/wusb3801.c
413
regulator_disable(wusb3801->vbus_supply);
drivers/usb/typec/wusb3801.c
99
static enum typec_role wusb3801_get_default_role(struct wusb3801 *wusb3801)