Module Name: src Committed By: thorpej Date: Tue Dec 11 06:34:00 UTC 2018
Modified Files: src/sys/arch/hpcsh/dev/hd64461: hd64461uart.c src/sys/arch/mips/ingenic: ingenic_com.c src/sys/arch/mips/rmi: rmixl_com.c src/sys/dev/ic: com.c comvar.h src/sys/dev/marvell: com_mv.c Log Message: Add a convenience function, com_init_regs_stride(), that shifts the register offsets and size by the specified amount. Use in front-ends as appropriate. To generate a diff of this commit: cvs rdiff -u -r1.29 -r1.30 src/sys/arch/hpcsh/dev/hd64461/hd64461uart.c cvs rdiff -u -r1.8 -r1.9 src/sys/arch/mips/ingenic/ingenic_com.c cvs rdiff -u -r1.7 -r1.8 src/sys/arch/mips/rmi/rmixl_com.c cvs rdiff -u -r1.353 -r1.354 src/sys/dev/ic/com.c cvs rdiff -u -r1.90 -r1.91 src/sys/dev/ic/comvar.h cvs rdiff -u -r1.9 -r1.10 src/sys/dev/marvell/com_mv.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/hpcsh/dev/hd64461/hd64461uart.c diff -u src/sys/arch/hpcsh/dev/hd64461/hd64461uart.c:1.29 src/sys/arch/hpcsh/dev/hd64461/hd64461uart.c:1.30 --- src/sys/arch/hpcsh/dev/hd64461/hd64461uart.c:1.29 Sat Dec 8 17:46:11 2018 +++ src/sys/arch/hpcsh/dev/hd64461/hd64461uart.c Tue Dec 11 06:34:00 2018 @@ -1,4 +1,4 @@ -/* $NetBSD: hd64461uart.c,v 1.29 2018/12/08 17:46:11 thorpej Exp $ */ +/* $NetBSD: hd64461uart.c,v 1.30 2018/12/11 06:34:00 thorpej Exp $ */ /*- * Copyright (c) 2001, 2002 The NetBSD Foundation, Inc. @@ -27,7 +27,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: hd64461uart.c,v 1.29 2018/12/08 17:46:11 thorpej Exp $"); +__KERNEL_RCSID(0, "$NetBSD: hd64461uart.c,v 1.30 2018/12/11 06:34:00 thorpej Exp $"); #include "opt_kgdb.h" @@ -94,10 +94,7 @@ hd64461uart_init_regs(struct com_regs *r bus_space_handle_t hdl, bus_addr_t addr) { - com_init_regs(regs, tag, hdl, addr); - for (size_t i = 0; i < __arraycount(regs->cr_map); i++) - regs->cr_map[i] = regs->cr_map[i] << 1; - regs->cr_nports <<= 1; + com_init_regs_stride(regs, tag, hdl, addr, 1); } void Index: src/sys/arch/mips/ingenic/ingenic_com.c diff -u src/sys/arch/mips/ingenic/ingenic_com.c:1.8 src/sys/arch/mips/ingenic/ingenic_com.c:1.9 --- src/sys/arch/mips/ingenic/ingenic_com.c:1.8 Sat Dec 8 21:14:36 2018 +++ src/sys/arch/mips/ingenic/ingenic_com.c Tue Dec 11 06:34:00 2018 @@ -1,4 +1,4 @@ -/* $NetBSD: ingenic_com.c,v 1.8 2018/12/08 21:14:36 thorpej Exp $ */ +/* $NetBSD: ingenic_com.c,v 1.9 2018/12/11 06:34:00 thorpej Exp $ */ /*- * Copyright (c) 2014 Michael Lorenz @@ -27,7 +27,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: ingenic_com.c,v 1.8 2018/12/08 21:14:36 thorpej Exp $"); +__KERNEL_RCSID(0, "$NetBSD: ingenic_com.c,v 1.9 2018/12/11 06:34:00 thorpej Exp $"); #include <sys/param.h> #include <sys/systm.h> @@ -82,11 +82,7 @@ ingenic_com_init_regs(struct com_regs *r bus_space_handle_t sh, bus_addr_t addr) { - com_init_regs(regs, st, sh, addr); - for (size_t i = 0; i < __arraycount(regs->cr_map); i++) { - regs->cr_map[i] = regs->cr_map[i] << 2; - } - regs->cr_nports <<= 2; + com_init_regs_stride(regs, st, sh, addr, 2); } void Index: src/sys/arch/mips/rmi/rmixl_com.c diff -u src/sys/arch/mips/rmi/rmixl_com.c:1.7 src/sys/arch/mips/rmi/rmixl_com.c:1.8 --- src/sys/arch/mips/rmi/rmixl_com.c:1.7 Sat Dec 8 21:14:37 2018 +++ src/sys/arch/mips/rmi/rmixl_com.c Tue Dec 11 06:34:00 2018 @@ -1,4 +1,4 @@ -/* $Id: rmixl_com.c,v 1.7 2018/12/08 21:14:37 thorpej Exp $ */ +/* $Id: rmixl_com.c,v 1.8 2018/12/11 06:34:00 thorpej Exp $ */ /*- * Copyright (c) 2006 Urbana-Champaign Independent Media Center. * Copyright (c) 2006 Garrett D'Amore. @@ -101,7 +101,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: rmixl_com.c,v 1.7 2018/12/08 21:14:37 thorpej Exp $"); +__KERNEL_RCSID(0, "$NetBSD: rmixl_com.c,v 1.8 2018/12/11 06:34:00 thorpej Exp $"); #include <sys/param.h> #include <sys/systm.h> @@ -288,15 +288,7 @@ rmixl_com_init_regs(struct com_regs *reg bus_space_handle_t sh, bus_addr_t addr) { - com_init_regs(regsp, st, sh, addr); - - /* - * map the 4 byte register stride - */ - for (size_t i = 0; i < __arraycount(regsp->cr_map); i++) - regsp->cr_map[i] = regsp->cr_map[i] * 4; - - regsp->cr_nports = RMIXL_IO_DEV_UART_SIZE; + com_init_regs_stride(regsp, st, sh, addr, 2); } void Index: src/sys/dev/ic/com.c diff -u src/sys/dev/ic/com.c:1.353 src/sys/dev/ic/com.c:1.354 --- src/sys/dev/ic/com.c:1.353 Sun Dec 9 16:00:40 2018 +++ src/sys/dev/ic/com.c Tue Dec 11 06:34:00 2018 @@ -1,4 +1,4 @@ -/* $NetBSD: com.c,v 1.353 2018/12/09 16:00:40 thorpej Exp $ */ +/* $NetBSD: com.c,v 1.354 2018/12/11 06:34:00 thorpej Exp $ */ /*- * Copyright (c) 1998, 1999, 2004, 2008 The NetBSD Foundation, Inc. @@ -66,7 +66,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: com.c,v 1.353 2018/12/09 16:00:40 thorpej Exp $"); +__KERNEL_RCSID(0, "$NetBSD: com.c,v 1.354 2018/12/11 06:34:00 thorpej Exp $"); #include "opt_com.h" #include "opt_ddb.h" @@ -276,6 +276,23 @@ com_init_regs(struct com_regs *regs, bus memcpy(regs->cr_map, com_std_map, sizeof(regs->cr_map)); } +/* + * com_init_regs_stride -- + * Convenience function for front-ends that have a stride between + * registers. + */ +void +com_init_regs_stride(struct com_regs *regs, bus_space_tag_t st, + bus_space_handle_t sh, bus_addr_t addr, u_int regshift) +{ + + com_init_regs(regs, st, sh, addr); + for (size_t i = 0; i < __arraycount(regs->cr_map); i++) { + regs->cr_map[i] <<= regshift; + } + regs->cr_nports <<= regshift; +} + /*ARGSUSED*/ int comspeed(long speed, long frequency, int type) Index: src/sys/dev/ic/comvar.h diff -u src/sys/dev/ic/comvar.h:1.90 src/sys/dev/ic/comvar.h:1.91 --- src/sys/dev/ic/comvar.h:1.90 Sat Dec 8 21:14:37 2018 +++ src/sys/dev/ic/comvar.h Tue Dec 11 06:34:00 2018 @@ -1,4 +1,4 @@ -/* $NetBSD: comvar.h,v 1.90 2018/12/08 21:14:37 thorpej Exp $ */ +/* $NetBSD: comvar.h,v 1.91 2018/12/11 06:34:00 thorpej Exp $ */ /* * Copyright (c) 1996 Christopher G. Demetriou. All rights reserved. @@ -106,6 +106,8 @@ struct com_regs { void com_init_regs(struct com_regs *, bus_space_tag_t, bus_space_handle_t, bus_addr_t); +void com_init_regs_stride(struct com_regs *, bus_space_tag_t, + bus_space_handle_t, bus_addr_t, u_int); struct comcons_info { struct com_regs regs; Index: src/sys/dev/marvell/com_mv.c diff -u src/sys/dev/marvell/com_mv.c:1.9 src/sys/dev/marvell/com_mv.c:1.10 --- src/sys/dev/marvell/com_mv.c:1.9 Sat Dec 8 21:14:37 2018 +++ src/sys/dev/marvell/com_mv.c Tue Dec 11 06:34:00 2018 @@ -1,4 +1,4 @@ -/* $NetBSD: com_mv.c,v 1.9 2018/12/08 21:14:37 thorpej Exp $ */ +/* $NetBSD: com_mv.c,v 1.10 2018/12/11 06:34:00 thorpej Exp $ */ /* * Copyright (c) 2007, 2010 KIYOHARA Takashi * All rights reserved. @@ -26,7 +26,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: com_mv.c,v 1.9 2018/12/08 21:14:37 thorpej Exp $"); +__KERNEL_RCSID(0, "$NetBSD: com_mv.c,v 1.10 2018/12/11 06:34:00 thorpej Exp $"); #include <sys/param.h> #include <sys/bus.h> @@ -55,13 +55,10 @@ CFATTACH_DECL_NEW(mvuart_mbus, sizeof(st static void mvuart_init_regs(struct com_regs *regs, bus_space_tag_t tag, - bus_space_handle_t hdl, bus_addr_t addr, bus_size_t size) + bus_space_handle_t hdl, bus_addr_t addr); { - com_init_regs(regs, tag, hdl, addr); - for (size_t i = 0; i < __arraycount(regs->cr_map); i++) - regs->cr_map[i] = regs->cr_map[i] << 2; - regs->cr_nports = size; + com_init_regs_stride(regs, tag, hdl, addr, 2); } @@ -85,8 +82,7 @@ mvuart_match(device_t parent, struct cfd if (bus_space_subregion(mva->mva_iot, mva->mva_ioh, mva->mva_offset, MVUART_SIZE, &ioh)) return 0; - mvuart_init_regs(®s, mva->mva_iot, ioh, mva->mva_offset, - MVUART_SIZE); + mvuart_init_regs(®s, mva->mva_iot, ioh, mva->mva_offset); if (!com_probe_subr(®s)) return 0; @@ -121,7 +117,7 @@ mvuart_attach(device_t parent, device_t } } mvuart_init_regs(&sc->sc_regs, - iot, ioh, mva->mva_addr + mva->mva_offset, mva->mva_size); + iot, ioh, mva->mva_addr + mva->mva_offset); com_attach_subr(sc); @@ -136,7 +132,7 @@ mvuart_cnattach(bus_space_tag_t iot, bus { struct com_regs regs; - mvuart_init_regs(®s, iot, 0x0, addr, MVUART_SIZE); + mvuart_init_regs(®s, iot, 0x0, addr); return comcnattach1(®s, baud, sysfreq, COM_TYPE_16550_NOERS, mode); }