Lines Matching defs:usbss

240 static int wcd939x_usbss_set(struct wcd939x_usbss *usbss)
242 bool reverse = (usbss->orientation == TYPEC_ORIENTATION_REVERSE);
249 if (usbss->mode < TYPEC_STATE_MODAL ||
250 (!usbss->svid && (usbss->mode == TYPEC_MODE_USB2 ||
251 usbss->mode == TYPEC_MODE_USB3))) {
253 } else if (usbss->svid) {
254 switch (usbss->mode) {
271 } else if (usbss->mode == TYPEC_MODE_AUDIO) {
278 ret = regmap_clear_bits(usbss->regmap, WCD_USBSS_SWITCH_SETTINGS_ENABLE,
290 ret = regmap_clear_bits(usbss->regmap, WCD_USBSS_SWITCH_SELECT0,
300 ret = regmap_clear_bits(usbss->regmap, WCD_USBSS_SWITCH_SELECT1,
306 ret = regmap_set_bits(usbss->regmap, WCD_USBSS_MG1_BIAS,
312 ret = regmap_set_bits(usbss->regmap, WCD_USBSS_MG2_BIAS,
318 ret = regmap_clear_bits(usbss->regmap, WCD_USBSS_EQUALIZER1,
324 ret = regmap_write_bits(usbss->regmap, WCD_USBSS_AUDIO_FSM_START,
353 ret = regmap_update_bits(usbss->regmap, WCD_USBSS_USB_SS_CNTL,
361 ret = regmap_update_bits(usbss->regmap, WCD_USBSS_SWITCH_SELECT0,
373 ret = regmap_update_bits(usbss->regmap, WCD_USBSS_SWITCH_SELECT0,
378 ret = regmap_update_bits(usbss->regmap, WCD_USBSS_SWITCH_SELECT0,
386 ret = regmap_clear_bits(usbss->regmap, WCD_USBSS_MG1_BIAS,
390 ret = regmap_clear_bits(usbss->regmap, WCD_USBSS_MG2_BIAS,
396 ret = regmap_set_bits(usbss->regmap, WCD_USBSS_SWITCH_SETTINGS_ENABLE,
404 ret = regmap_clear_bits(usbss->regmap, WCD_USBSS_SWITCH_SELECT1,
408 ret = regmap_set_bits(usbss->regmap, WCD_USBSS_SWITCH_SELECT1,
414 ret = regmap_set_bits(usbss->regmap, WCD_USBSS_SWITCH_SETTINGS_ENABLE,
420 ret = regmap_set_bits(usbss->regmap, WCD_USBSS_SWITCH_SETTINGS_ENABLE,
427 ret = regmap_write(usbss->regmap, WCD_USBSS_DELAY_L_SW, 0x02);
431 ret = regmap_write(usbss->regmap, WCD_USBSS_DELAY_R_SW, 0x02);
435 ret = regmap_write(usbss->regmap, WCD_USBSS_DELAY_MIC_SW, 0x01);
440 ret = regmap_write_bits(usbss->regmap, WCD_USBSS_AUDIO_FSM_START,
448 regmap_update_bits(usbss->regmap,
456 ret = regmap_update_bits(usbss->regmap, WCD_USBSS_USB_SS_CNTL,
466 if (usbss->mode != TYPEC_STATE_SAFE) {
467 ret = regmap_set_bits(usbss->regmap, WCD_USBSS_EQUALIZER1,
474 ret = regmap_update_bits(usbss->regmap, WCD_USBSS_SWITCH_SELECT0,
485 ret = regmap_set_bits(usbss->regmap, WCD_USBSS_SWITCH_SETTINGS_ENABLE,
495 ret = regmap_update_bits(usbss->regmap, WCD_USBSS_DISP_AUXP_CTL,
502 ret = regmap_set_bits(usbss->regmap, WCD_USBSS_DISP_AUXP_THRESH,
509 ret = regmap_update_bits(usbss->regmap, WCD_USBSS_SWITCH_SELECT0,
515 ret = regmap_update_bits(usbss->regmap, WCD_USBSS_SWITCH_SELECT0,
523 ret = regmap_set_bits(usbss->regmap, WCD_USBSS_SWITCH_SETTINGS_ENABLE,
537 struct wcd939x_usbss *usbss = typec_switch_get_drvdata(sw);
540 mutex_lock(&usbss->lock);
542 if (usbss->orientation != orientation) {
543 usbss->orientation = orientation;
545 ret = wcd939x_usbss_set(usbss);
548 mutex_unlock(&usbss->lock);
554 return typec_switch_set(usbss->codec_switch, orientation);
560 struct wcd939x_usbss *usbss = typec_mux_get_drvdata(mux);
563 mutex_lock(&usbss->lock);
565 if (usbss->mode != state->mode) {
566 usbss->mode = state->mode;
569 usbss->svid = state->alt->svid;
571 usbss->svid = 0; // No SVID
573 ret = wcd939x_usbss_set(usbss);
576 mutex_unlock(&usbss->lock);
582 return typec_mux_set(usbss->codec, state);
590 struct wcd939x_usbss *usbss;
593 usbss = devm_kzalloc(dev, sizeof(*usbss), GFP_KERNEL);
594 if (!usbss)
597 usbss->client = client;
598 mutex_init(&usbss->lock);
600 usbss->regmap = devm_regmap_init_i2c(client, &wcd939x_usbss_regmap_config);
601 if (IS_ERR(usbss->regmap))
602 return dev_err_probe(dev, PTR_ERR(usbss->regmap), "failed to initialize regmap\n");
604 usbss->reset_gpio = devm_gpiod_get_optional(dev, "reset", GPIOD_OUT_LOW);
605 if (IS_ERR(usbss->reset_gpio))
606 return dev_err_probe(dev, PTR_ERR(usbss->reset_gpio),
609 usbss->vdd_supply = devm_regulator_get_optional(dev, "vdd");
610 if (IS_ERR(usbss->vdd_supply))
611 return PTR_ERR(usbss->vdd_supply);
614 usbss->codec = fwnode_typec_mux_get(dev->fwnode);
615 if (IS_ERR(usbss->codec))
616 return dev_err_probe(dev, PTR_ERR(usbss->codec),
619 usbss->codec_switch = fwnode_typec_switch_get(dev->fwnode);
620 if (IS_ERR(usbss->codec_switch)) {
621 ret = dev_err_probe(dev, PTR_ERR(usbss->codec_switch),
626 usbss->mode = TYPEC_STATE_SAFE;
627 usbss->orientation = TYPEC_ORIENTATION_NONE;
629 gpiod_set_value(usbss->reset_gpio, 1);
631 ret = regulator_enable(usbss->vdd_supply);
639 gpiod_set_value(usbss->reset_gpio, 0);
644 ret = regmap_clear_bits(usbss->regmap, WCD_USBSS_USB_SS_CNTL,
650 ret = regmap_update_bits(usbss->regmap, WCD_USBSS_FUNCTION_ENABLE,
658 ret = regmap_set_bits(usbss->regmap, WCD_USBSS_DP_DN_MISC1,
665 ret = regmap_set_bits(usbss->regmap, WCD_USBSS_MG1_MISC,
671 ret = regmap_set_bits(usbss->regmap, WCD_USBSS_MG2_MISC,
677 ret = regmap_set_bits(usbss->regmap, WCD_USBSS_CPLDO_CTL2, 0xff);
682 ret = regmap_clear_bits(usbss->regmap, WCD_USBSS_USB_SS_CNTL,
687 ret = regmap_set_bits(usbss->regmap, WCD_USBSS_USB_SS_CNTL,
693 ret = regmap_write(usbss->regmap, WCD_USBSS_SWITCH_SETTINGS_ENABLE,
699 ret = wcd939x_usbss_set(usbss);
703 sw_desc.drvdata = usbss;
707 usbss->sw = typec_switch_register(dev, &sw_desc);
708 if (IS_ERR(usbss->sw)) {
709 ret = dev_err_probe(dev, PTR_ERR(usbss->sw), "failed to register typec switch\n");
713 mux_desc.drvdata = usbss;
717 usbss->mux = typec_mux_register(dev, &mux_desc);
718 if (IS_ERR(usbss->mux)) {
719 ret = dev_err_probe(dev, PTR_ERR(usbss->mux), "failed to register typec mux\n");
723 i2c_set_clientdata(client, usbss);
728 typec_switch_unregister(usbss->sw);
731 regulator_disable(usbss->vdd_supply);
734 typec_switch_put(usbss->codec_switch);
737 typec_mux_put(usbss->codec);
744 struct wcd939x_usbss *usbss = i2c_get_clientdata(client);
746 typec_mux_unregister(usbss->mux);
747 typec_switch_unregister(usbss->sw);
749 regulator_disable(usbss->vdd_supply);
751 typec_switch_put(usbss->codec_switch);
752 typec_mux_put(usbss->codec);
756 { "wcd9390-usbss" },
762 { .compatible = "qcom,wcd9390-usbss" },
769 .name = "wcd939x-usbss",