On Thu, Sep 22, 2016 at 5:19 AM, Nathan Rossi <nat...@nathanrossi.com> wrote: > On Thu, Sep 22, 2016 at 6:40 AM, Alistair Francis > <alistair.fran...@xilinx.com> wrote: >> On Wed, Sep 21, 2016 at 11:09 AM, Nathan Rossi <nat...@nathanrossi.com> >> wrote: >>> Whilst according to the Zynq TRM this device covers a register region of >>> 0x000 - 0x120. The register region is also shared with XADCIF prefix >>> registers at 0x100 and above. Due to how the devcfg and the xadc devices >>> are implemented in QEMU these are separate models with individual mmio >>> regions. As such the region registered by the devcfg overlaps with the >>> xadc when initialized in a machine model (e.g. xilinx-zynq-a9). >>> >>> This patch fixes up the incorrect region size, where >>> XLNX_ZYNQ_DEVCFG_R_MAX is missing its '/ 4' causing it to be 0x460 in >>> size. As well as setting the region size to the 0x0 - 0x100 region so >>> that an xadc device instance can be registered in the correct region to >>> pair with the devcfg device instance. >>> >>> Mapping with XLNX_ZYNQ_DEVCFG_R_MAX = 0x118: >>> dev: xlnx.ps7-dev-cfg, id "" >>> mmio 00000000f8007000/0000000000000460 >>> dev: xlnx,zynq-xadc, id "" >>> mmio 00000000f8007100/0000000000000020 >>> >>> Mapping with XLNX_ZYNQ_DEVCFG_R_MAX = 0x100 / 4: >>> dev: xlnx.ps7-dev-cfg, id "" >>> mmio 00000000f8007000/0000000000000100 >>> dev: xlnx,zynq-xadc, id "" >>> mmio 00000000f8007100/0000000000000020 >>> >>> Signed-off-by: Nathan Rossi <nat...@nathanrossi.com> >> >> Good catch. What came up that caused you to find this? > > It appeared as a regression on the xilinx-zynq-a9 machine when booting > a Linux kernel/device-tree that made use of the xadc. It hangs during > kernel boot when it attempts to access the xadc registers.
Good catch, thanks for fixing this. Thanks, Alistair > > Regards, > Nathan > >> >> Can this go via the target-arm queue Peter? >> >> Reviewed-by: Alistair Francis <alistair.fran...@xilinx.com> >> >> Thanks, >> >> Alistair >> >>> --- >>> include/hw/dma/xlnx-zynq-devcfg.h | 2 +- >>> 1 file changed, 1 insertion(+), 1 deletion(-) >>> >>> diff --git a/include/hw/dma/xlnx-zynq-devcfg.h >>> b/include/hw/dma/xlnx-zynq-devcfg.h >>> index d40e5c8df6..9f5119a89a 100644 >>> --- a/include/hw/dma/xlnx-zynq-devcfg.h >>> +++ b/include/hw/dma/xlnx-zynq-devcfg.h >>> @@ -34,7 +34,7 @@ >>> #define XLNX_ZYNQ_DEVCFG(obj) \ >>> OBJECT_CHECK(XlnxZynqDevcfg, (obj), TYPE_XLNX_ZYNQ_DEVCFG) >>> >>> -#define XLNX_ZYNQ_DEVCFG_R_MAX 0x118 >>> +#define XLNX_ZYNQ_DEVCFG_R_MAX (0x100 / 4) >>> >>> #define XLNX_ZYNQ_DEVCFG_DMA_CMD_FIFO_LEN 10 >>> >>> -- >>> 2.9.3 >>> >