RE: [PATCH v4 14/16] scsi: ufs: ufs-exynos: multi-host configuration for exynosauto

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



> > +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.


Actually, four Multi Hosts (1 for PH and 3 for VHs)

> Can you share what policy the arbiter uses among the 5 doorbells?

AFAIK, it is working something like round-robin. It also has a full checker so it will be acting as the RR arbiter until the requests are full not to be handled by the controller (I'm not sure the exact number of the full count). If full, the lowest UTRD idx will be first.


> 
> You are designating this change to be used in a UFS2.1 platforms, correct?

Yes.

> Are you planning to use the same framework for UFSHCI4.0, which uses MCQ?

AFAIK, next chip will be compatible with 3.1 not 4.0.

Best Regards,
Chanho Park






[Index of Archives]     [Linux SoC Development]     [Linux Rockchip Development]     [Linux for Synopsys ARC Processors]    
  • [Linux on Unisoc (RDA Micro) SoCs]     [Linux Actions SoC]     [Linux USB Development]     [Video for Linux]     [Linux Audio Users]     [Linux SCSI]     [Yosemite News]

  •   Powered by Linux