svn commit: r262698 - stable/10/sys/arm/at91

Warner Losh imp at FreeBSD.org
Sun Mar 2 23:09:37 UTC 2014


Author: imp
Date: Sun Mar  2 23:09:36 2014
New Revision: 262698
URL: http://svnweb.freebsd.org/changeset/base/262698

Log:
  MRC: r260886
  
  Merge only the uart_dev_at91usart.c part of this revision,
  since it has nothing to do with the commit log and was included
  by mistake there.
  
  This connects the new grab/ungrab upcalls that were revised
  in uart to fix mountroot>.

Modified:
  stable/10/sys/arm/at91/uart_dev_at91usart.c
Directory Properties:
  stable/10/   (props changed)

Modified: stable/10/sys/arm/at91/uart_dev_at91usart.c
==============================================================================
--- stable/10/sys/arm/at91/uart_dev_at91usart.c	Sun Mar  2 22:59:34 2014	(r262697)
+++ stable/10/sys/arm/at91/uart_dev_at91usart.c	Sun Mar  2 23:09:36 2014	(r262698)
@@ -219,20 +219,6 @@ at91_usart_param(struct uart_bas *bas, i
 	return (0);
 }
 
-static void
-at91_usart_grab(struct uart_bas *bas)
-{
-
-	WR4(bas, USART_IDR, USART_CSR_RXRDY);
-}
-
-static void
-at91_usart_ungrab(struct uart_bas *bas)
-{
-
-	WR4(bas, USART_IER, USART_CSR_RXRDY);
-}
-
 static struct uart_ops at91_usart_ops = {
 	.probe = at91_usart_probe,
 	.init = at91_usart_init,
@@ -240,8 +226,6 @@ static struct uart_ops at91_usart_ops = 
 	.putc = at91_usart_putc,
 	.rxready = at91_usart_rxready,
 	.getc = at91_usart_getc,
-	.grab = at91_usart_grab,
-	.ungrab = at91_usart_ungrab,
 };
 
 static int
@@ -331,6 +315,8 @@ static int at91_usart_bus_param(struct u
 static int at91_usart_bus_receive(struct uart_softc *);
 static int at91_usart_bus_setsig(struct uart_softc *, int);
 static int at91_usart_bus_transmit(struct uart_softc *);
+static void at91_usart_bus_grab(struct uart_softc *);
+static void at91_usart_bus_ungrab(struct uart_softc *);
 
 static kobj_method_t at91_usart_methods[] = {
 	KOBJMETHOD(uart_probe,		at91_usart_bus_probe),
@@ -343,6 +329,8 @@ static kobj_method_t at91_usart_methods[
 	KOBJMETHOD(uart_receive,	at91_usart_bus_receive),
 	KOBJMETHOD(uart_setsig,		at91_usart_bus_setsig),
 	KOBJMETHOD(uart_transmit,	at91_usart_bus_transmit),
+	KOBJMETHOD(uart_grab,		at91_usart_bus_grab),
+	KOBJMETHOD(uart_ungrab,		at91_usart_bus_ungrab),
 
 	KOBJMETHOD_END
 };
@@ -815,6 +803,25 @@ at91_usart_bus_ioctl(struct uart_softc *
 	return (EINVAL);
 }
 
+
+static void
+at91_usart_bus_grab(struct uart_softc *sc)
+{
+
+	uart_lock(sc->sc_hwmtx);
+	WR4(&sc->sc_bas, USART_IDR, USART_CSR_RXRDY);
+	uart_unlock(sc->sc_hwmtx);
+}
+
+static void
+at91_usart_bus_ungrab(struct uart_softc *sc)
+{
+
+	uart_lock(sc->sc_hwmtx);
+	WR4(&sc->sc_bas, USART_IER, USART_CSR_RXRDY);
+	uart_unlock(sc->sc_hwmtx);
+}
+
 struct uart_class at91_usart_class = {
 	"at91_usart",
 	at91_usart_methods,


More information about the svn-src-all mailing list