Skip to contentSkip to conversation

More SM501 improvements

PATCH Applied BALATON Zoltan 3 participants 5 messages Dec 16, 2017 – Dec 18, 2017

lore
Share & tools
lore
#0 lore raw

cover More SM501 improvements

Two simple patches to add some more registers that were found to be accessed by some guests.

BALATON Zoltan (3):
sm501: Add panel hardware cursor registers also to read function
sm501: Add some more unimplemented registers

#1 lore raw

PATCH 1/2 sm501: Add panel hardware cursor registers also to read function

These were forgotten when adding panel layer support.

---
 hw/display/sm501.c | 13 +++++++++++++
 1 file changed, 13 insertions(+)
hw/display/sm501.c +13 -0
index 7f18224..b9b6111 100644
@@ -956,6 +956,19 @@ static uint64_t sm501_disp_ctrl_read(void *opaque, hwaddr addr,
         ret = s->dc_panel_v_sync;
         break;
 
+    case SM501_DC_PANEL_HWC_ADDR:
+        ret = s->dc_panel_hwc_addr;
+        break;
+    case SM501_DC_PANEL_HWC_LOC:
+        ret = s->dc_panel_hwc_location;
+        break;
+    case SM501_DC_PANEL_HWC_COLOR_1_2:
+        ret = s->dc_panel_hwc_color_1_2;
+        break;
+    case SM501_DC_PANEL_HWC_COLOR_3:
+        ret = s->dc_panel_hwc_color_3;
+        break;
+
     case SM501_DC_VIDEO_CONTROL:
         ret = s->dc_video_control;
         break;
Signature · 1 line
2.7.6
Reviewed-by on v1 1/2
#2 lore raw

Re: [Qemu-devel] [Qemu-trivial] [PATCH 1/2] sm501: Add panel hardware cursor registers also to read function

Quoted 1 line · BALATON Zoltan

These were forgotten when adding panel layer support.

... in ffd39257018.

Quoted 2 lines

with reference to commit:

Quoted 29 lines
---
 hw/display/sm501.c | 13 +++++++++++++
 1 file changed, 13 insertions(+)
hw/display/sm501.c +13 -0
index 7f18224..b9b6111 100644
@@ -956,6 +956,19 @@ static uint64_t sm501_disp_ctrl_read(void *opaque, hwaddr addr,
         ret = s->dc_panel_v_sync;
         break;
 
+    case SM501_DC_PANEL_HWC_ADDR:
+        ret = s->dc_panel_hwc_addr;
+        break;
+    case SM501_DC_PANEL_HWC_LOC:
+        ret = s->dc_panel_hwc_location;
+        break;
+    case SM501_DC_PANEL_HWC_COLOR_1_2:
+        ret = s->dc_panel_hwc_color_1_2;
+        break;
+    case SM501_DC_PANEL_HWC_COLOR_3:
+        ret = s->dc_panel_hwc_color_3;
+        break;
+
     case SM501_DC_VIDEO_CONTROL:
         ret = s->dc_video_control;
         break;
#3 lore raw

PATCH 2/2 sm501: Add some more unimplemented registers

In reply to BALATON Zoltan

These are not really implemented (just return zero or default values) but add these so guests accessing them can run.

---
 hw/display/sm501.c | 17 +++++++++++++++++
 1 file changed, 17 insertions(+)
hw/display/sm501.c +17 -0
index b9b6111..4f7dc59b2 100644
@@ -795,6 +795,8 @@ static uint64_t sm501_system_config_read(void *opaque, hwaddr addr,
     case SM501_ARBTRTN_CONTROL:
         ret = s->arbitration_control;
         break;
+    case SM501_COMMAND_LIST_STATUS:
+        ret = 0x00180002; /* FIFOs are empty, everything idle */
     case SM501_IRQ_MASK:
         ret = s->irq_mask;
         break;
@@ -812,6 +814,9 @@ static uint64_t sm501_system_config_read(void *opaque, hwaddr addr,
     case SM501_POWER_MODE_CONTROL:
         ret = s->power_mode_control;
         break;
+    case SM501_ENDIAN_CONTROL:
+        ret = 0; /* Only default little endian mode is supported */
+        break;
 
     default:
         printf("sm501 system config : not implemented register read."
@@ -865,6 +870,12 @@ static void sm501_system_config_write(void *opaque, hwaddr addr,
     case SM501_POWER_MODE_CONTROL:
         s->power_mode_control = value & 0x00000003;
         break;
+    case SM501_ENDIAN_CONTROL:
+        if (value & 0x00000001) {
+            printf("sm501 system config : big endian mode not implemented.\n");
+            abort();
+        }
+        break;
 
     default:
         printf("sm501 system config : not implemented register write."
@@ -924,6 +935,9 @@ static uint64_t sm501_disp_ctrl_read(void *opaque, hwaddr addr,
     case SM501_DC_PANEL_PANNING_CONTROL:
         ret = s->dc_panel_panning_control;
         break;
+    case SM501_DC_PANEL_COLOR_KEY:
+        /* Not implemented yet */
+        break;
     case SM501_DC_PANEL_FB_ADDR:
         ret = s->dc_panel_fb_addr;
         break;
@@ -1035,6 +1049,9 @@ static void sm501_disp_ctrl_write(void *opaque, hwaddr addr,
     case SM501_DC_PANEL_PANNING_CONTROL:
         s->dc_panel_panning_control = value & 0xFF3FFF3F;
         break;
+    case SM501_DC_PANEL_COLOR_KEY:
+        /* Not implemented yet */
+        break;
     case SM501_DC_PANEL_FB_ADDR:
         s->dc_panel_fb_addr = value & 0x8FFFFFF0;
         break;
Signature · 1 line
2.7.6
Applied
#4 lore raw
In reply to BALATON Zoltan
Quoted 7 lines · BALATON Zoltan

Two simple patches to add some more registers that were found to be accessed by some guests.

BALATON Zoltan (3):
sm501: Add panel hardware cursor registers also to read function
sm501: Add some more unimplemented registers

Applied to ppc-for-2.12, with Philippe's suggested addition to the commit message.

Signature · 4 lines
David Gibson			| I'll have my music baroque, and my code
david AT gibson.dropbear.id.au	| minimalist, thank you.  NOT _the_ _other_
				| _way_ _around_!
http://www.ozlabs.org/~dgibson