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) */