qcom              105 drivers/usb/dwc3/dwc3-qcom.c static void dwc3_qcom_vbus_overrride_enable(struct dwc3_qcom *qcom, bool enable)
qcom              108 drivers/usb/dwc3/dwc3-qcom.c 		dwc3_qcom_setbits(qcom->qscratch_base, QSCRATCH_SS_PHY_CTRL,
qcom              110 drivers/usb/dwc3/dwc3-qcom.c 		dwc3_qcom_setbits(qcom->qscratch_base, QSCRATCH_HS_PHY_CTRL,
qcom              113 drivers/usb/dwc3/dwc3-qcom.c 		dwc3_qcom_clrbits(qcom->qscratch_base, QSCRATCH_SS_PHY_CTRL,
qcom              115 drivers/usb/dwc3/dwc3-qcom.c 		dwc3_qcom_clrbits(qcom->qscratch_base, QSCRATCH_HS_PHY_CTRL,
qcom              123 drivers/usb/dwc3/dwc3-qcom.c 	struct dwc3_qcom *qcom = container_of(nb, struct dwc3_qcom, vbus_nb);
qcom              126 drivers/usb/dwc3/dwc3-qcom.c 	dwc3_qcom_vbus_overrride_enable(qcom, event);
qcom              127 drivers/usb/dwc3/dwc3-qcom.c 	qcom->mode = event ? USB_DR_MODE_PERIPHERAL : USB_DR_MODE_HOST;
qcom              135 drivers/usb/dwc3/dwc3-qcom.c 	struct dwc3_qcom *qcom = container_of(nb, struct dwc3_qcom, host_nb);
qcom              138 drivers/usb/dwc3/dwc3-qcom.c 	dwc3_qcom_vbus_overrride_enable(qcom, !event);
qcom              139 drivers/usb/dwc3/dwc3-qcom.c 	qcom->mode = event ? USB_DR_MODE_HOST : USB_DR_MODE_PERIPHERAL;
qcom              144 drivers/usb/dwc3/dwc3-qcom.c static int dwc3_qcom_register_extcon(struct dwc3_qcom *qcom)
qcom              146 drivers/usb/dwc3/dwc3-qcom.c 	struct device		*dev = qcom->dev;
qcom              153 drivers/usb/dwc3/dwc3-qcom.c 	qcom->edev = extcon_get_edev_by_phandle(dev, 0);
qcom              154 drivers/usb/dwc3/dwc3-qcom.c 	if (IS_ERR(qcom->edev))
qcom              155 drivers/usb/dwc3/dwc3-qcom.c 		return PTR_ERR(qcom->edev);
qcom              157 drivers/usb/dwc3/dwc3-qcom.c 	qcom->vbus_nb.notifier_call = dwc3_qcom_vbus_notifier;
qcom              159 drivers/usb/dwc3/dwc3-qcom.c 	qcom->host_edev = extcon_get_edev_by_phandle(dev, 1);
qcom              160 drivers/usb/dwc3/dwc3-qcom.c 	if (IS_ERR(qcom->host_edev))
qcom              161 drivers/usb/dwc3/dwc3-qcom.c 		qcom->host_edev = NULL;
qcom              163 drivers/usb/dwc3/dwc3-qcom.c 	ret = devm_extcon_register_notifier(dev, qcom->edev, EXTCON_USB,
qcom              164 drivers/usb/dwc3/dwc3-qcom.c 					    &qcom->vbus_nb);
qcom              170 drivers/usb/dwc3/dwc3-qcom.c 	if (qcom->host_edev)
qcom              171 drivers/usb/dwc3/dwc3-qcom.c 		host_edev = qcom->host_edev;
qcom              173 drivers/usb/dwc3/dwc3-qcom.c 		host_edev = qcom->edev;
qcom              175 drivers/usb/dwc3/dwc3-qcom.c 	qcom->host_nb.notifier_call = dwc3_qcom_host_notifier;
qcom              177 drivers/usb/dwc3/dwc3-qcom.c 					    &qcom->host_nb);
qcom              184 drivers/usb/dwc3/dwc3-qcom.c 	if (extcon_get_state(qcom->edev, EXTCON_USB) ||
qcom              186 drivers/usb/dwc3/dwc3-qcom.c 		dwc3_qcom_vbus_notifier(&qcom->vbus_nb, true, qcom->edev);
qcom              188 drivers/usb/dwc3/dwc3-qcom.c 		dwc3_qcom_vbus_notifier(&qcom->vbus_nb, false, qcom->edev);
qcom              193 drivers/usb/dwc3/dwc3-qcom.c static void dwc3_qcom_disable_interrupts(struct dwc3_qcom *qcom)
qcom              195 drivers/usb/dwc3/dwc3-qcom.c 	if (qcom->hs_phy_irq) {
qcom              196 drivers/usb/dwc3/dwc3-qcom.c 		disable_irq_wake(qcom->hs_phy_irq);
qcom              197 drivers/usb/dwc3/dwc3-qcom.c 		disable_irq_nosync(qcom->hs_phy_irq);
qcom              200 drivers/usb/dwc3/dwc3-qcom.c 	if (qcom->dp_hs_phy_irq) {
qcom              201 drivers/usb/dwc3/dwc3-qcom.c 		disable_irq_wake(qcom->dp_hs_phy_irq);
qcom              202 drivers/usb/dwc3/dwc3-qcom.c 		disable_irq_nosync(qcom->dp_hs_phy_irq);
qcom              205 drivers/usb/dwc3/dwc3-qcom.c 	if (qcom->dm_hs_phy_irq) {
qcom              206 drivers/usb/dwc3/dwc3-qcom.c 		disable_irq_wake(qcom->dm_hs_phy_irq);
qcom              207 drivers/usb/dwc3/dwc3-qcom.c 		disable_irq_nosync(qcom->dm_hs_phy_irq);
qcom              210 drivers/usb/dwc3/dwc3-qcom.c 	if (qcom->ss_phy_irq) {
qcom              211 drivers/usb/dwc3/dwc3-qcom.c 		disable_irq_wake(qcom->ss_phy_irq);
qcom              212 drivers/usb/dwc3/dwc3-qcom.c 		disable_irq_nosync(qcom->ss_phy_irq);
qcom              216 drivers/usb/dwc3/dwc3-qcom.c static void dwc3_qcom_enable_interrupts(struct dwc3_qcom *qcom)
qcom              218 drivers/usb/dwc3/dwc3-qcom.c 	if (qcom->hs_phy_irq) {
qcom              219 drivers/usb/dwc3/dwc3-qcom.c 		enable_irq(qcom->hs_phy_irq);
qcom              220 drivers/usb/dwc3/dwc3-qcom.c 		enable_irq_wake(qcom->hs_phy_irq);
qcom              223 drivers/usb/dwc3/dwc3-qcom.c 	if (qcom->dp_hs_phy_irq) {
qcom              224 drivers/usb/dwc3/dwc3-qcom.c 		enable_irq(qcom->dp_hs_phy_irq);
qcom              225 drivers/usb/dwc3/dwc3-qcom.c 		enable_irq_wake(qcom->dp_hs_phy_irq);
qcom              228 drivers/usb/dwc3/dwc3-qcom.c 	if (qcom->dm_hs_phy_irq) {
qcom              229 drivers/usb/dwc3/dwc3-qcom.c 		enable_irq(qcom->dm_hs_phy_irq);
qcom              230 drivers/usb/dwc3/dwc3-qcom.c 		enable_irq_wake(qcom->dm_hs_phy_irq);
qcom              233 drivers/usb/dwc3/dwc3-qcom.c 	if (qcom->ss_phy_irq) {
qcom              234 drivers/usb/dwc3/dwc3-qcom.c 		enable_irq(qcom->ss_phy_irq);
qcom              235 drivers/usb/dwc3/dwc3-qcom.c 		enable_irq_wake(qcom->ss_phy_irq);
qcom              239 drivers/usb/dwc3/dwc3-qcom.c static int dwc3_qcom_suspend(struct dwc3_qcom *qcom)
qcom              244 drivers/usb/dwc3/dwc3-qcom.c 	if (qcom->is_suspended)
qcom              247 drivers/usb/dwc3/dwc3-qcom.c 	val = readl(qcom->qscratch_base + PWR_EVNT_IRQ_STAT_REG);
qcom              249 drivers/usb/dwc3/dwc3-qcom.c 		dev_err(qcom->dev, "HS-PHY not in L2\n");
qcom              251 drivers/usb/dwc3/dwc3-qcom.c 	for (i = qcom->num_clocks - 1; i >= 0; i--)
qcom              252 drivers/usb/dwc3/dwc3-qcom.c 		clk_disable_unprepare(qcom->clks[i]);
qcom              254 drivers/usb/dwc3/dwc3-qcom.c 	qcom->is_suspended = true;
qcom              255 drivers/usb/dwc3/dwc3-qcom.c 	dwc3_qcom_enable_interrupts(qcom);
qcom              260 drivers/usb/dwc3/dwc3-qcom.c static int dwc3_qcom_resume(struct dwc3_qcom *qcom)
qcom              265 drivers/usb/dwc3/dwc3-qcom.c 	if (!qcom->is_suspended)
qcom              268 drivers/usb/dwc3/dwc3-qcom.c 	dwc3_qcom_disable_interrupts(qcom);
qcom              270 drivers/usb/dwc3/dwc3-qcom.c 	for (i = 0; i < qcom->num_clocks; i++) {
qcom              271 drivers/usb/dwc3/dwc3-qcom.c 		ret = clk_prepare_enable(qcom->clks[i]);
qcom              274 drivers/usb/dwc3/dwc3-qcom.c 				clk_disable_unprepare(qcom->clks[i]);
qcom              280 drivers/usb/dwc3/dwc3-qcom.c 	dwc3_qcom_setbits(qcom->qscratch_base, PWR_EVNT_IRQ_STAT_REG,
qcom              283 drivers/usb/dwc3/dwc3-qcom.c 	qcom->is_suspended = false;
qcom              290 drivers/usb/dwc3/dwc3-qcom.c 	struct dwc3_qcom *qcom = data;
qcom              291 drivers/usb/dwc3/dwc3-qcom.c 	struct dwc3	*dwc = platform_get_drvdata(qcom->dwc3);
qcom              294 drivers/usb/dwc3/dwc3-qcom.c 	if (qcom->pm_suspended)
qcom              303 drivers/usb/dwc3/dwc3-qcom.c static void dwc3_qcom_select_utmi_clk(struct dwc3_qcom *qcom)
qcom              306 drivers/usb/dwc3/dwc3-qcom.c 	dwc3_qcom_setbits(qcom->qscratch_base, QSCRATCH_GENERAL_CFG,
qcom              311 drivers/usb/dwc3/dwc3-qcom.c 	dwc3_qcom_setbits(qcom->qscratch_base, QSCRATCH_GENERAL_CFG,
qcom              316 drivers/usb/dwc3/dwc3-qcom.c 	dwc3_qcom_clrbits(qcom->qscratch_base, QSCRATCH_GENERAL_CFG,
qcom              336 drivers/usb/dwc3/dwc3-qcom.c 	struct dwc3_qcom *qcom = platform_get_drvdata(pdev);
qcom              337 drivers/usb/dwc3/dwc3-qcom.c 	const struct dwc3_acpi_pdata *pdata = qcom->acpi_pdata;
qcom              344 drivers/usb/dwc3/dwc3-qcom.c 		ret = devm_request_threaded_irq(qcom->dev, irq, NULL,
qcom              347 drivers/usb/dwc3/dwc3-qcom.c 					"qcom_dwc3 HS", qcom);
qcom              349 drivers/usb/dwc3/dwc3-qcom.c 			dev_err(qcom->dev, "hs_phy_irq failed: %d\n", ret);
qcom              352 drivers/usb/dwc3/dwc3-qcom.c 		qcom->hs_phy_irq = irq;
qcom              359 drivers/usb/dwc3/dwc3-qcom.c 		ret = devm_request_threaded_irq(qcom->dev, irq, NULL,
qcom              362 drivers/usb/dwc3/dwc3-qcom.c 					"qcom_dwc3 DP_HS", qcom);
qcom              364 drivers/usb/dwc3/dwc3-qcom.c 			dev_err(qcom->dev, "dp_hs_phy_irq failed: %d\n", ret);
qcom              367 drivers/usb/dwc3/dwc3-qcom.c 		qcom->dp_hs_phy_irq = irq;
qcom              374 drivers/usb/dwc3/dwc3-qcom.c 		ret = devm_request_threaded_irq(qcom->dev, irq, NULL,
qcom              377 drivers/usb/dwc3/dwc3-qcom.c 					"qcom_dwc3 DM_HS", qcom);
qcom              379 drivers/usb/dwc3/dwc3-qcom.c 			dev_err(qcom->dev, "dm_hs_phy_irq failed: %d\n", ret);
qcom              382 drivers/usb/dwc3/dwc3-qcom.c 		qcom->dm_hs_phy_irq = irq;
qcom              389 drivers/usb/dwc3/dwc3-qcom.c 		ret = devm_request_threaded_irq(qcom->dev, irq, NULL,
qcom              392 drivers/usb/dwc3/dwc3-qcom.c 					"qcom_dwc3 SS", qcom);
qcom              394 drivers/usb/dwc3/dwc3-qcom.c 			dev_err(qcom->dev, "ss_phy_irq failed: %d\n", ret);
qcom              397 drivers/usb/dwc3/dwc3-qcom.c 		qcom->ss_phy_irq = irq;
qcom              403 drivers/usb/dwc3/dwc3-qcom.c static int dwc3_qcom_clk_init(struct dwc3_qcom *qcom, int count)
qcom              405 drivers/usb/dwc3/dwc3-qcom.c 	struct device		*dev = qcom->dev;
qcom              415 drivers/usb/dwc3/dwc3-qcom.c 	qcom->num_clocks = count;
qcom              417 drivers/usb/dwc3/dwc3-qcom.c 	qcom->clks = devm_kcalloc(dev, qcom->num_clocks,
qcom              419 drivers/usb/dwc3/dwc3-qcom.c 	if (!qcom->clks)
qcom              422 drivers/usb/dwc3/dwc3-qcom.c 	for (i = 0; i < qcom->num_clocks; i++) {
qcom              429 drivers/usb/dwc3/dwc3-qcom.c 				clk_put(qcom->clks[i]);
qcom              436 drivers/usb/dwc3/dwc3-qcom.c 				clk_disable_unprepare(qcom->clks[i]);
qcom              437 drivers/usb/dwc3/dwc3-qcom.c 				clk_put(qcom->clks[i]);
qcom              444 drivers/usb/dwc3/dwc3-qcom.c 		qcom->clks[i] = clk;
qcom              457 drivers/usb/dwc3/dwc3-qcom.c 	struct dwc3_qcom 	*qcom = platform_get_drvdata(pdev);
qcom              463 drivers/usb/dwc3/dwc3-qcom.c 	qcom->dwc3 = platform_device_alloc("dwc3", PLATFORM_DEVID_AUTO);
qcom              464 drivers/usb/dwc3/dwc3-qcom.c 	if (!qcom->dwc3)
qcom              467 drivers/usb/dwc3/dwc3-qcom.c 	qcom->dwc3->dev.parent = dev;
qcom              468 drivers/usb/dwc3/dwc3-qcom.c 	qcom->dwc3->dev.type = dev->type;
qcom              469 drivers/usb/dwc3/dwc3-qcom.c 	qcom->dwc3->dev.dma_mask = dev->dma_mask;
qcom              470 drivers/usb/dwc3/dwc3-qcom.c 	qcom->dwc3->dev.dma_parms = dev->dma_parms;
qcom              471 drivers/usb/dwc3/dwc3-qcom.c 	qcom->dwc3->dev.coherent_dma_mask = dev->coherent_dma_mask;
qcom              487 drivers/usb/dwc3/dwc3-qcom.c 		qcom->acpi_pdata->dwc3_core_base_size;
qcom              493 drivers/usb/dwc3/dwc3-qcom.c 	ret = platform_device_add_resources(qcom->dwc3, child_res, 2);
qcom              499 drivers/usb/dwc3/dwc3-qcom.c 	ret = platform_device_add_properties(qcom->dwc3,
qcom              506 drivers/usb/dwc3/dwc3-qcom.c 	ret = platform_device_add(qcom->dwc3);
qcom              517 drivers/usb/dwc3/dwc3-qcom.c 	struct dwc3_qcom 	*qcom = platform_get_drvdata(pdev);
qcom              534 drivers/usb/dwc3/dwc3-qcom.c 	qcom->dwc3 = of_find_device_by_node(dwc3_np);
qcom              535 drivers/usb/dwc3/dwc3-qcom.c 	if (!qcom->dwc3) {
qcom              557 drivers/usb/dwc3/dwc3-qcom.c 	struct dwc3_qcom	*qcom;
qcom              562 drivers/usb/dwc3/dwc3-qcom.c 	qcom = devm_kzalloc(&pdev->dev, sizeof(*qcom), GFP_KERNEL);
qcom              563 drivers/usb/dwc3/dwc3-qcom.c 	if (!qcom)
qcom              566 drivers/usb/dwc3/dwc3-qcom.c 	platform_set_drvdata(pdev, qcom);
qcom              567 drivers/usb/dwc3/dwc3-qcom.c 	qcom->dev = &pdev->dev;
qcom              570 drivers/usb/dwc3/dwc3-qcom.c 		qcom->acpi_pdata = acpi_device_get_match_data(dev);
qcom              571 drivers/usb/dwc3/dwc3-qcom.c 		if (!qcom->acpi_pdata) {
qcom              577 drivers/usb/dwc3/dwc3-qcom.c 	qcom->resets = devm_reset_control_array_get_optional_exclusive(dev);
qcom              578 drivers/usb/dwc3/dwc3-qcom.c 	if (IS_ERR(qcom->resets)) {
qcom              579 drivers/usb/dwc3/dwc3-qcom.c 		ret = PTR_ERR(qcom->resets);
qcom              584 drivers/usb/dwc3/dwc3-qcom.c 	ret = reset_control_assert(qcom->resets);
qcom              592 drivers/usb/dwc3/dwc3-qcom.c 	ret = reset_control_deassert(qcom->resets);
qcom              598 drivers/usb/dwc3/dwc3-qcom.c 	ret = dwc3_qcom_clk_init(qcom, of_clk_get_parent_count(np));
qcom              614 drivers/usb/dwc3/dwc3-qcom.c 			qcom->acpi_pdata->qscratch_base_offset;
qcom              616 drivers/usb/dwc3/dwc3-qcom.c 			qcom->acpi_pdata->qscratch_base_size;
qcom              619 drivers/usb/dwc3/dwc3-qcom.c 	qcom->qscratch_base = devm_ioremap_resource(dev, parent_res);
qcom              620 drivers/usb/dwc3/dwc3-qcom.c 	if (IS_ERR(qcom->qscratch_base)) {
qcom              622 drivers/usb/dwc3/dwc3-qcom.c 		ret = PTR_ERR(qcom->qscratch_base);
qcom              639 drivers/usb/dwc3/dwc3-qcom.c 		dwc3_qcom_select_utmi_clk(qcom);
qcom              651 drivers/usb/dwc3/dwc3-qcom.c 	qcom->mode = usb_get_dr_mode(&qcom->dwc3->dev);
qcom              654 drivers/usb/dwc3/dwc3-qcom.c 	if (qcom->mode == USB_DR_MODE_PERIPHERAL)
qcom              655 drivers/usb/dwc3/dwc3-qcom.c 		dwc3_qcom_vbus_overrride_enable(qcom, true);
qcom              658 drivers/usb/dwc3/dwc3-qcom.c 	ret = dwc3_qcom_register_extcon(qcom);
qcom              663 drivers/usb/dwc3/dwc3-qcom.c 	qcom->is_suspended = false;
qcom              676 drivers/usb/dwc3/dwc3-qcom.c 	for (i = qcom->num_clocks - 1; i >= 0; i--) {
qcom              677 drivers/usb/dwc3/dwc3-qcom.c 		clk_disable_unprepare(qcom->clks[i]);
qcom              678 drivers/usb/dwc3/dwc3-qcom.c 		clk_put(qcom->clks[i]);
qcom              681 drivers/usb/dwc3/dwc3-qcom.c 	reset_control_assert(qcom->resets);
qcom              688 drivers/usb/dwc3/dwc3-qcom.c 	struct dwc3_qcom *qcom = platform_get_drvdata(pdev);
qcom              694 drivers/usb/dwc3/dwc3-qcom.c 	for (i = qcom->num_clocks - 1; i >= 0; i--) {
qcom              695 drivers/usb/dwc3/dwc3-qcom.c 		clk_disable_unprepare(qcom->clks[i]);
qcom              696 drivers/usb/dwc3/dwc3-qcom.c 		clk_put(qcom->clks[i]);
qcom              698 drivers/usb/dwc3/dwc3-qcom.c 	qcom->num_clocks = 0;
qcom              700 drivers/usb/dwc3/dwc3-qcom.c 	reset_control_assert(qcom->resets);
qcom              710 drivers/usb/dwc3/dwc3-qcom.c 	struct dwc3_qcom *qcom = dev_get_drvdata(dev);
qcom              713 drivers/usb/dwc3/dwc3-qcom.c 	ret = dwc3_qcom_suspend(qcom);
qcom              715 drivers/usb/dwc3/dwc3-qcom.c 		qcom->pm_suspended = true;
qcom              722 drivers/usb/dwc3/dwc3-qcom.c 	struct dwc3_qcom *qcom = dev_get_drvdata(dev);
qcom              725 drivers/usb/dwc3/dwc3-qcom.c 	ret = dwc3_qcom_resume(qcom);
qcom              727 drivers/usb/dwc3/dwc3-qcom.c 		qcom->pm_suspended = false;
qcom              734 drivers/usb/dwc3/dwc3-qcom.c 	struct dwc3_qcom *qcom = dev_get_drvdata(dev);
qcom              736 drivers/usb/dwc3/dwc3-qcom.c 	return dwc3_qcom_suspend(qcom);
qcom              741 drivers/usb/dwc3/dwc3-qcom.c 	struct dwc3_qcom *qcom = dev_get_drvdata(dev);
qcom              743 drivers/usb/dwc3/dwc3-qcom.c 	return dwc3_qcom_resume(qcom);