lkml.org 
[lkml]   [2020]   [Dec]   [9]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH v5 14/27] iommu/mediatek: Move hw_init into attach_device
    Date
    In attach device, it will update the pagetable base address register.
    Move the hw_init function also here. Then it only need call
    pm_runtime_get/put one time here if m4u has power domain.

    Signed-off-by: Yong Wu <yong.wu@mediatek.com>
    ---
    drivers/iommu/mtk_iommu.c | 10 ++++++----
    1 file changed, 6 insertions(+), 4 deletions(-)

    diff --git a/drivers/iommu/mtk_iommu.c b/drivers/iommu/mtk_iommu.c
    index 1bc5e881951c..39478cfbe0f1 100644
    --- a/drivers/iommu/mtk_iommu.c
    +++ b/drivers/iommu/mtk_iommu.c
    @@ -126,6 +126,8 @@ struct mtk_iommu_domain {

    static const struct iommu_ops mtk_iommu_ops;

    +static int mtk_iommu_hw_init(const struct mtk_iommu_data *data);
    +
    /*
    * In M4U 4GB mode, the physical address is remapped as below:
    *
    @@ -381,12 +383,16 @@ static int mtk_iommu_attach_device(struct iommu_domain *domain,
    {
    struct mtk_iommu_data *data = dev_iommu_priv_get(dev);
    struct mtk_iommu_domain *dom = to_mtk_domain(domain);
    + int ret;

    if (!data)
    return -ENODEV;

    /* Update the pgtable base address register of the M4U HW */
    if (!data->m4u_dom) {
    + ret = mtk_iommu_hw_init(data);
    + if (ret)
    + return ret;
    data->m4u_dom = dom;
    writel(dom->cfg.arm_v7s_cfg.ttbr & MMU_PT_ADDR_MASK,
    data->base + REG_MMU_PT_BASE_ADDR);
    @@ -730,10 +736,6 @@ static int mtk_iommu_probe(struct platform_device *pdev)

    platform_set_drvdata(pdev, data);

    - ret = mtk_iommu_hw_init(data);
    - if (ret)
    - return ret;
    -
    ret = iommu_device_sysfs_add(&data->iommu, dev, NULL,
    "mtk-iommu.%pa", &ioaddr);
    if (ret)
    --
    2.18.0
    \
     
     \ /
      Last update: 2020-12-09 09:07    [W:4.111 / U:0.000 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site