Module Name:    src
Committed By:   hkenken
Date:           Fri Sep  8 05:29:12 UTC 2017

Modified Files:
        src/sys/arch/arm/imx: files.imx31 files.imx51 files.imx6 files.imx7
            imx31_uart.c imx51_uart.c imx6_uart.c imx7_uart.c imxuart.c
            imxuartvar.h
        src/sys/arch/evbarm/imx7: imx7_machdep.c
        src/sys/arch/evbarm/kobo: kobo_machdep.c
        src/sys/arch/evbarm/netwalker: netwalker_machdep.c
        src/sys/arch/evbarm/nitrogen6: nitrogen6_machdep.c

Log Message:
- Move CFATTACH_DECL_NEW() from common uart driver.
- Rename : imxuart_cons_attach() -> imxuart_cnattach()


To generate a diff of this commit:
cvs rdiff -u -r1.7 -r1.8 src/sys/arch/arm/imx/files.imx31
cvs rdiff -u -r1.16 -r1.17 src/sys/arch/arm/imx/files.imx51
cvs rdiff -u -r1.10 -r1.11 src/sys/arch/arm/imx/files.imx6
cvs rdiff -u -r1.4 -r1.5 src/sys/arch/arm/imx/files.imx7
cvs rdiff -u -r1.2 -r1.3 src/sys/arch/arm/imx/imx31_uart.c \
    src/sys/arch/arm/imx/imx6_uart.c
cvs rdiff -u -r1.3 -r1.4 src/sys/arch/arm/imx/imx51_uart.c
cvs rdiff -u -r1.1 -r1.2 src/sys/arch/arm/imx/imx7_uart.c
cvs rdiff -u -r1.19 -r1.20 src/sys/arch/arm/imx/imxuart.c
cvs rdiff -u -r1.5 -r1.6 src/sys/arch/arm/imx/imxuartvar.h
cvs rdiff -u -r1.5 -r1.6 src/sys/arch/evbarm/imx7/imx7_machdep.c
cvs rdiff -u -r1.3 -r1.4 src/sys/arch/evbarm/kobo/kobo_machdep.c
cvs rdiff -u -r1.20 -r1.21 src/sys/arch/evbarm/netwalker/netwalker_machdep.c
cvs rdiff -u -r1.6 -r1.7 src/sys/arch/evbarm/nitrogen6/nitrogen6_machdep.c

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/sys/arch/arm/imx/files.imx31
diff -u src/sys/arch/arm/imx/files.imx31:1.7 src/sys/arch/arm/imx/files.imx31:1.8
--- src/sys/arch/arm/imx/files.imx31:1.7	Fri Mar 11 03:16:13 2011
+++ src/sys/arch/arm/imx/files.imx31	Fri Sep  8 05:29:12 2017
@@ -1,4 +1,4 @@
-#	$NetBSD: files.imx31,v 1.7 2011/03/11 03:16:13 bsh Exp $
+#	$NetBSD: files.imx31,v 1.8 2017/09/08 05:29:12 hkenken Exp $
 #
 # Configuration info for the Freescale i.MX31
 #
@@ -62,9 +62,9 @@ defparam opt_imx31clk.h IMX31_IPGCLK_FRE
 
 # iMX UART
 device	imxuart
-attach	imxuart at aips
+attach	imxuart at aips with imx31_uart
 file	arch/arm/imx/imxuart.c			imxuart	needs-flag
-file	arch/arm/imx/imx31_uart.c		imxuart
+file	arch/arm/imx/imx31_uart.c		imx31_uart
 defflag	opt_imxuart.h				IMXUARTCONSOLE
 
 attach	ehci at ahb with ehci_ahb : bus_dma_generic

Index: src/sys/arch/arm/imx/files.imx51
diff -u src/sys/arch/arm/imx/files.imx51:1.16 src/sys/arch/arm/imx/files.imx51:1.17
--- src/sys/arch/arm/imx/files.imx51:1.16	Fri Aug 18 21:45:25 2017
+++ src/sys/arch/arm/imx/files.imx51	Fri Sep  8 05:29:12 2017
@@ -1,4 +1,4 @@
-#	$NetBSD: files.imx51,v 1.16 2017/08/18 21:45:25 jakllsch Exp $
+#	$NetBSD: files.imx51,v 1.17 2017/09/08 05:29:12 hkenken Exp $
 #
 # Configuration info for the Freescale i.MX5x
 #
@@ -94,9 +94,9 @@ file	arch/arm/imx/imx_genfb.c	imx_genfb
 
 # iMX UART
 device	imxuart
-attach	imxuart at axi
+attach	imxuart at axi with imx51_uart
 file	arch/arm/imx/imxuart.c			imxuart	needs-flag
-file	arch/arm/imx/imx51_uart.c		imxuart
+file	arch/arm/imx/imx51_uart.c		imx51_uart
 defflag	opt_imxuart.h				IMXUARTCONSOLE
 
 # USB controller

Index: src/sys/arch/arm/imx/files.imx6
diff -u src/sys/arch/arm/imx/files.imx6:1.10 src/sys/arch/arm/imx/files.imx6:1.11
--- src/sys/arch/arm/imx/files.imx6:1.10	Fri Aug 18 21:45:25 2017
+++ src/sys/arch/arm/imx/files.imx6	Fri Sep  8 05:29:12 2017
@@ -1,4 +1,4 @@
-#	$NetBSD: files.imx6,v 1.10 2017/08/18 21:45:25 jakllsch Exp $
+#	$NetBSD: files.imx6,v 1.11 2017/09/08 05:29:12 hkenken Exp $
 #
 # Configuration info for the Freescale i.MX6
 #
@@ -74,9 +74,9 @@ file	arch/arm/imx/imx6_i2c.c			imxi2c
 
 # iMX UART
 device	imxuart
-attach	imxuart at axi
+attach	imxuart at axi with imx6_uart
 file	arch/arm/imx/imxuart.c			imxuart	needs-flag
-file	arch/arm/imx/imx6_uart.c		imxuart
+file	arch/arm/imx/imx6_uart.c		imx6_uart
 defflag opt_imxuart.h				IMXUARTCONSOLE
 
 # iMX6 10/100/1000-Mbps Ethernet MAC(ENET)

Index: src/sys/arch/arm/imx/files.imx7
diff -u src/sys/arch/arm/imx/files.imx7:1.4 src/sys/arch/arm/imx/files.imx7:1.5
--- src/sys/arch/arm/imx/files.imx7:1.4	Fri Aug 18 21:45:25 2017
+++ src/sys/arch/arm/imx/files.imx7	Fri Sep  8 05:29:12 2017
@@ -1,4 +1,4 @@
-#	$NetBSD: files.imx7,v 1.4 2017/08/18 21:45:25 jakllsch Exp $
+#	$NetBSD: files.imx7,v 1.5 2017/09/08 05:29:12 hkenken Exp $
 #
 # Configuration info for the Freescale i.MX7
 #
@@ -69,9 +69,9 @@ file	arch/arm/imx/imx7_i2c.c			imxi2c
 
 # iMX UART
 device	imxuart
-attach	imxuart at axi
+attach	imxuart at axi with imx7_uart
 file	arch/arm/imx/imxuart.c			imxuart	needs-flag
-file	arch/arm/imx/imx7_uart.c		imxuart
+file	arch/arm/imx/imx7_uart.c		imx7_uart
 defflag opt_imxuart.h				IMXUARTCONSOLE
 
 # iMX7 10/100/1000-Mbps Ethernet MAC(ENET)

Index: src/sys/arch/arm/imx/imx31_uart.c
diff -u src/sys/arch/arm/imx/imx31_uart.c:1.2 src/sys/arch/arm/imx/imx31_uart.c:1.3
--- src/sys/arch/arm/imx/imx31_uart.c:1.2	Sat Nov 27 13:37:27 2010
+++ src/sys/arch/arm/imx/imx31_uart.c	Fri Sep  8 05:29:12 2017
@@ -34,9 +34,14 @@
 #include <arm/imx/imxuartreg.h>
 #include <arm/imx/imxuartvar.h>
 
+static int imx31_uart_match(device_t, struct cfdata *, void *);
+static void imx31_uart_attach(device_t, device_t, void *);
+
+CFATTACH_DECL_NEW(imx31_uart, sizeof(struct imxuart_softc),
+    imx31_uart_match, imx31_uart_attach, NULL, NULL);
 
 int
-imxuart_match(device_t parent, struct cfdata *cf, void *aux)
+imx31_uart_match(device_t parent, struct cfdata *cf, void *aux)
 {
 	struct aips_attach_args * const aipsa = aux;
 
@@ -53,11 +58,11 @@ imxuart_match(device_t parent, struct cf
 }
 
 void
-imxuart_attach(device_t parent, device_t self, void *aux)
+imx31_uart_attach(device_t parent, device_t self, void *aux)
 {
 	struct aips_attach_args * aa = aux;
 
-	imxuart_attach_common(parent, self, 
+	imxuart_attach_common(parent, self,
 	    aa->aipsa_memt, aa->aipsa_addr, aa->aipsa_size, aa->aipsa_intr, 0);
 }
 
Index: src/sys/arch/arm/imx/imx6_uart.c
diff -u src/sys/arch/arm/imx/imx6_uart.c:1.2 src/sys/arch/arm/imx/imx6_uart.c:1.3
--- src/sys/arch/arm/imx/imx6_uart.c:1.2	Fri Jun  9 18:14:59 2017
+++ src/sys/arch/arm/imx/imx6_uart.c	Fri Sep  8 05:29:12 2017
@@ -1,4 +1,4 @@
-/*	$NetBSD: imx6_uart.c,v 1.2 2017/06/09 18:14:59 ryo Exp $	*/
+/*	$NetBSD: imx6_uart.c,v 1.3 2017/09/08 05:29:12 hkenken Exp $	*/
 
 /*
  * Copyright (c) 2013 Genetec Corporation.  All rights reserved.
@@ -35,8 +35,14 @@
 #include <arm/imx/imxuartreg.h>
 #include <arm/imx/imxuartvar.h>
 
+static int imx6_uart_match(device_t, struct cfdata *, void *);
+static void imx6_uart_attach(device_t, device_t, void *);
+
+CFATTACH_DECL_NEW(imx6_uart, sizeof(struct imxuart_softc),
+    imx6_uart_match, imx6_uart_attach, NULL, NULL);
+
 int
-imxuart_match(device_t parent, struct cfdata *cf, void *aux)
+imx6_uart_match(device_t parent, struct cfdata *cf, void *aux)
 {
 	struct axi_attach_args * const aa = aux;
 
@@ -58,7 +64,7 @@ imxuart_match(device_t parent, struct cf
 }
 
 void
-imxuart_attach(device_t parent, device_t self, void *aux)
+imx6_uart_attach(device_t parent, device_t self, void *aux)
 {
 	struct axi_attach_args * aa = aux;
 

Index: src/sys/arch/arm/imx/imx51_uart.c
diff -u src/sys/arch/arm/imx/imx51_uart.c:1.3 src/sys/arch/arm/imx/imx51_uart.c:1.4
--- src/sys/arch/arm/imx/imx51_uart.c:1.3	Fri Jul 25 07:49:56 2014
+++ src/sys/arch/arm/imx/imx51_uart.c	Fri Sep  8 05:29:12 2017
@@ -26,7 +26,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: imx51_uart.c,v 1.3 2014/07/25 07:49:56 hkenken Exp $");
+__KERNEL_RCSID(0, "$NetBSD: imx51_uart.c,v 1.4 2017/09/08 05:29:12 hkenken Exp $");
 
 #include "opt_imx.h"
 #include "opt_imxuart.h"
@@ -39,8 +39,14 @@ __KERNEL_RCSID(0, "$NetBSD: imx51_uart.c
 #include <arm/imx/imxuartreg.h>
 #include <arm/imx/imxuartvar.h>
 
+static int imx51_uart_match(device_t, struct cfdata *, void *);
+static void imx51_uart_attach(device_t, device_t, void *);
+
+CFATTACH_DECL_NEW(imx51_uart, sizeof(struct imxuart_softc),
+    imx51_uart_match, imx51_uart_attach, NULL, NULL);
+
 int
-imxuart_match(device_t parent, struct cfdata *cf, void *aux)
+imx51_uart_match(device_t parent, struct cfdata *cf, void *aux)
 {
 	struct axi_attach_args * const aa = aux;
 
@@ -55,11 +61,11 @@ imxuart_match(device_t parent, struct cf
 }
 
 void
-imxuart_attach(device_t parent, device_t self, void *aux)
+imx51_uart_attach(device_t parent, device_t self, void *aux)
 {
 	struct axi_attach_args * aa = aux;
 
-	imxuart_attach_common(parent, self, 
+	imxuart_attach_common(parent, self,
 	    aa->aa_iot, aa->aa_addr, aa->aa_size, aa->aa_irq, 0);
 }
 

Index: src/sys/arch/arm/imx/imx7_uart.c
diff -u src/sys/arch/arm/imx/imx7_uart.c:1.1 src/sys/arch/arm/imx/imx7_uart.c:1.2
--- src/sys/arch/arm/imx/imx7_uart.c:1.1	Tue May 17 06:44:45 2016
+++ src/sys/arch/arm/imx/imx7_uart.c	Fri Sep  8 05:29:12 2017
@@ -1,4 +1,4 @@
-/*	$NetBSD: imx7_uart.c,v 1.1 2016/05/17 06:44:45 ryo Exp $	*/
+/*	$NetBSD: imx7_uart.c,v 1.2 2017/09/08 05:29:12 hkenken Exp $	*/
 
 /*
  * Copyright (c) 2013 Genetec Corporation.  All rights reserved.
@@ -28,7 +28,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: imx7_uart.c,v 1.1 2016/05/17 06:44:45 ryo Exp $");
+__KERNEL_RCSID(0, "$NetBSD: imx7_uart.c,v 1.2 2017/09/08 05:29:12 hkenken Exp $");
 
 #include "opt_imxuart.h"
 
@@ -41,9 +41,15 @@ __KERNEL_RCSID(0, "$NetBSD: imx7_uart.c,
 #include <arm/imx/imxuartreg.h>
 #include <arm/imx/imxuartvar.h>
 
+static int imx7_uart_match(device_t, struct cfdata *, void *);
+static void imx7_uart_attach(device_t, device_t, void *);
+
+CFATTACH_DECL_NEW(imx7_uart, sizeof(struct imxuart_softc),
+    imx7_uart_match, imx7_uart_attach, NULL, NULL);
+
 /* ARGSUSED */
 int
-imxuart_match(device_t parent __unused, struct cfdata *cf __unused, void *aux)
+imx7_uart_match(device_t parent __unused, struct cfdata *cf __unused, void *aux)
 {
 	struct axi_attach_args * const aa = aux;
 
@@ -62,7 +68,7 @@ imxuart_match(device_t parent __unused, 
 }
 
 void
-imxuart_attach(device_t parent, device_t self, void *aux)
+imx7_uart_attach(device_t parent, device_t self, void *aux)
 {
 	struct axi_attach_args * aa = aux;
 

Index: src/sys/arch/arm/imx/imxuart.c
diff -u src/sys/arch/arm/imx/imxuart.c:1.19 src/sys/arch/arm/imx/imxuart.c:1.20
--- src/sys/arch/arm/imx/imxuart.c:1.19	Thu Jul 30 04:39:42 2015
+++ src/sys/arch/arm/imx/imxuart.c	Fri Sep  8 05:29:12 2017
@@ -1,4 +1,4 @@
-/* $NetBSD: imxuart.c,v 1.19 2015/07/30 04:39:42 ryo Exp $ */
+/* $NetBSD: imxuart.c,v 1.20 2017/09/08 05:29:12 hkenken Exp $ */
 
 /*
  * Copyright (c) 2009, 2010  Genetec Corporation.  All rights reserved.
@@ -96,7 +96,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: imxuart.c,v 1.19 2015/07/30 04:39:42 ryo Exp $");
+__KERNEL_RCSID(0, "$NetBSD: imxuart.c,v 1.20 2017/09/08 05:29:12 hkenken Exp $");
 
 #include "opt_imxuart.h"
 #include "opt_ddb.h"
@@ -106,7 +106,6 @@ __KERNEL_RCSID(0, "$NetBSD: imxuart.c,v 
 #include "opt_multiprocessor.h"
 #include "opt_ntp.h"
 #include "opt_imxuart.h"
-#include "opt_imx.h"
 
 #ifdef RND_COM
 #include <sys/rndsource.h>
@@ -165,115 +164,6 @@ __KERNEL_RCSID(0, "$NetBSD: imxuart.c,v 
 #define	IMXUART_RING_SIZE	2048
 #endif
 
-typedef struct imxuart_softc {
-	device_t	sc_dev;
-
-	struct imxuart_regs {
-		bus_space_tag_t		ur_iot;
-		bus_space_handle_t	ur_ioh;
-		bus_addr_t		ur_iobase;
-#if 0
-		bus_size_t		ur_nports;
-		bus_size_t		ur_map[16];
-#endif
-	} sc_regs;
-
-#define	sc_bt	sc_regs.ur_iot
-#define	sc_bh	sc_regs.ur_ioh
-
-	uint32_t		sc_intrspec_enb;
-	uint32_t	sc_ucr2_d;	/* target value for UCR2 */
-	uint32_t	sc_ucr[4];	/* cached value of UCRn */
-#define	sc_ucr1	sc_ucr[0]
-#define	sc_ucr2	sc_ucr[1]
-#define	sc_ucr3	sc_ucr[2]
-#define	sc_ucr4	sc_ucr[3]
-
-	uint			sc_init_cnt;
-
-	bus_addr_t		sc_addr;
-	bus_size_t		sc_size;
-	int			sc_intr;
-
-	u_char	sc_hwflags;
-/* Hardware flag masks */
-#define	IMXUART_HW_FLOW 	__BIT(0)
-#define	IMXUART_HW_DEV_OK	__BIT(1)
-#define	IMXUART_HW_CONSOLE	__BIT(2)
-#define	IMXUART_HW_KGDB 	__BIT(3)
-
-
-	bool	enabled;
-
-	u_char	sc_swflags;
-
-	u_char sc_rx_flags;
-#define	IMXUART_RX_TTY_BLOCKED  	__BIT(0)
-#define	IMXUART_RX_TTY_OVERFLOWED	__BIT(1)
-#define	IMXUART_RX_IBUF_BLOCKED 	__BIT(2)
-#define	IMXUART_RX_IBUF_OVERFLOWED	__BIT(3)
-#define	IMXUART_RX_ANY_BLOCK					\
-	(IMXUART_RX_TTY_BLOCKED|IMXUART_RX_TTY_OVERFLOWED| 	\
-	    IMXUART_RX_IBUF_BLOCKED|IMXUART_RX_IBUF_OVERFLOWED)
-
-	bool	sc_tx_busy, sc_tx_done, sc_tx_stopped;
-	bool	sc_rx_ready,sc_st_check;
-	u_short	sc_txfifo_len, sc_txfifo_thresh;
-
-	uint16_t	*sc_rbuf;
-	u_int		sc_rbuf_size;
-	u_int		sc_rbuf_in;
-	u_int		sc_rbuf_out;
-#define	IMXUART_RBUF_AVAIL(sc)					\
-	((sc->sc_rbuf_out <= sc->sc_rbuf_in) ?			\
-	(sc->sc_rbuf_in - sc->sc_rbuf_out) :			\
-	(sc->sc_rbuf_size - (sc->sc_rbuf_out - sc->sc_rbuf_in)))
-
-#define	IMXUART_RBUF_SPACE(sc)	\
-	((sc->sc_rbuf_in <= sc->sc_rbuf_out ?			    \
-	    sc->sc_rbuf_size - (sc->sc_rbuf_out - sc->sc_rbuf_in) : \
-	    sc->sc_rbuf_in - sc->sc_rbuf_out) - 1)
-/* increment ringbuffer pointer */
-#define	IMXUART_RBUF_INC(sc,v,i)	(((v) + (i))&((sc->sc_rbuf_size)-1))
-	u_int	sc_r_lowat;
-	u_int	sc_r_hiwat;
-
-	/* output chunk */
- 	u_char *sc_tba;
- 	u_int sc_tbc;
-	u_int sc_heldtbc;
-	/* pending parameter changes */
-	u_char	sc_pending;
-#define	IMXUART_PEND_PARAM	__BIT(0)
-#define	IMXUART_PEND_SPEED	__BIT(1)
-
-
-	struct callout sc_diag_callout;
-	kmutex_t sc_lock;
-	void *sc_ih;		/* interrupt handler */
-	void *sc_si;		/* soft interrupt */
-	struct tty		*sc_tty;
-
-	/* power management hooks */
-	int (*enable)(struct imxuart_softc *);
-	void (*disable)(struct imxuart_softc *);
-
-	struct {
-		ulong err;
-		ulong brk;
-		ulong prerr;
-		ulong frmerr;
-		ulong ovrrun;
-	}	sc_errors;
-
-	struct imxuart_baudrate_ratio {
-		uint16_t numerator;	/* UBIR */
-		uint16_t modulator;	/* UBMR */
-	} sc_ratio;
-
-} imxuart_softc_t;
-
-
 int	imxuspeed(long, struct imxuart_baudrate_ratio *);
 int	imxuparam(struct tty *, struct termios *);
 void	imxustart(struct tty *);
@@ -310,10 +200,6 @@ static u_int imxuart_txfifo_space(struct
 
 static	uint32_t	cflag_to_ucr2(tcflag_t, uint32_t);
 
-CFATTACH_DECL_NEW(imxuart, sizeof(struct imxuart_softc),
-    imxuart_match, imxuart_attach, NULL, NULL);
-
-
 #define	integrate	static inline
 void 	imxusoft(void *);
 integrate void imxuart_rxsoft(struct imxuart_softc *, struct tty *);
@@ -399,9 +285,8 @@ void
 imxuart_attach_common(device_t parent, device_t self,
     bus_space_tag_t iot, paddr_t iobase, size_t size, int intr, int flags)
 {
-	imxuart_softc_t *sc = device_private(self);
+	struct imxuart_softc *sc = device_private(self);
 	struct imxuart_regs *regsp = &sc->sc_regs;
-	struct tty *tp;
 	bus_space_handle_t ioh;
 
 	aprint_naive("\n");
@@ -421,6 +306,17 @@ imxuart_attach_common(device_t parent, d
 	}
 	regsp->ur_ioh = ioh;
 
+	imxuart_attach_subr(sc);
+}
+
+void
+imxuart_attach_subr(struct imxuart_softc *sc)
+{
+	struct imxuart_regs *regsp = &sc->sc_regs;
+	bus_space_tag_t iot = regsp->ur_iot;
+	bus_space_handle_t ioh = regsp->ur_ioh;
+	struct tty *tp;
+
 	callout_init(&sc->sc_diag_callout, 0);
 	mutex_init(&sc->sc_lock, MUTEX_DEFAULT, IPL_HIGH);
 
@@ -551,7 +447,6 @@ gcd(long m, long n)
 	return gcd(n, m % n);
 }
 
-
 int
 imxuspeed(long speed, struct imxuart_baudrate_ratio *ratio)
 {
@@ -2348,8 +2243,8 @@ struct consdev imxucons = {
 
 
 int
-imxuart_cons_attach(bus_space_tag_t iot, paddr_t iobase, u_int rate,
-		    tcflag_t cflag)
+imxuart_cnattach(bus_space_tag_t iot, paddr_t iobase, u_int rate,
+    tcflag_t cflag)
 {
 	struct imxuart_regs regs;
 	int res;

Index: src/sys/arch/arm/imx/imxuartvar.h
diff -u src/sys/arch/arm/imx/imxuartvar.h:1.5 src/sys/arch/arm/imx/imxuartvar.h:1.6
--- src/sys/arch/arm/imx/imxuartvar.h:1.5	Sat Oct 27 17:17:39 2012
+++ src/sys/arch/arm/imx/imxuartvar.h	Fri Sep  8 05:29:12 2017
@@ -1,4 +1,4 @@
-/* $NetBSD: imxuartvar.h,v 1.5 2012/10/27 17:17:39 chs Exp $ */
+/* $NetBSD: imxuartvar.h,v 1.6 2017/09/08 05:29:12 hkenken Exp $ */
 /*
  * driver include for Freescale i.MX31 and i.MX31L UARTs
  */
@@ -35,12 +35,119 @@
 #include  <sys/cdefs.h>
 #include  <sys/termios.h>	/* for tcflag_t */
 
+struct imxuart_softc {
+	device_t	sc_dev;
+
+	int sc_unit;
+	struct imxuart_regs {
+		bus_space_tag_t		ur_iot;
+		bus_space_handle_t	ur_ioh;
+		bus_addr_t		ur_iobase;
+#if 0
+		bus_size_t		ur_nports;
+		bus_size_t		ur_map[16];
+#endif
+	} sc_regs;
+
+#define	sc_bt	sc_regs.ur_iot
+#define	sc_bh	sc_regs.ur_ioh
+
+	uint32_t		sc_intrspec_enb;
+	uint32_t	sc_ucr2_d;	/* target value for UCR2 */
+	uint32_t	sc_ucr[4];	/* cached value of UCRn */
+#define	sc_ucr1	sc_ucr[0]
+#define	sc_ucr2	sc_ucr[1]
+#define	sc_ucr3	sc_ucr[2]
+#define	sc_ucr4	sc_ucr[3]
+
+	uint			sc_init_cnt;
+
+	bus_addr_t		sc_addr;
+	bus_size_t		sc_size;
+	int			sc_intr;
+
+	u_char	sc_hwflags;
+/* Hardware flag masks */
+#define	IMXUART_HW_FLOW 	__BIT(0)
+#define	IMXUART_HW_DEV_OK	__BIT(1)
+#define	IMXUART_HW_CONSOLE	__BIT(2)
+#define	IMXUART_HW_KGDB 	__BIT(3)
+
+	bool	enabled;
+
+	u_char	sc_swflags;
+
+	u_char sc_rx_flags;
+#define	IMXUART_RX_TTY_BLOCKED  	__BIT(0)
+#define	IMXUART_RX_TTY_OVERFLOWED	__BIT(1)
+#define	IMXUART_RX_IBUF_BLOCKED 	__BIT(2)
+#define	IMXUART_RX_IBUF_OVERFLOWED	__BIT(3)
+#define	IMXUART_RX_ANY_BLOCK					\
+	(IMXUART_RX_TTY_BLOCKED|IMXUART_RX_TTY_OVERFLOWED| 	\
+	    IMXUART_RX_IBUF_BLOCKED|IMXUART_RX_IBUF_OVERFLOWED)
+
+	bool	sc_tx_busy, sc_tx_done, sc_tx_stopped;
+	bool	sc_rx_ready,sc_st_check;
+	u_short	sc_txfifo_len, sc_txfifo_thresh;
+
+	uint16_t	*sc_rbuf;
+	u_int		sc_rbuf_size;
+	u_int		sc_rbuf_in;
+	u_int		sc_rbuf_out;
+#define	IMXUART_RBUF_AVAIL(sc)					\
+	((sc->sc_rbuf_out <= sc->sc_rbuf_in) ?			\
+	(sc->sc_rbuf_in - sc->sc_rbuf_out) :			\
+	(sc->sc_rbuf_size - (sc->sc_rbuf_out - sc->sc_rbuf_in)))
+
+#define	IMXUART_RBUF_SPACE(sc)	\
+	((sc->sc_rbuf_in <= sc->sc_rbuf_out ?			    \
+	    sc->sc_rbuf_size - (sc->sc_rbuf_out - sc->sc_rbuf_in) : \
+	    sc->sc_rbuf_in - sc->sc_rbuf_out) - 1)
+/* increment ringbuffer pointer */
+#define	IMXUART_RBUF_INC(sc,v,i)	(((v) + (i))&((sc->sc_rbuf_size)-1))
+	u_int	sc_r_lowat;
+	u_int	sc_r_hiwat;
+
+	/* output chunk */
+ 	u_char *sc_tba;
+ 	u_int sc_tbc;
+	u_int sc_heldtbc;
+	/* pending parameter changes */
+	u_char	sc_pending;
+#define	IMXUART_PEND_PARAM	__BIT(0)
+#define	IMXUART_PEND_SPEED	__BIT(1)
+
+
+	struct callout sc_diag_callout;
+	kmutex_t sc_lock;
+	void *sc_ih;		/* interrupt handler */
+	void *sc_si;		/* soft interrupt */
+	struct tty		*sc_tty;
+
+	/* power management hooks */
+	int (*enable)(struct imxuart_softc *);
+	void (*disable)(struct imxuart_softc *);
+
+	struct {
+		ulong err;
+		ulong brk;
+		ulong prerr;
+		ulong frmerr;
+		ulong ovrrun;
+	}	sc_errors;
+
+	struct imxuart_baudrate_ratio {
+		uint16_t numerator;	/* UBIR */
+		uint16_t modulator;	/* UBMR */
+	} sc_ratio;
+
+};
 
 void imxuart_attach_common(device_t parent, device_t self,
     bus_space_tag_t, paddr_t, size_t, int, int);
 
 int imxuart_kgdb_attach(bus_space_tag_t, paddr_t, u_int, tcflag_t);
-int imxuart_cons_attach(bus_space_tag_t, paddr_t, u_int, tcflag_t);
+int imxuart_cnattach(bus_space_tag_t, paddr_t, u_int, tcflag_t);
 
 int imxuart_is_console(bus_space_tag_t, bus_addr_t, bus_space_handle_t *);
 
@@ -55,4 +162,8 @@ void imxuart_set_frequency(u_int, u_int)
 int imxuart_match(device_t, cfdata_t, void *);
 void imxuart_attach(device_t, device_t, void *);
 
+void imxuart_attach_subr(struct imxuart_softc *);
+
+int imxuintr(void *);
+
 #endif	/* _IMXUARTVAR_H */

Index: src/sys/arch/evbarm/imx7/imx7_machdep.c
diff -u src/sys/arch/evbarm/imx7/imx7_machdep.c:1.5 src/sys/arch/evbarm/imx7/imx7_machdep.c:1.6
--- src/sys/arch/evbarm/imx7/imx7_machdep.c:1.5	Thu Aug 17 09:11:04 2017
+++ src/sys/arch/evbarm/imx7/imx7_machdep.c	Fri Sep  8 05:29:12 2017
@@ -1,4 +1,4 @@
-/*	$NetBSD: imx7_machdep.c,v 1.5 2017/08/17 09:11:04 hkenken Exp $	*/
+/*	$NetBSD: imx7_machdep.c,v 1.6 2017/09/08 05:29:12 hkenken Exp $	*/
 
 /*-
  * Copyright (c) 2012 The NetBSD Foundation, Inc.
@@ -30,7 +30,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: imx7_machdep.c,v 1.5 2017/08/17 09:11:04 hkenken Exp $");
+__KERNEL_RCSID(0, "$NetBSD: imx7_machdep.c,v 1.6 2017/09/08 05:29:12 hkenken Exp $");
 
 #include "opt_evbarm_boardtype.h"
 #include "opt_arm_debug.h"
@@ -305,7 +305,7 @@ consinit(void)
 		paddr_t consaddr;
 
 		consaddr = CONADDR;
-		imxuart_cons_attach(&armv7_generic_bs_tag, consaddr, consrate, consmode);
+		imxuart_cnattach(&armv7_generic_bs_tag, consaddr, consrate, consmode);
 		return;
 	}
 # endif /* (NIMXUART > 0) && defined(IMXUARTCONSOLE) */

Index: src/sys/arch/evbarm/kobo/kobo_machdep.c
diff -u src/sys/arch/evbarm/kobo/kobo_machdep.c:1.3 src/sys/arch/evbarm/kobo/kobo_machdep.c:1.4
--- src/sys/arch/evbarm/kobo/kobo_machdep.c:1.3	Thu May  7 04:13:47 2015
+++ src/sys/arch/evbarm/kobo/kobo_machdep.c	Fri Sep  8 05:29:12 2017
@@ -1,4 +1,4 @@
-/*	$NetBSD: kobo_machdep.c,v 1.3 2015/05/07 04:13:47 hkenken Exp $	*/
+/*	$NetBSD: kobo_machdep.c,v 1.4 2017/09/08 05:29:12 hkenken Exp $	*/
 
 /*
  * Copyright (c) 2002, 2003, 2005, 2010  Genetec Corporation.
@@ -102,7 +102,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: kobo_machdep.c,v 1.3 2015/05/07 04:13:47 hkenken Exp $");
+__KERNEL_RCSID(0, "$NetBSD: kobo_machdep.c,v 1.4 2017/09/08 05:29:12 hkenken Exp $");
 
 #include "opt_evbarm_boardtype.h"
 #include "opt_arm_debug.h"
@@ -525,7 +525,7 @@ consinit(void)
 #else
 		consaddr = IMX51_UART2_BASE;
 #endif
-		imxuart_cons_attach(&armv7_generic_bs_tag, consaddr, consrate, consmode);
+		imxuart_cnattach(&armv7_generic_bs_tag, consaddr, consrate, consmode);
 		return;
 	}
 #endif

Index: src/sys/arch/evbarm/netwalker/netwalker_machdep.c
diff -u src/sys/arch/evbarm/netwalker/netwalker_machdep.c:1.20 src/sys/arch/evbarm/netwalker/netwalker_machdep.c:1.21
--- src/sys/arch/evbarm/netwalker/netwalker_machdep.c:1.20	Mon Aug  7 08:54:54 2017
+++ src/sys/arch/evbarm/netwalker/netwalker_machdep.c	Fri Sep  8 05:29:12 2017
@@ -1,4 +1,4 @@
-/*	$NetBSD: netwalker_machdep.c,v 1.20 2017/08/07 08:54:54 hkenken Exp $	*/
+/*	$NetBSD: netwalker_machdep.c,v 1.21 2017/09/08 05:29:12 hkenken Exp $	*/
 
 /*
  * Copyright (c) 2002, 2003, 2005, 2010  Genetec Corporation.
@@ -102,7 +102,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: netwalker_machdep.c,v 1.20 2017/08/07 08:54:54 hkenken Exp $");
+__KERNEL_RCSID(0, "$NetBSD: netwalker_machdep.c,v 1.21 2017/09/08 05:29:12 hkenken Exp $");
 
 #include "opt_evbarm_boardtype.h"
 #include "opt_arm_debug.h"
@@ -678,7 +678,7 @@ consinit(void)
 #else
 		consaddr = IMX51_UART1_BASE;
 #endif
-		imxuart_cons_attach(&armv7_generic_bs_tag, consaddr, consrate, consmode);
+		imxuart_cnattach(&armv7_generic_bs_tag, consaddr, consrate, consmode);
 		return;
 	}
 #endif

Index: src/sys/arch/evbarm/nitrogen6/nitrogen6_machdep.c
diff -u src/sys/arch/evbarm/nitrogen6/nitrogen6_machdep.c:1.6 src/sys/arch/evbarm/nitrogen6/nitrogen6_machdep.c:1.7
--- src/sys/arch/evbarm/nitrogen6/nitrogen6_machdep.c:1.6	Thu Feb 25 12:22:30 2016
+++ src/sys/arch/evbarm/nitrogen6/nitrogen6_machdep.c	Fri Sep  8 05:29:12 2017
@@ -1,4 +1,4 @@
-/*	$NetBSD: nitrogen6_machdep.c,v 1.6 2016/02/25 12:22:30 joerg Exp $	*/
+/*	$NetBSD: nitrogen6_machdep.c,v 1.7 2017/09/08 05:29:12 hkenken Exp $	*/
 
 /*-
  * Copyright (c) 2012 The NetBSD Foundation, Inc.
@@ -30,7 +30,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: nitrogen6_machdep.c,v 1.6 2016/02/25 12:22:30 joerg Exp $");
+__KERNEL_RCSID(0, "$NetBSD: nitrogen6_machdep.c,v 1.7 2017/09/08 05:29:12 hkenken Exp $");
 
 #include "opt_evbarm_boardtype.h"
 #include "opt_arm_debug.h"
@@ -299,7 +299,7 @@ consinit(void)
 		paddr_t consaddr;
 
 		consaddr = CONADDR;
-		imxuart_cons_attach(&armv7_generic_bs_tag, consaddr, consrate, consmode);
+		imxuart_cnattach(&armv7_generic_bs_tag, consaddr, consrate, consmode);
 		return;
 	}
 # endif /* (NIMXUART > 0) && defined(IMXUARTCONSOLE) */

Reply via email to