static void utmip_phy_disable_pmc_bus_ctrl(struct tegra_usb_pmc_data *pmc_data,
			int enable_sof)
{
	unsigned long val;
	void __iomem *usb_base;
	unsigned  int inst = pmc_data->instance;
	usb_base = pmc_data->usb_base;

	DBG("%s(%d) inst:[%d]\n", __func__, __LINE__, pmc_data->instance);

	spin_lock_irqsave(&pmc_lock, flags);

	if (pmc_data->controller_type == TEGRA_USB_2_0 && usb_base) {
		/* disable PMC master control */
		val = readl(usb_base + UTMIP_PMC_WAKEUP0);
		val &= ~EVENT_INT_ENB;
		writel(val, usb_base + UTMIP_PMC_WAKEUP0);
	}

	val = readl(pmc_base + PMC_SLEEP_CFG);
	val &= ~UTMIP_WAKE_VAL(inst, 0xF);
	val |= UTMIP_WAKE_VAL(inst, WAKE_VAL_NONE);
	writel(val, pmc_base + PMC_SLEEP_CFG);

	/* Disable PMC master mode by clearing MASTER_EN */
	val = readl(pmc_base + PMC_SLEEP_CFG);
	/* WAR for xusb */
	if (pmc_data->controller_type == TEGRA_USB_3_0)
		val |= UTMIP_RCTRL_USE_PMC(inst) | UTMIP_TCTRL_USE_PMC(inst);
	else
		val &= ~(UTMIP_RCTRL_USE_PMC(inst) |
				UTMIP_TCTRL_USE_PMC(inst));
	val &= ~(UTMIP_FSLS_USE_PMC(inst) | UTMIP_MASTER_ENABLE(inst));
	writel(val, pmc_base + PMC_SLEEP_CFG);

	val = readl(pmc_base + PMC_TRIGGERS);
	val &= ~UTMIP_CAP_CFG(inst);
	writel(val, pmc_base + PMC_TRIGGERS);

	/* turn off pad detectors */
	val = readl(pmc_base + PMC_USB_AO);
	val |= (USBOP_VAL_PD(inst) | USBON_VAL_PD(inst));
	writel(val, pmc_base + PMC_USB_AO);

	val = readl(pmc_base + PMC_TRIGGERS);
	val |= UTMIP_CLR_WALK_PTR(inst);
	val |= UTMIP_CLR_WAKE_ALARM(inst);
	writel(val, pmc_base + PMC_TRIGGERS);

	if (pmc_data->controller_type == TEGRA_USB_2_0 && enable_sof == 1 &&
		usb_base) {
		val = readl(usb_base + USB_USBCMD);
		val |= USB_USBCMD_RS;
		writel(val, usb_base + USB_USBCMD);
	}
	spin_unlock_irqrestore(&pmc_lock, flags);
}
static void utmip_phy_disable_pmc_bus_ctrl(struct tegra_usb_pmc_data *pmc_data)
{
    unsigned long val;
    unsigned  int inst = pmc_data->instance;

    DBG("%s(%d) inst:[%d]\n", __func__, __LINE__, pmc_data->instance);

    spin_lock_irqsave(&pmc_lock, flags);

    val = readl(pmc_base + PMC_SLEEP_CFG);
    val &= ~UTMIP_WAKE_VAL(inst, 0xF);
    val |= UTMIP_WAKE_VAL(inst, WAKE_VAL_NONE);
    writel(val, pmc_base + PMC_SLEEP_CFG);

    /* Disable PMC master mode by clearing MASTER_EN */
    val = readl(pmc_base + PMC_SLEEP_CFG);
    val &= ~(UTMIP_RCTRL_USE_PMC(inst) | UTMIP_TCTRL_USE_PMC(inst) |
             UTMIP_FSLS_USE_PMC(inst) | UTMIP_MASTER_ENABLE(inst));
    writel(val, pmc_base + PMC_SLEEP_CFG);

    val = readl(pmc_base + PMC_TRIGGERS);
    val &= ~UTMIP_CAP_CFG(inst);
    writel(val, pmc_base + PMC_TRIGGERS);

    /* turn off pad detectors */
    val = readl(pmc_base + PMC_USB_AO);
    val |= (USBOP_VAL_PD(inst) | USBON_VAL_PD(inst));
    writel(val, pmc_base + PMC_USB_AO);

    val = readl(pmc_base + PMC_TRIGGERS);
    val |= UTMIP_CLR_WALK_PTR(inst);
    val |= UTMIP_CLR_WAKE_ALARM(inst);
    writel(val, pmc_base + PMC_TRIGGERS);

    spin_unlock_irqrestore(&pmc_lock, flags);
}