On Tue, Jun 7, 2016 at 1:30 PM, <fred.kon...@greensocs.com> wrote: > From: KONRAD Frederic <fred.kon...@greensocs.com>
Hey Peter, These are all reviewed by Xilinx, this is ready to merge from our point of view. Thanks, Alistair > > This is the 9th version of this patch-set of the implementation of the Xilinx > DisplayPort and DPDMA. > > This 9th version fixes some minors issues. > > The fourth patch introduces an AUX bus needed by the DP to read the DPCD. > It's also possible to connect an I2C device on it to do I2C through AUX > commands. The drivers requires I2C broadcast write to be modeled as well which > seemed to be missing currently upstream. > > The tree can be cloned at: > g...@git.greensocs.com:fkonrad/xilinx_dp.git branch xilinx_dp_v9_release > > Details of the DPDMA part: > * DPDMA is implemented as a QEMU SYSBUS device. > * Interrupts are implemented except the axi error and fifo. > > Details of the XILINX-DP: > * DP is also implemented as a QEMU SYSBUS. Multiple memory regions are used > to > avoid having a single big region as there are holes in the DP memory map. > * An aux-bus has been implemented, it creates a memory map for aux slaves and > has an i2c bus (which is already implemented in QEMU). > * The normal programmable i2c clock and controller implementation is missing > from the QEMU tree so the easiest way for us was to implement a dummy-clk > driver in the kernel. It's a clock which does nothing but fakes a clock > such > that the DPDMA driver works. The patch will be send separately. > * The graphic plane works on channel 3, video on channel 0 and audios on > channel 4 and 5. > > Thanks, > Fred > > V8 -> V9 changes: > * globally: > * Rebased on current master (6ed5546fa7bf12c5b87ef76bafb86e1d77ed6e85). > * aux: > * Coding style fix. > > V7 -> V8 changes: > * globally: > * Rebased on current master (e854d0cf7847e70f5ed5dad5820fc1bbeda6f29e). > * include qemu/osdep.h. > * xlnx-dp: > * Coding style fix. > * Drop xlnx_dp_aux_get/set. > > V6 -> V7 changes: > * globally: > * Rebased on current master (0430891ce162b986c6e02a7729a942ecd2a32ca4). > * Pick Peter's patch-set and rebase it on broadcast patch. > * xlnx-dp: > * Print some unimplemented debug trace instead of aborting. > * zynq-mp: > * Set realized before map the device. > * Coding style fix. > * aux: > * Factorize i2c access with i2c_send_recv. > > V5 -> V6 changes: > * globally: > * Rebased on current master (38a762fec63fd5c035aae29ba9a77d357e21e4a7). > * Fix some coding style issues. > > V4 -> V5 changes: > * aux: > * Move the header include/hw => include/hw/misc > * dpcd: > * Move the header hw/display => include/hw/display > * i2c-ddc: > * Move the header hw/i2c => include/hw/i2c > * xlnx-dpdma: > * Move the header hw/dma => include/hw/dma > * Fix some styles issues. > * xlnx-dp: > * Move the header hw/display => include/hw/display > * globally: > * Rebased on current master (c49d3411faae8ffaab8f7e5db47405a008411c10). > > V3 -> V4 changes: > * xlnx_dpdma: > * Initialize operation_finished during reset. > * Add a function to trigger a VSYNC interrupt from the xlnx_dp. > * xlnx_dp: > * Fix the default pixman format for video buffer. > * Remove unused buffer. > * dpcd: > * Add the missing DPCD_LANE_X_STATUS. > * Set status field for all ports to avoid driver error. > * Use 4 lines by default. > * Use guest error in case of an outbound access. > * i2c broadcast: > * Use a list of device instead of relying on broadcast field to remove > duped > code. > * other: > * rebased on current master (774ee4772b6838b78741ea52d4bf26b8922244c5) > > V2 -> V3 changes: > * dpcd: > * Add a CONFIG_DPCD. > * i2c-ddc: > * Fill in VMSD. > * aux: > * Remove address field. > * Add a CONFIG_AUX. > * dpdma: > * Fill in VMSD. > * Some coding style changes. > * dp: > * Fill in VMSD. > * Coding style changes. > > V1 -> V2 changes: > * xlnx-zynqmp: > * Remove the dummy object_property_add_child(..). > * dpcd: > * Compile only when the ZYNQMP platform is compiled. > * Use qemu_log instead of printf. > * Compile test debug traces. > * Remove the unused current_reg. > * Remove the blank realize. > * Use dpcd_ prefixes instead of aux_ prefixes. > * Add a reset callback. > * Add the VMSD. > * Add size constraint in the MemoryRegionOps structure instead of > asserting. > * Style fixes. > * aux: > * Compile only when the ZYNQMP platform is compiled. > * Remove the class init and the class for aux-slave. > * dpdma: > * Compile only when the ZYNQMP platform is compiled. > * Unify per channel macro in one, simplify the switch case. > * Use extractXX. > * Make DPDMA_GBL an or'ed register. > * dp: > * Compile only when the ZYNQMP platform is compiled. > * Don't look at the audio channel count. > * Use a third pixman plane when we do blending. > * other: > * Drop the useless "console: add qemu_alloc_display_format." patch as > suggested by Gerd. > * Rebase on current master (f3e3b083d4c266ea864ae3c83da49d4086857679). > > KONRAD Frederic (7): > i2cbus: remove unused dev field > i2c: implement broadcast write > introduce aux-bus > introduce dpcd module > introduce xlnx-dpdma > introduce xlnx-dp > arm: xlnx-zynqmp: Add xlnx-dp and xlnx-dpdma > > Peter Crosthwaite (1): > i2c: Factor our send() and recv() common logic > > Peter Maydell (1): > hw/i2c-ddc.c: Implement DDC I2C slave > > default-configs/aarch64-softmmu.mak | 3 + > hw/arm/xlnx-zynqmp.c | 32 +- > hw/display/Makefile.objs | 2 + > hw/display/dpcd.c | 173 +++++ > hw/display/xlnx_dp.c | 1336 > +++++++++++++++++++++++++++++++++++ > hw/dma/Makefile.objs | 1 + > hw/dma/xlnx_dpdma.c | 794 +++++++++++++++++++++ > hw/i2c/Makefile.objs | 1 + > hw/i2c/core.c | 158 +++-- > hw/i2c/i2c-ddc.c | 307 ++++++++ > hw/misc/Makefile.objs | 1 + > hw/misc/aux.c | 292 ++++++++ > include/hw/arm/xlnx-zynqmp.h | 4 + > include/hw/display/dpcd.h | 105 +++ > include/hw/display/xlnx_dp.h | 109 +++ > include/hw/dma/xlnx_dpdma.h | 85 +++ > include/hw/i2c/i2c-ddc.h | 38 + > include/hw/i2c/i2c.h | 1 + > include/hw/misc/aux.h | 128 ++++ > 19 files changed, 3508 insertions(+), 62 deletions(-) > create mode 100644 hw/display/dpcd.c > create mode 100644 hw/display/xlnx_dp.c > create mode 100644 hw/dma/xlnx_dpdma.c > create mode 100644 hw/i2c/i2c-ddc.c > create mode 100644 hw/misc/aux.c > create mode 100644 include/hw/display/dpcd.h > create mode 100644 include/hw/display/xlnx_dp.h > create mode 100644 include/hw/dma/xlnx_dpdma.h > create mode 100644 include/hw/i2c/i2c-ddc.h > create mode 100644 include/hw/misc/aux.h > > -- > 1.8.3.1 > >