u-boot: fixup the iommu-map property of fsl-mc node
The iommu-map property in the fsl-mc node is updated by valid stream-ids by u-boot. This patch is to fixup this property for LS208x and LS1088. Signed-off-by: Nipun Gupta <nipun.gupta@nxp.com> Reviewed-by: York Sun <york.sun@nxp.com>
This commit is contained in:
parent
1deae0c439
commit
a78df40cba
@ -35,6 +35,9 @@
|
||||
* -DPAA2
|
||||
* -u-boot will allocate a range of stream IDs to be used by the Management
|
||||
* Complex for containers and will set these values in the MC DPC image.
|
||||
* -u-boot will fixup the iommu-map property in the fsl-mc node in the
|
||||
* device tree (see Documentation/devicetree/bindings/misc/fsl,qoriq-mc.txt
|
||||
* for more info on the msi-map definition)
|
||||
* -the MC is responsible for allocating and setting up 'isolation context
|
||||
* IDs (ICIDs) based on the allocated stream IDs for all DPAA2 devices.
|
||||
*
|
||||
|
@ -575,6 +575,8 @@ int ft_board_setup(void *blob, bd_t *bd)
|
||||
|
||||
fdt_fixup_memory_banks(blob, base, size, CONFIG_NR_DRAM_BANKS);
|
||||
|
||||
fdt_fsl_mc_fixup_iommu_map_entry(blob);
|
||||
|
||||
fsl_fdt_fixup_flash(blob);
|
||||
|
||||
#ifdef CONFIG_FSL_MC_ENET
|
||||
|
@ -127,6 +127,8 @@ int ft_board_setup(void *blob, bd_t *bd)
|
||||
|
||||
fdt_fixup_memory_banks(blob, base, size, 2);
|
||||
|
||||
fdt_fsl_mc_fixup_iommu_map_entry(blob);
|
||||
|
||||
#if defined(CONFIG_FSL_MC_ENET) && !defined(CONFIG_SPL_BUILD)
|
||||
fdt_fixup_board_enet(blob);
|
||||
#endif
|
||||
|
@ -332,6 +332,8 @@ int ft_board_setup(void *blob, bd_t *bd)
|
||||
|
||||
fdt_fixup_memory_banks(blob, base, size, 2);
|
||||
|
||||
fdt_fsl_mc_fixup_iommu_map_entry(blob);
|
||||
|
||||
fsl_fdt_fixup_dr_usb(blob, bd);
|
||||
|
||||
#if defined(CONFIG_FSL_MC_ENET) && !defined(CONFIG_SPL_BUILD)
|
||||
|
@ -394,6 +394,8 @@ int ft_board_setup(void *blob, bd_t *bd)
|
||||
|
||||
fdt_fixup_memory_banks(blob, base, size, 2);
|
||||
|
||||
fdt_fsl_mc_fixup_iommu_map_entry(blob);
|
||||
|
||||
fsl_fdt_fixup_dr_usb(blob, bd);
|
||||
|
||||
fsl_fdt_fixup_flash(blob);
|
||||
|
@ -278,6 +278,40 @@ static int mc_fixup_dpl_mac_addr(void *blob, int dpmac_id,
|
||||
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,
|
||||
struct eth_device *eth_dev)
|
||||
{
|
||||
|
@ -51,6 +51,7 @@ struct mc_ccsr_registers {
|
||||
u32 reg_error[];
|
||||
};
|
||||
|
||||
void fdt_fsl_mc_fixup_iommu_map_entry(void *blob);
|
||||
int get_mc_boot_status(void);
|
||||
int get_dpl_apply_status(void);
|
||||
#ifdef CONFIG_SYS_LS_MC_DRAM_AIOP_IMG_OFFSET
|
||||
|
Loading…
Reference in New Issue
Block a user