forked from luck/tmp_suning_uos_patched
memory: mtk-smi: Get rid of need_larbid
The "mediatek,larb-id" has already been parsed in MTK IOMMU driver. It's no need to parse it again in SMI driver. Only clean some codes. This patch is fit for all the current mt2701, mt2712, mt7623, mt8173 and mt8183. After this patch, the "mediatek,larb-id" only be needed for mt2712 which have 2 M4Us. In the other SoCs, we can get the larb-id from M4U in which the larbs in the "mediatek,larbs" always are ordered. Correspondingly, the larb_nr in the "struct mtk_smi_iommu" could also be deleted. CC: Matthias Brugger <matthias.bgg@gmail.com> Signed-off-by: Yong Wu <yong.wu@mediatek.com> Reviewed-by: Evan Green <evgreen@chromium.org> Reviewed-by: Matthias Brugger <matthias.bgg@gmail.com> Signed-off-by: Joerg Roedel <jroedel@suse.de>
This commit is contained in:
parent
b9475b3471
commit
ec2da07ca1
|
@ -656,7 +656,6 @@ static int mtk_iommu_probe(struct platform_device *pdev)
|
||||||
"mediatek,larbs", NULL);
|
"mediatek,larbs", NULL);
|
||||||
if (larb_nr < 0)
|
if (larb_nr < 0)
|
||||||
return larb_nr;
|
return larb_nr;
|
||||||
data->smi_imu.larb_nr = larb_nr;
|
|
||||||
|
|
||||||
for (i = 0; i < larb_nr; i++) {
|
for (i = 0; i < larb_nr; i++) {
|
||||||
struct device_node *larbnode;
|
struct device_node *larbnode;
|
||||||
|
|
|
@ -616,8 +616,6 @@ static int mtk_iommu_probe(struct platform_device *pdev)
|
||||||
larb_nr++;
|
larb_nr++;
|
||||||
}
|
}
|
||||||
|
|
||||||
data->smi_imu.larb_nr = larb_nr;
|
|
||||||
|
|
||||||
platform_set_drvdata(pdev, data);
|
platform_set_drvdata(pdev, data);
|
||||||
|
|
||||||
ret = mtk_iommu_hw_init(data);
|
ret = mtk_iommu_hw_init(data);
|
||||||
|
|
|
@ -59,7 +59,6 @@ struct mtk_smi_common_plat {
|
||||||
};
|
};
|
||||||
|
|
||||||
struct mtk_smi_larb_gen {
|
struct mtk_smi_larb_gen {
|
||||||
bool need_larbid;
|
|
||||||
int port_in_larb[MTK_LARB_NR_MAX + 1];
|
int port_in_larb[MTK_LARB_NR_MAX + 1];
|
||||||
void (*config_port)(struct device *);
|
void (*config_port)(struct device *);
|
||||||
unsigned int larb_direct_to_common_mask;
|
unsigned int larb_direct_to_common_mask;
|
||||||
|
@ -147,18 +146,9 @@ mtk_smi_larb_bind(struct device *dev, struct device *master, void *data)
|
||||||
struct mtk_smi_iommu *smi_iommu = data;
|
struct mtk_smi_iommu *smi_iommu = data;
|
||||||
unsigned int i;
|
unsigned int i;
|
||||||
|
|
||||||
if (larb->larb_gen->need_larbid) {
|
for (i = 0; i < MTK_LARB_NR_MAX; i++) {
|
||||||
larb->mmu = &smi_iommu->larb_imu[larb->larbid].mmu;
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
|
||||||
* If there is no larbid property, Loop to find the corresponding
|
|
||||||
* iommu information.
|
|
||||||
*/
|
|
||||||
for (i = 0; i < smi_iommu->larb_nr; i++) {
|
|
||||||
if (dev == smi_iommu->larb_imu[i].dev) {
|
if (dev == smi_iommu->larb_imu[i].dev) {
|
||||||
/* The 'mmu' may be updated in iommu-attach/detach. */
|
larb->larbid = i;
|
||||||
larb->mmu = &smi_iommu->larb_imu[i].mmu;
|
larb->mmu = &smi_iommu->larb_imu[i].mmu;
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
@ -237,7 +227,6 @@ static const struct mtk_smi_larb_gen mtk_smi_larb_mt8173 = {
|
||||||
};
|
};
|
||||||
|
|
||||||
static const struct mtk_smi_larb_gen mtk_smi_larb_mt2701 = {
|
static const struct mtk_smi_larb_gen mtk_smi_larb_mt2701 = {
|
||||||
.need_larbid = true,
|
|
||||||
.port_in_larb = {
|
.port_in_larb = {
|
||||||
LARB0_PORT_OFFSET, LARB1_PORT_OFFSET,
|
LARB0_PORT_OFFSET, LARB1_PORT_OFFSET,
|
||||||
LARB2_PORT_OFFSET, LARB3_PORT_OFFSET
|
LARB2_PORT_OFFSET, LARB3_PORT_OFFSET
|
||||||
|
@ -246,7 +235,6 @@ static const struct mtk_smi_larb_gen mtk_smi_larb_mt2701 = {
|
||||||
};
|
};
|
||||||
|
|
||||||
static const struct mtk_smi_larb_gen mtk_smi_larb_mt2712 = {
|
static const struct mtk_smi_larb_gen mtk_smi_larb_mt2712 = {
|
||||||
.need_larbid = true,
|
|
||||||
.config_port = mtk_smi_larb_config_port_gen2_general,
|
.config_port = mtk_smi_larb_config_port_gen2_general,
|
||||||
.larb_direct_to_common_mask = BIT(8) | BIT(9), /* bdpsys */
|
.larb_direct_to_common_mask = BIT(8) | BIT(9), /* bdpsys */
|
||||||
};
|
};
|
||||||
|
@ -285,7 +273,6 @@ static int mtk_smi_larb_probe(struct platform_device *pdev)
|
||||||
struct device *dev = &pdev->dev;
|
struct device *dev = &pdev->dev;
|
||||||
struct device_node *smi_node;
|
struct device_node *smi_node;
|
||||||
struct platform_device *smi_pdev;
|
struct platform_device *smi_pdev;
|
||||||
int err;
|
|
||||||
|
|
||||||
larb = devm_kzalloc(dev, sizeof(*larb), GFP_KERNEL);
|
larb = devm_kzalloc(dev, sizeof(*larb), GFP_KERNEL);
|
||||||
if (!larb)
|
if (!larb)
|
||||||
|
@ -315,15 +302,6 @@ static int mtk_smi_larb_probe(struct platform_device *pdev)
|
||||||
}
|
}
|
||||||
larb->smi.dev = dev;
|
larb->smi.dev = dev;
|
||||||
|
|
||||||
if (larb->larb_gen->need_larbid) {
|
|
||||||
err = of_property_read_u32(dev->of_node, "mediatek,larb-id",
|
|
||||||
&larb->larbid);
|
|
||||||
if (err) {
|
|
||||||
dev_err(dev, "missing larbid property\n");
|
|
||||||
return err;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
smi_node = of_parse_phandle(dev->of_node, "mediatek,smi", 0);
|
smi_node = of_parse_phandle(dev->of_node, "mediatek,smi", 0);
|
||||||
if (!smi_node)
|
if (!smi_node)
|
||||||
return -EINVAL;
|
return -EINVAL;
|
||||||
|
|
|
@ -21,7 +21,6 @@ struct mtk_smi_larb_iommu {
|
||||||
};
|
};
|
||||||
|
|
||||||
struct mtk_smi_iommu {
|
struct mtk_smi_iommu {
|
||||||
unsigned int larb_nr;
|
|
||||||
struct mtk_smi_larb_iommu larb_imu[MTK_LARB_NR_MAX];
|
struct mtk_smi_larb_iommu larb_imu[MTK_LARB_NR_MAX];
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue
Block a user