diff options
author | andrew <andrew@FreeBSD.org> | 2015-04-11 17:16:23 +0000 |
---|---|---|
committer | andrew <andrew@FreeBSD.org> | 2015-04-11 17:16:23 +0000 |
commit | e2a65d5cfa2a52472daa9b9658f4fa10f742291f (patch) | |
tree | 3242f4dc9f4677a166d03c3acecc2475385f4f3d /sys/dev/uart/uart_core.c | |
parent | 7f65d178b4fad420cb01a2ff4b3163278d3025dc (diff) | |
download | FreeBSD-src-e2a65d5cfa2a52472daa9b9658f4fa10f742291f.zip FreeBSD-src-e2a65d5cfa2a52472daa9b9658f4fa10f742291f.tar.gz |
Add support for the uart classes to set their default register shift value.
This is needed with the pl011 driver. Before this change it would default
to a shift of 0, however the hardware places the registers at 4-byte
addresses meaning the value should be 2.
This patch fixes this for the pl011 when configured using the fdt. The
other drivers have a default value of 0 to keep this a no-op.
MFC after: 1 week
Diffstat (limited to 'sys/dev/uart/uart_core.c')
-rw-r--r-- | sys/dev/uart/uart_core.c | 6 |
1 files changed, 6 insertions, 0 deletions
diff --git a/sys/dev/uart/uart_core.c b/sys/dev/uart/uart_core.c index eea2d8c..bbb06ff 100644 --- a/sys/dev/uart/uart_core.c +++ b/sys/dev/uart/uart_core.c @@ -88,6 +88,12 @@ uart_getrange(struct uart_class *uc) return ((uc != NULL) ? uc->uc_range : 0); } +u_int +uart_getregshift(struct uart_class *uc) +{ + return ((uc != NULL) ? uc->uc_rshift : 0); +} + /* * Schedule a soft interrupt. We do this on the 0 to !0 transition * of the TTY pending interrupt status. |