XilinxProcessorIPLib/drivers/aienginev2/src/interrupt/xaie_interrupt.c
AieRC XAie_IntrCtrlL1BroadcastBlock(XAie_DevInst *DevInst, XAie_LocType Loc,
		XAie_BroadcastSw Switch, u32 ChannelBitMap)
{
	u64 RegAddr;
	u32 RegOffset;
	u8 TileType;
	const XAie_L1IntrMod *L1IntrMod;

	if((DevInst == XAIE_NULL) ||
			(DevInst->IsReady != XAIE_COMPONENT_IS_READY)) {
		XAIE_ERROR("Invalid device instance\n");
		return XAIE_INVALID_ARGS;
	}

	TileType = DevInst->DevOps->GetTTypefromLoc(DevInst, Loc);
	if(TileType == XAIEGBL_TILE_TYPE_MAX) {
		XAIE_ERROR("Invalid tile type\n");
		return XAIE_INVALID_TILE;
	}

	L1IntrMod = DevInst->DevProp.DevMod[TileType].L1IntrMod;
	if(L1IntrMod == NULL) {
		XAIE_ERROR("Invalid tile type\n");
		return XAIE_INVALID_ARGS;
	}

	if(ChannelBitMap >= (XAIE_ENABLE << L1IntrMod->NumBroadcastIds)) {
		XAIE_ERROR("Invalid channel bitmap\n");
		return XAIE_INVALID_ARGS;
	}

	RegOffset = L1IntrMod->BaseBroadcastBlockRegOff +
						Switch * L1IntrMod->SwOff;
	RegAddr = _XAie_GetTileAddr(DevInst, Loc.Row, Loc.Col) + RegOffset;

	return XAie_Write32(DevInst, RegAddr, ChannelBitMap);
}
/*****************************************************************************/
/**
*
* This API blocks broadcast signals from AIE array at the first level interrupt
* controller. Unlike the tile switch, switches in the PL module have the ability
* to mask incoming signals from the AIE Tile after they have been passed to the
* first level interrupt handler. This prevents pollution of the broadcast
* network in case of interrupt usage.
*
* @param	DevInst: Device Instance
* @param	Loc: Location of AIE Tile
* @param	Switch: Switch in the given module. For shim tile value could be
*			XAIE_EVENT_SWITCH_A or XAIE_EVENT_SWITCH_B.
* @param	ChannelBitMap: Bitmap to block broadcast channels.
*
* @return	XAIE_OK on success, error code on failure.
*
* @note		None.
*
******************************************************************************/
This API blocks broadcast signals from AIE array at the first level interrupt
controller. Unlike the tile switch, switches in the PL module have the ability
to mask incoming signals from the AIE Tile after they have been passed to the
first level interrupt handler. This prevents pollution of the broadcast
network in case of interrupt usage.
This API blocks broadcast signals from AIE array at the first level interrupt controller . Unlike the tile switch switches in the PL module have the ability to mask incoming signals from the AIE Tile after they have been passed to the first level interrupt handler . This prevents pollution of the broadcast network in case of interrupt usage .
AieRC XAie_IntrCtrlL1BroadcastBlock(XAie_DevInst *DevInst, XAie_LocType Loc,
		XAie_BroadcastSw Switch, u32 ChannelBitMap)
{
	u64 RegAddr;
	u32 RegOffset;
	u8 TileType;
	const XAie_L1IntrMod *L1IntrMod;
	if((DevInst == XAIE_NULL) ||
			(DevInst->IsReady != XAIE_COMPONENT_IS_READY)) {
		XAIE_ERROR("Invalid device instance\n");
		return XAIE_INVALID_ARGS;
	}
	TileType = DevInst->DevOps->GetTTypefromLoc(DevInst, Loc);
	if(TileType == XAIEGBL_TILE_TYPE_MAX) {
		XAIE_ERROR("Invalid tile type\n");
		return XAIE_INVALID_TILE;
	}
	L1IntrMod = DevInst->DevProp.DevMod[TileType].L1IntrMod;
	if(L1IntrMod == NULL) {
		XAIE_ERROR("Invalid tile type\n");
		return XAIE_INVALID_ARGS;
	}
	if(ChannelBitMap >= (XAIE_ENABLE << L1IntrMod->NumBroadcastIds)) {
		XAIE_ERROR("Invalid channel bitmap\n");
		return XAIE_INVALID_ARGS;
	}
	RegOffset = L1IntrMod->BaseBroadcastBlockRegOff +
						Switch * L1IntrMod->SwOff;
	RegAddr = _XAie_GetTileAddr(DevInst, Loc.Row, Loc.Col) + RegOffset;
	return XAie_Write32(DevInst, RegAddr, ChannelBitMap);
}
AieRC XAie_IntrCtrlL1BroadcastBlock ( XAie_DevInst * DevInst , XAie_LocType Loc , XAie_BroadcastSw Switch , u32 ChannelBitMap ) { u64 RegAddr ; u32 RegOffset ; u8 TileType ; const XAie_L1IntrMod * L1IntrMod ; if ( ( DevInst == XAIE_NULL ) || ( DevInst -> IsReady != XAIE_COMPONENT_IS_READY ) ) { XAIE_ERROR ( " \n " ) ; return XAIE_INVALID_ARGS ; } TileType = DevInst -> DevOps -> GetTTypefromLoc ( DevInst , Loc ) ; if ( TileType == XAIEGBL_TILE_TYPE_MAX ) { XAIE_ERROR ( " \n " ) ; return XAIE_INVALID_TILE ; } L1IntrMod = DevInst -> DevProp . DevMod [ TileType ] . L1IntrMod ; if ( L1IntrMod == NULL ) { XAIE_ERROR ( " \n " ) ; return XAIE_INVALID_ARGS ; } if ( ChannelBitMap >= ( XAIE_ENABLE << L1IntrMod -> NumBroadcastIds ) ) { XAIE_ERROR ( " \n " ) ; return XAIE_INVALID_ARGS ; } RegOffset = L1IntrMod -> BaseBroadcastBlockRegOff + Switch * L1IntrMod -> SwOff ; RegAddr = _XAie_GetTileAddr ( DevInst , Loc . Row , Loc . Col ) + RegOffset ; return XAie_Write32 ( DevInst , RegAddr , ChannelBitMap ) ; }
This API blocks broadcast signals from AIE array at the first level interrupt
controller.
This API blocks broadcast signals from AIE array at the first level interrupt controller .