Module Name: src
Committed By: andvar
Date: Sun Dec 17 22:01:56 UTC 2023
Modified Files:
src/sys/arch/x68k/dev: intio_dmac.c
Log Message:
Fix DMAC_ARRAYCHAIN enabled build:
pass dmac->sc_dev instead of undefined self in dmac_start_xfer_offset().
remove unused chan/ch variables in dmac_program_arraychain().
initialize c to zero in dmac_start_xfer_offset() and add check that is bigger
than 0 before calling dma_cachectl() to fix potentially uninitialized error
(seems to be false positive though).
To generate a diff of this commit:
cvs rdiff -u -r1.37 -r1.38 src/sys/arch/x68k/dev/intio_dmac.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/x68k/dev/intio_dmac.c
diff -u src/sys/arch/x68k/dev/intio_dmac.c:1.37 src/sys/arch/x68k/dev/intio_dmac.c:1.38
--- src/sys/arch/x68k/dev/intio_dmac.c:1.37 Fri Aug 11 07:30:01 2017
+++ src/sys/arch/x68k/dev/intio_dmac.c Sun Dec 17 22:01:56 2023
@@ -1,4 +1,4 @@
-/* $NetBSD: intio_dmac.c,v 1.37 2017/08/11 07:30:01 isaki Exp $ */
+/* $NetBSD: intio_dmac.c,v 1.38 2023/12/17 22:01:56 andvar Exp $ */
/*-
* Copyright (c) 1997, 1998 The NetBSD Foundation, Inc.
@@ -36,7 +36,7 @@
#include "opt_m68k_arch.h"
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: intio_dmac.c,v 1.37 2017/08/11 07:30:01 isaki Exp $");
+__KERNEL_RCSID(0, "$NetBSD: intio_dmac.c,v 1.38 2023/12/17 22:01:56 andvar Exp $");
#include <sys/param.h>
#include <sys/systm.h>
@@ -352,7 +352,7 @@ dmac_start_xfer_offset(struct dmac_softc
bus_addr_t paddr;
uint8_t csr;
#ifdef DMAC_ARRAYCHAIN
- int c;
+ int c = 0;
#endif
DPRINTF(3, ("dmac_start_xfer\n"));
@@ -411,7 +411,7 @@ dmac_start_xfer_offset(struct dmac_softc
#endif
} else {
#ifdef DMAC_ARRAYCHAIN
- c = dmac_program_arraychain(self, xf, offset, size);
+ c = dmac_program_arraychain(dmac->sc_dev, xf, offset, size);
bus_space_write_4(dmac->sc_bst, chan->ch_bht,
DMAC_REG_BAR, (int) chan->ch_seg[0].ds_addr);
bus_space_write_2(dmac->sc_bst, chan->ch_bht,
@@ -429,7 +429,7 @@ dmac_start_xfer_offset(struct dmac_softc
#ifdef DMAC_ARRAYCHAIN
#if defined(M68040) || defined(M68060)
/* flush data cache for the map */
- if (dmamap->dm_nsegs != 1 && mmutype == MMU_68040)
+ if (dmamap->dm_nsegs != 1i && mmutype == MMU_68040 && c > 0)
dma_cachectl((void *) xf->dx_array,
sizeof(struct dmac_sg_array) * c);
#endif
@@ -444,8 +444,6 @@ static int
dmac_program_arraychain(device_t self, struct dmac_dma_xfer *xf,
u_int offset, u_int size)
{
- struct dmac_channel_stat *chan = xf->dx_channel;
- int ch = chan->ch_channel;
struct x68k_bus_dmamap *map = xf->dx_dmamap;
int i, j;