mirror of https://github.com/xemu-project/xemu.git
hw/mips/malta: Split FPGA LEDs/ASCII display updates
No need to refresh the ASCII bar when a LED is toggled (and vice versa). Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org> Reviewed-by: Richard Henderson <richard.henderson@linaro.org> Message-Id: <20230104133935.4639-3-philmd@linaro.org>
This commit is contained in:
parent
3db29dcac2
commit
e7a65ba694
|
@ -106,11 +106,10 @@ static struct _loaderparams {
|
||||||
} loaderparams;
|
} loaderparams;
|
||||||
|
|
||||||
/* Malta FPGA */
|
/* Malta FPGA */
|
||||||
static void malta_fpga_update_display(void *opaque)
|
static void malta_fpga_update_display_leds(MaltaFPGAState *s)
|
||||||
{
|
{
|
||||||
char leds_text[9];
|
char leds_text[9];
|
||||||
int i;
|
int i;
|
||||||
MaltaFPGAState *s = opaque;
|
|
||||||
|
|
||||||
for (i = 7 ; i >= 0 ; i--) {
|
for (i = 7 ; i >= 0 ; i--) {
|
||||||
if (s->leds & (1 << i)) {
|
if (s->leds & (1 << i)) {
|
||||||
|
@ -123,6 +122,10 @@ static void malta_fpga_update_display(void *opaque)
|
||||||
|
|
||||||
qemu_chr_fe_printf(&s->display, "\e[H\n\n|\e[32m%-8.8s\e[00m|\r\n",
|
qemu_chr_fe_printf(&s->display, "\e[H\n\n|\e[32m%-8.8s\e[00m|\r\n",
|
||||||
leds_text);
|
leds_text);
|
||||||
|
}
|
||||||
|
|
||||||
|
static void malta_fpga_update_display_ascii(MaltaFPGAState *s)
|
||||||
|
{
|
||||||
qemu_chr_fe_printf(&s->display, "\n\n\n\n|\e[31m%-8.8s\e[00m|",
|
qemu_chr_fe_printf(&s->display, "\n\n\n\n|\e[31m%-8.8s\e[00m|",
|
||||||
s->display_text);
|
s->display_text);
|
||||||
}
|
}
|
||||||
|
@ -457,13 +460,13 @@ static void malta_fpga_write(void *opaque, hwaddr addr,
|
||||||
/* LEDBAR Register */
|
/* LEDBAR Register */
|
||||||
case 0x00408:
|
case 0x00408:
|
||||||
s->leds = val & 0xff;
|
s->leds = val & 0xff;
|
||||||
malta_fpga_update_display(s);
|
malta_fpga_update_display_leds(s);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
/* ASCIIWORD Register */
|
/* ASCIIWORD Register */
|
||||||
case 0x00410:
|
case 0x00410:
|
||||||
snprintf(s->display_text, 9, "%08X", (uint32_t)val);
|
snprintf(s->display_text, 9, "%08X", (uint32_t)val);
|
||||||
malta_fpga_update_display(s);
|
malta_fpga_update_display_ascii(s);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
/* ASCIIPOS0 to ASCIIPOS7 Registers */
|
/* ASCIIPOS0 to ASCIIPOS7 Registers */
|
||||||
|
@ -476,7 +479,7 @@ static void malta_fpga_write(void *opaque, hwaddr addr,
|
||||||
case 0x00448:
|
case 0x00448:
|
||||||
case 0x00450:
|
case 0x00450:
|
||||||
s->display_text[(saddr - 0x00418) >> 3] = (char) val;
|
s->display_text[(saddr - 0x00418) >> 3] = (char) val;
|
||||||
malta_fpga_update_display(s);
|
malta_fpga_update_display_ascii(s);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
/* SOFTRES Register */
|
/* SOFTRES Register */
|
||||||
|
|
Loading…
Reference in New Issue