[PATCH] hw/char/pl011: add support for sending break

Jan Luebbe posted 1 patch 2 years, 9 months ago
Test checkpatch passed
Patches applied successfully (tree, apply log)
git fetch https://github.com/patchew-project/qemu tags/patchew/20210806144700.3751979-1-jlu@pengutronix.de
Maintainers: Paolo Bonzini <pbonzini@redhat.com>, "Marc-André Lureau" <marcandre.lureau@redhat.com>, Peter Maydell <peter.maydell@linaro.org>
hw/char/pl011.c | 6 ++++++
1 file changed, 6 insertions(+)
[PATCH] hw/char/pl011: add support for sending break
Posted by Jan Luebbe 2 years, 9 months ago
Break events are currently only handled by chardev/char-serial.c, so we
just ignore errors, which results in no behaviour change for other
chardevs.

Signed-off-by: Jan Luebbe <jlu@pengutronix.de>
---
 hw/char/pl011.c | 6 ++++++
 1 file changed, 6 insertions(+)

diff --git a/hw/char/pl011.c b/hw/char/pl011.c
index dc85527a5f92..6e2d7f75095c 100644
--- a/hw/char/pl011.c
+++ b/hw/char/pl011.c
@@ -26,6 +26,7 @@
 #include "hw/qdev-properties-system.h"
 #include "migration/vmstate.h"
 #include "chardev/char-fe.h"
+#include "chardev/char-serial.h"
 #include "qemu/log.h"
 #include "qemu/module.h"
 #include "trace.h"
@@ -231,6 +232,11 @@ static void pl011_write(void *opaque, hwaddr offset,
             s->read_count = 0;
             s->read_pos = 0;
         }
+        if ((s->lcr ^ value) & 0x1) {
+            int break_enable = value & 0x1;
+            qemu_chr_fe_ioctl(&s->chr, CHR_IOCTL_SERIAL_SET_BREAK,
+                              &break_enable);
+        }
         s->lcr = value;
         pl011_set_read_trigger(s);
         break;
-- 
2.30.2


Re: [PATCH] hw/char/pl011: add support for sending break
Posted by Peter Maydell 2 years, 9 months ago
On Fri, 6 Aug 2021 at 15:47, Jan Luebbe <jlu@pengutronix.de> wrote:
>
> Break events are currently only handled by chardev/char-serial.c, so we
> just ignore errors, which results in no behaviour change for other
> chardevs.
>
> Signed-off-by: Jan Luebbe <jlu@pengutronix.de>


Applied to target-arm.next for 6.2, thanks.

If you're connecting the pl011 to the serial backend, you might
also need to implement the CHR_IOCTL_SERIAL_SET_PARAMS handling
so that when the guest sets the baud rate etc it actually works...
CHR_IOCTL_SERIAL_SET_TIOCM and _GET_TIOCM to wire up the flow control
signals will also be helpful I suspect.

-- PMM