soft_uart: implement OSMO_SUART_PARITY_{MARK,SPACE}

Change-Id: I4c8fe5bfdcc2f4eb52c259d1e62d06684cd8f823
Related: OS#4396
diff --git a/src/core/soft_uart.c b/src/core/soft_uart.c
index bc563ca..c94070f 100644
--- a/src/core/soft_uart.c
+++ b/src/core/soft_uart.c
@@ -153,6 +153,16 @@
 			if (suart->rx.parity_bit == bit)
 				suart->rx.flags |= OSMO_SUART_F_PARITY_ERROR;
 			break;
+		case OSMO_SUART_PARITY_MARK:
+			/* parity bit must always be 1 */
+			if (bit != 1)
+				suart->rx.flags |= OSMO_SUART_F_PARITY_ERROR;
+			break;
+		case OSMO_SUART_PARITY_SPACE:
+			/* parity bit must always be 0 */
+			if (bit != 0)
+				suart->rx.flags |= OSMO_SUART_F_PARITY_ERROR;
+			break;
 		case OSMO_SUART_PARITY_NONE: /* shall not happen */
 		default:
 			OSMO_ASSERT(0);
@@ -238,6 +248,14 @@
 			/* number of 1-bits (in both data and parity) shall be odd */
 			tx_bit = !suart->tx.parity_bit;
 			break;
+		case OSMO_SUART_PARITY_MARK:
+			/* parity bit must always be 1 */
+			tx_bit = 1;
+			break;
+		case OSMO_SUART_PARITY_SPACE:
+			/* parity bit must always be 0 */
+			tx_bit = 0;
+			break;
 		case OSMO_SUART_PARITY_NONE:
 		default: /* shall not happen */
 			OSMO_ASSERT(0);