> Subject: [PATCH v2] fsl-rio: add support for mapping inbound windows > > From: Martijn de Gouw <martijn.de.g...@prodrive.nl> > > Add support for mapping and unmapping of inbound rapidio windows. > > Signed-off-by: Martijn de Gouw <martijn.de.g...@prodrive-technologies.com> > --- > arch/powerpc/sysdev/fsl_rio.c | 92 > +++++++++++++++++++++++++++++++++++++++++ > arch/powerpc/sysdev/fsl_rio.h | 12 ++++++ > 2 files changed, 104 insertions(+)
> + /* check for conflicting ranges */ > + for (i = 0; i < RIO_INB_ATMU_COUNT; i++) { > + riwar = in_be32(&priv->inb_atmu_regs[i].riwar); > + if ((riwar & RIWAR_ENABLE) == 0) > + continue; > + win_start = ((u64)(in_be32(&priv->inb_atmu_regs[i].riwbar) & > RIWBAR_BADD_MASK)) > + << RIWBAR_BADD_VAL_SHIFT; > + win_end = win_start + ((1 << ((riwar & RIWAR_SIZE_MASK) + 1)) - > 1); > + if (rstart < win_end && (rstart + size) > win_start) > + return -EINVAL; > + } For the inbound window, the base address must be aligned based on the size selected in the window size bits. So I think it will be better if you can check the alignment. > @@ -598,6 +687,8 @@ int fsl_rio_setup(struct platform_device *dev) > RIO_ATMU_REGS_PORT2_OFFSET)); > > priv->maint_atmu_regs = priv->atmu_regs + 1; > + priv->inb_atmu_regs = (struct rio_inb_atmu_regs *) > + (priv->regs_win + RIO_INB_ATMU_REGS_OFFSET); The RIO_INB_ATMU_REGS_OFFSET is just for port 1, I think the port 2 also should be supported. Best Regards, Liu Gang _______________________________________________ Linuxppc-dev mailing list Linuxppc-dev@lists.ozlabs.org https://lists.ozlabs.org/listinfo/linuxppc-dev