> +static int exynosauto_ufs_post_hce_enable(struct exynos_ufs *ufs) > +{ > + struct ufs_hba *hba = ufs->hba; > + > + /* Enable Virtual Host #1 */ > + ufshcd_rmwl(hba, MHCTRL_EN_VH_MASK, MHCTRL_EN_VH(1), MHCTRL); > + /* Default VH Transfer permissions */ > + hci_writel(ufs, ALLOW_TRANS_VH_DEFAULT, > HCI_MH_ALLOWABLE_TRAN_OF_VH); > + /* IID information is replaced in TASKTAG[7:5] instead of IID in UCD */ > + hci_writel(ufs, 0x1, HCI_MH_IID_IN_TASK_TAG); If I understand correctly, once you set this register, the hw takes care of properly arbitrating the requests - PH + up to 4 VHs total of 5 machines, each supporting 32 requests doorbell. Can you share what policy the arbiter uses among the 5 doorbells? You are designating this change to be used in a UFS2.1 platforms, correct? Are you planning to use the same framework for UFSHCI4.0, which uses MCQ? Thanks, Avri > + > + return 0; > +}