Module Name: src Committed By: thorpej Date: Sat Jul 24 19:06:25 UTC 2021
Modified Files: src/sys/dev/eisa: mlx_eisa.c Log Message: Noralize autoconfiguration messages, and report interrupt trigger type. To generate a diff of this commit: cvs rdiff -u -r1.28 -r1.29 src/sys/dev/eisa/mlx_eisa.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/dev/eisa/mlx_eisa.c diff -u src/sys/dev/eisa/mlx_eisa.c:1.28 src/sys/dev/eisa/mlx_eisa.c:1.29 --- src/sys/dev/eisa/mlx_eisa.c:1.28 Sat Apr 24 23:36:53 2021 +++ src/sys/dev/eisa/mlx_eisa.c Sat Jul 24 19:06:25 2021 @@ -1,4 +1,4 @@ -/* $NetBSD: mlx_eisa.c,v 1.28 2021/04/24 23:36:53 thorpej Exp $ */ +/* $NetBSD: mlx_eisa.c,v 1.29 2021/07/24 19:06:25 thorpej Exp $ */ /*- * Copyright (c) 2001 The NetBSD Foundation, Inc. @@ -34,7 +34,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: mlx_eisa.c,v 1.28 2021/04/24 23:36:53 thorpej Exp $"); +__KERNEL_RCSID(0, "$NetBSD: mlx_eisa.c,v 1.29 2021/07/24 19:06:25 thorpej Exp $"); #include <sys/param.h> #include <sys/systm.h> @@ -113,16 +113,32 @@ mlx_eisa_attach(device_t parent, device_ struct mlx_softc *mlx; bus_space_tag_t iot; const char *intrstr; - int irq, icfg; + int irq, ist, icfg; char intrbuf[EISA_INTRSTR_LEN]; mlx = device_private(self); iot = ea->ea_iot; ec = ea->ea_ec; + dce = eisa_compatible_lookup(ea, compat_data); + KASSERT(dce != NULL); + + mlx->mlx_ci.ci_nchan = (int)dce->value; + mlx->mlx_ci.ci_iftype = 1; + + mlx->mlx_submit = mlx_v1_submit; + mlx->mlx_findcomplete = mlx_v1_findcomplete; + mlx->mlx_intaction = mlx_v1_intaction; + mlx->mlx_fw_handshake = mlx_v1_fw_handshake; +#ifdef MLX_RESET + mlx->mlx_reset = mlx_v1_reset; +#endif + + aprint_normal(": Mylex RAID\n"); + if (bus_space_map(iot, EISA_SLOT_ADDR(ea->ea_slot) + MLX_EISA_SLOT_OFFSET, MLX_EISA_IOSIZE, 0, &ioh)) { - aprint_error(": can't map i/o space\n"); + aprint_error_dev(self, "can't map i/o space\n"); return; } @@ -150,42 +166,32 @@ mlx_eisa_attach(device_t parent, device_ irq = 15; break; default: - aprint_error(": controller on invalid IRQ\n"); + aprint_error_dev(self, + "controller on invalid IRQ (icfg=0x%02x)\n", icfg); return; } + ist = (icfg & 0x08) != 0 ? IST_LEVEL : IST_EDGE; + if (eisa_intr_map(ec, irq, &ih)) { - aprint_error(": can't map interrupt (%d)\n", irq); + aprint_error_dev(self, "can't map interrupt (%d)\n", irq); return; } intrstr = eisa_intr_string(ec, ih, intrbuf, sizeof(intrbuf)); - mlx->mlx_ih = eisa_intr_establish(ec, ih, - ((icfg & 0x08) != 0 ? IST_LEVEL : IST_EDGE), - IPL_BIO, mlx_intr, mlx); + mlx->mlx_ih = eisa_intr_establish(ec, ih, ist, IPL_BIO, mlx_intr, mlx); if (mlx->mlx_ih == NULL) { - aprint_error(": can't establish interrupt"); + aprint_error_dev(self, "can't establish interrupt"); if (intrstr != NULL) - aprint_normal(" at %s", intrstr); - aprint_normal("\n"); + aprint_error(" at %s", intrstr); + aprint_error("\n"); return; } + if (intrstr != NULL) { + aprint_normal_dev(self, "interrupting at %s (%s trigger)\n", + ist == IST_EDGE ? "edge" : "level", intrstr); + } - dce = eisa_compatible_lookup(ea, compat_data); - KASSERT(dce != NULL); - - mlx->mlx_ci.ci_nchan = (int)dce->value; - mlx->mlx_ci.ci_iftype = 1; - - mlx->mlx_submit = mlx_v1_submit; - mlx->mlx_findcomplete = mlx_v1_findcomplete; - mlx->mlx_intaction = mlx_v1_intaction; - mlx->mlx_fw_handshake = mlx_v1_fw_handshake; -#ifdef MLX_RESET - mlx->mlx_reset = mlx_v1_reset; -#endif - - aprint_normal(": Mylex RAID\n"); mlx_init(mlx, intrstr); }