[Wind] MT6750 眼图 host 测试代码修改点
2021-05-07 15:29
标签:sse count int exp bsp active class action asi 眼图相关知识请查看 https://wenku.baidu.com/view/03272d48cc17552706220820.html MT6750 平台需要修改两个地方: 1、kernel-3.18/drivers/misc/mediatek/mu3phy/mt6755/mtk-phy-asic.c 2、kernel-3.18/drivers/misc/mediatek/xhci/xhci-mtk-driver.c [Wind] MT6750 眼图 host 测试代码修改点 标签:sse count int exp bsp active class action asi 原文地址:http://www.cnblogs.com/mz8023yt/p/7640467.htmlPHY_INT32 phy_init_soc(struct u3phy_info *info)
{
PHY_INT32 ret;
os_printk(K_INFO, "%s+\n", __func__);
... ...
U3PhyWriteField32((phys_addr_t) (uintptr_t) U3D_USBPHYACR1, RG_USB20_VRT_VREF_SEL_OFST, RG_USB20_VRT_VREF_SEL, 7); // 新加
U3PhyWriteField32((phys_addr_t) (uintptr_t) U3D_USBPHYACR1, RG_USB20_TERM_VREF_SEL_OFST, RG_USB20_TERM_VREF_SEL, 7); // 新加
/*Wait 800 usec */
udelay(800);
U3PhyWriteField32((phys_addr_t) (uintptr_t) U3D_U2PHYDTM1, FORCE_VBUSVALID_OFST, FORCE_VBUSVALID, 1);
U3PhyWriteField32((phys_addr_t) (uintptr_t) U3D_U2PHYDTM1, FORCE_AVALID_OFST, FORCE_AVALID, 1);
U3PhyWriteField32((phys_addr_t) (uintptr_t) U3D_U2PHYDTM1, FORCE_SESSEND_OFST, FORCE_SESSEND, 1);
/* USB PLL Force settings */
usb20_pll_settings(false, false);
os_printk(K_DEBUG, "%s-\n", __func__);
return PHY_TRUE;
}
void mtk_xhci_mode_switch(struct work_struct *work)
{
static bool is_load;
static bool is_pwoff;
int ret = 0;
mtk_xhci_mtk_printk(K_DEBUG, "mtk_xhci_mode_switch\n");
if (musb_check_ipo_state() == true)
{
enable_irq(mtk_idpin_irqnum); /* prevent from disable irq twice*/
return;
}
if (mtk_idpin_cur_stat == IDPIN_OUT)
{
is_load = false;
/* expect next isr is for id-pin out action */
mtk_idpin_cur_stat = (mtk_is_charger_4_vol()) ? IDPIN_IN_DEVICE : IDPIN_IN_HOST;
/* make id pin to detect the plug-out */
mtk_set_iddig_out_detect();
if (mtk_idpin_cur_stat == IDPIN_IN_DEVICE)
goto done;
U3PhyWriteField32((phys_addr_t) (uintptr_t) U3D_USBPHYACR1, RG_USB20_VRT_VREF_SEL_OFST, RG_USB20_VRT_VREF_SEL, 4); // 新加
U3PhyWriteField32((phys_addr_t) (uintptr_t) U3D_USBPHYACR1, RG_USB20_TERM_VREF_SEL_OFST, RG_USB20_TERM_VREF_SEL, 4); // 新加
ret = mtk_xhci_driver_load();
if (!ret)
{
is_load = true;
mtk_xhci_wakelock_lock();
#ifndef CONFIG_USBIF_COMPLIANCE
switch_set_state(&mtk_otg_state, 1);
#endif
}
}
else
{ /* IDPIN_OUT */
if (is_load)
{
if (!is_pwoff)
mtk_xhci_disPortPower();
/* prevent hang here */
/* if(mtk_is_hub_active())
{
is_pwoff = true;
schedule_delayed_work_on(0, &mtk_xhci_delaywork, msecs_to_jiffies(mtk_iddig_debounce));
mtk_xhci_mtk_printk(K_DEBUG, "wait, hub is still active, ep cnt %d !!!\n", mtk_ep_count);
return;
} */
/* USB PLL Force settings */
#ifdef CONFIG_PROJECT_PHY
usb20_pll_settings(true, false);
#endif
U3PhyWriteField32((phys_addr_t) (uintptr_t) U3D_USBPHYACR1, RG_USB20_VRT_VREF_SEL_OFST, RG_USB20_VRT_VREF_SEL, 7); // 新加
U3PhyWriteField32((phys_addr_t) (uintptr_t) U3D_USBPHYACR1, RG_USB20_TERM_VREF_SEL_OFST, RG_USB20_TERM_VREF_SEL, 7); // 新加
mtk_xhci_driver_unload();
is_pwoff = false;
is_load = false;
#ifndef CONFIG_USBIF_COMPLIANCE
switch_set_state(&mtk_otg_state, 0);
#endif
mtk_xhci_wakelock_unlock();
}
/* expect next isr is for id-pin in action */
mtk_idpin_cur_stat = IDPIN_OUT;
/* make id pin to detect the plug-in */
mtk_set_iddig_in_detect();
}
done:
mtk_xhci_mtk_printk(K_ALET, "current mode is %s, ret(%d), switch(%d)\n", (mtk_idpin_cur_stat == IDPIN_IN_HOST) ? "host" : (mtk_idpin_cur_stat == IDPIN_IN_DEVICE) ? "id_device" : "device", ret, mtk_otg_state.state);
}
文章标题:[Wind] MT6750 眼图 host 测试代码修改点
文章链接:http://soscw.com/index.php/essay/83744.html