[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-ppc] [PULL 07/16] sm501: Log unimplemented raster operation modes
From: |
David Gibson |
Subject: |
[Qemu-ppc] [PULL 07/16] sm501: Log unimplemented raster operation modes |
Date: |
Mon, 9 Jul 2018 17:43:41 +1000 |
From: Sebastian Bauer <address@hidden>
The sm501 currently implements only a very limited set of raster operation
modes. After this change, unknown raster operation modes are logged so
these can be easily spotted.
Signed-off-by: BALATON Zoltan <address@hidden>
Signed-off-by: David Gibson <address@hidden>
---
hw/display/sm501.c | 23 +++++++++++++++++++++++
1 file changed, 23 insertions(+)
diff --git a/hw/display/sm501.c b/hw/display/sm501.c
index 0b44d95169..ebd139006e 100644
--- a/hw/display/sm501.c
+++ b/hw/display/sm501.c
@@ -706,6 +706,8 @@ static void sm501_2d_operation(SM501State *s)
int format_flags = (s->twoD_stretch >> 20) & 0x3;
int addressing = (s->twoD_stretch >> 16) & 0xF;
int rop_mode = (s->twoD_control >> 15) & 0x1; /* 1 for rop2, else rop3 */
+ /* 1 if rop2 source is the pattern, otherwise the source is the bitmap */
+ int rop2_source_is_pattern = (s->twoD_control >> 14) & 0x1;
int rop = s->twoD_control & 0xFF;
/* get frame buffer info */
@@ -719,6 +721,27 @@ static void sm501_2d_operation(SM501State *s)
abort();
}
+ if (rop_mode == 0) {
+ if (rop != 0xcc) {
+ /* Anything other than plain copies are not supported */
+ qemu_log_mask(LOG_UNIMP, "sm501: rop3 mode with rop %x is not "
+ "supported.\n", rop);
+ }
+ } else {
+ if (rop2_source_is_pattern && rop != 0x5) {
+ /* For pattern source, we support only inverse dest */
+ qemu_log_mask(LOG_UNIMP, "sm501: rop2 source being the pattern and
"
+ "rop %x is not supported.\n", rop);
+ } else {
+ if (rop != 0x5 && rop != 0xc) {
+ /* Anything other than plain copies or inverse dest is not
+ * supported */
+ qemu_log_mask(LOG_UNIMP, "sm501: rop mode %x is not "
+ "supported.\n", rop);
+ }
+ }
+ }
+
if ((s->twoD_source_base & 0x08000000) ||
(s->twoD_destination_base & 0x08000000)) {
printf("%s: only local memory is supported.\n", __func__);
--
2.17.1
- [Qemu-ppc] [PULL 00/16] ppc-for-3.0 queue 20180709, David Gibson, 2018/07/09
- [Qemu-ppc] [PULL 04/16] sm501: Perform a full update after palette change, David Gibson, 2018/07/09
- [Qemu-ppc] [PULL 02/16] spapr/vio: quiet down the "irq" property accessors, David Gibson, 2018/07/09
- [Qemu-ppc] [PULL 05/16] sm501: Use values from the pitch register for 2D operations, David Gibson, 2018/07/09
- [Qemu-ppc] [PULL 12/16] ppc: fix default VGA display for PReP machines, David Gibson, 2018/07/09
- [Qemu-ppc] [PULL 03/16] sm501: Implement i2c part for reading monitor EDID, David Gibson, 2018/07/09
- [Qemu-ppc] [PULL 06/16] sm501: Implement negated destination raster operation mode, David Gibson, 2018/07/09
- [Qemu-ppc] [PULL 13/16] sam460ex: Update u-boot-sam460ex firmware, David Gibson, 2018/07/09
- [Qemu-ppc] [PULL 01/16] ppc: fix default VGA display for Mac machines, David Gibson, 2018/07/09
- [Qemu-ppc] [PULL 09/16] sm501: Set updated region dirty after 2D operation, David Gibson, 2018/07/09
- [Qemu-ppc] [PULL 07/16] sm501: Log unimplemented raster operation modes,
David Gibson <=
- [Qemu-ppc] [PULL 11/16] target/ppc: fix build on ppc64 host, David Gibson, 2018/07/09
- [Qemu-ppc] [PULL 10/16] ppc440_uc: Fix a copy/paste error, David Gibson, 2018/07/09
- [Qemu-ppc] [PULL 14/16] sam460ex: Check for errors from libfdt functions, David Gibson, 2018/07/09
- [Qemu-ppc] [PULL 16/16] sam460ex: Make sam460ex_load_device_tree() handle all errors internally, David Gibson, 2018/07/09
- [Qemu-ppc] [PULL 08/16] sm501: Fix support for non-zero frame buffer start address, David Gibson, 2018/07/09
- [Qemu-ppc] [PULL 15/16] sam460ex: Don't check for errors from qemu_fdt_*(), David Gibson, 2018/07/09
- Re: [Qemu-ppc] [PULL 00/16] ppc-for-3.0 queue 20180709, Peter Maydell, 2018/07/09