|
@@ -278,6 +278,40 @@ static int mc_fixup_dpl_mac_addr(void *blob, int dpmac_id,
|
|
MC_FIXUP_DPL);
|
|
MC_FIXUP_DPL);
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+void fdt_fsl_mc_fixup_iommu_map_entry(void *blob)
|
|
|
|
+{
|
|
|
|
+ u32 *prop;
|
|
|
|
+ u32 iommu_map[4];
|
|
|
|
+ int offset;
|
|
|
|
+ int lenp;
|
|
|
|
+
|
|
|
|
+ /* find fsl-mc node */
|
|
|
|
+ offset = fdt_path_offset(blob, "/soc/fsl-mc");
|
|
|
|
+ if (offset < 0)
|
|
|
|
+ offset = fdt_path_offset(blob, "/fsl-mc");
|
|
|
|
+ if (offset < 0) {
|
|
|
|
+ printf("%s: fsl-mc: ERR: fsl-mc node not found in DT, err %d\n",
|
|
|
|
+ __func__, offset);
|
|
|
|
+ return;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ prop = fdt_getprop_w(blob, offset, "iommu-map", &lenp);
|
|
|
|
+ if (!prop) {
|
|
|
|
+ debug("%s: fsl-mc: ERR: missing iommu-map in fsl-mc bus node\n",
|
|
|
|
+ __func__);
|
|
|
|
+ return;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ iommu_map[0] = cpu_to_fdt32(FSL_DPAA2_STREAM_ID_START);
|
|
|
|
+ iommu_map[1] = *++prop;
|
|
|
|
+ iommu_map[2] = cpu_to_fdt32(FSL_DPAA2_STREAM_ID_START);
|
|
|
|
+ iommu_map[3] = cpu_to_fdt32(FSL_DPAA2_STREAM_ID_END -
|
|
|
|
+ FSL_DPAA2_STREAM_ID_START + 1);
|
|
|
|
+
|
|
|
|
+ fdt_setprop_inplace(blob, offset, "iommu-map",
|
|
|
|
+ iommu_map, sizeof(iommu_map));
|
|
|
|
+}
|
|
|
|
+
|
|
static int mc_fixup_dpc_mac_addr(void *blob, int dpmac_id,
|
|
static int mc_fixup_dpc_mac_addr(void *blob, int dpmac_id,
|
|
struct eth_device *eth_dev)
|
|
struct eth_device *eth_dev)
|
|
{
|
|
{
|