Fix caddr_t fallout. Well, this driver is too ugly to read...
This commit is contained in:
parent
fdcc1ff67a
commit
f29951d982
|
@ -1,4 +1,4 @@
|
|||
/* $NetBSD: esp.c,v 1.53 2007/03/04 06:00:26 christos Exp $ */
|
||||
/* $NetBSD: esp.c,v 1.54 2007/03/05 15:05:24 tsutsui Exp $ */
|
||||
|
||||
/*-
|
||||
* Copyright (c) 1997, 1998 The NetBSD Foundation, Inc.
|
||||
|
@ -82,7 +82,7 @@
|
|||
*/
|
||||
|
||||
#include <sys/cdefs.h>
|
||||
__KERNEL_RCSID(0, "$NetBSD: esp.c,v 1.53 2007/03/04 06:00:26 christos Exp $");
|
||||
__KERNEL_RCSID(0, "$NetBSD: esp.c,v 1.54 2007/03/05 15:05:24 tsutsui Exp $");
|
||||
|
||||
#include <sys/types.h>
|
||||
#include <sys/param.h>
|
||||
|
@ -664,8 +664,8 @@ esp_dma_intr(struct ncr53c9x_softc *sc)
|
|||
ndtracep += strlen (ndtracep);
|
||||
);
|
||||
|
||||
*(esc->sc_dmaaddr) += xfer_len;
|
||||
*(esc->sc_dmalen) -= xfer_len;
|
||||
*esc->sc_dmaaddr = (char *)*esc->sc_dmaaddr + xfer_len;
|
||||
*esc->sc_dmalen -= xfer_len;
|
||||
esc->sc_dmaaddr = 0;
|
||||
esc->sc_dmalen = 0;
|
||||
esc->sc_dmasize = 0;
|
||||
|
@ -826,7 +826,7 @@ esp_dma_setup(struct ncr53c9x_softc *sc, void **addr, size_t *len, int datain,
|
|||
|
||||
{
|
||||
u_long bgn = (u_long)(*esc->sc_dmaaddr);
|
||||
u_long end = (u_long)(*esc->sc_dmaaddr+esc->sc_dmasize);
|
||||
u_long end = bgn + esc->sc_dmasize;
|
||||
|
||||
slop_bgn_size = DMA_SCSI_ALIGNMENT-(bgn % DMA_SCSI_ALIGNMENT);
|
||||
if (slop_bgn_size == DMA_SCSI_ALIGNMENT) slop_bgn_size = 0;
|
||||
|
@ -873,7 +873,8 @@ esp_dma_setup(struct ncr53c9x_softc *sc, void **addr, size_t *len, int datain,
|
|||
#if 01
|
||||
/* Load the normal DMA map */
|
||||
{
|
||||
esc->sc_main = *esc->sc_dmaaddr+slop_bgn_size;
|
||||
esc->sc_main = *esc->sc_dmaaddr;
|
||||
esc->sc_main += slop_bgn_size;
|
||||
esc->sc_main_size = (esc->sc_dmasize)-(slop_end_size+slop_bgn_size);
|
||||
|
||||
if (esc->sc_main_size) {
|
||||
|
@ -885,7 +886,7 @@ esp_dma_setup(struct ncr53c9x_softc *sc, void **addr, size_t *len, int datain,
|
|||
esc->sc_main_size += slop_end_size;
|
||||
slop_end_size = 0;
|
||||
if (!esc->sc_datain) {
|
||||
esc->sc_main_size = DMA_ENDALIGN(void *,esc->sc_main+esc->sc_main_size)-esc->sc_main;
|
||||
esc->sc_main_size = DMA_ENDALIGN(uint8_t *,esc->sc_main+esc->sc_main_size)-esc->sc_main;
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -926,13 +927,13 @@ esp_dma_setup(struct ncr53c9x_softc *sc, void **addr, size_t *len, int datain,
|
|||
|
||||
/* Load the tail DMA map */
|
||||
if (slop_end_size) {
|
||||
esc->sc_tail = DMA_ENDALIGN(void *,esc->sc_tailbuf+slop_end_size)-slop_end_size;
|
||||
esc->sc_tail = DMA_ENDALIGN(uint8_t *,esc->sc_tailbuf+slop_end_size)-slop_end_size;
|
||||
/* If the beginning of the tail is not correctly aligned,
|
||||
* we have no choice but to align the start, which might then unalign the end.
|
||||
*/
|
||||
esc->sc_tail = DMA_SCSI_ALIGN(void *,esc->sc_tail);
|
||||
esc->sc_tail = DMA_SCSI_ALIGN(uint8_t *,esc->sc_tail);
|
||||
/* So therefore, we change the tail size to be end aligned again. */
|
||||
esc->sc_tail_size = DMA_ENDALIGN(void *,esc->sc_tail+slop_end_size)-esc->sc_tail;
|
||||
esc->sc_tail_size = DMA_ENDALIGN(uint8_t *,esc->sc_tail+slop_end_size)-esc->sc_tail;
|
||||
|
||||
/* @@@ next DMA overrun lossage */
|
||||
if (!esc->sc_datain) {
|
||||
|
@ -971,8 +972,9 @@ esp_dma_setup(struct ncr53c9x_softc *sc, void **addr, size_t *len, int datain,
|
|||
esc->sc_tail_size = 0;
|
||||
|
||||
esc->sc_begin_size = slop_bgn_size;
|
||||
esc->sc_main = *esc->sc_dmaaddr+slop_bgn_size;
|
||||
esc->sc_main_size = DMA_ENDALIGN(void *,esc->sc_main+esc->sc_dmasize-slop_bgn_size)-esc->sc_main;
|
||||
esc->sc_main = *esc->sc_dmaaddr;
|
||||
esc->sc_main += slop_bgn_size;
|
||||
esc->sc_main_size = DMA_ENDALIGN(uint8_t *,esc->sc_main+esc->sc_dmasize-slop_bgn_size)-esc->sc_main;
|
||||
|
||||
if (!esc->sc_datain) {
|
||||
esc->sc_main_size += ESP_DMA_OVERRUN;
|
||||
|
@ -992,14 +994,14 @@ esp_dma_setup(struct ncr53c9x_softc *sc, void **addr, size_t *len, int datain,
|
|||
esc->sc_main_size = 0;
|
||||
|
||||
#if 0
|
||||
esc->sc_tail = DMA_ENDALIGN(void *,esc->sc_tailbuf+slop_bgn_size)-slop_bgn_size;
|
||||
esc->sc_tail = DMA_ENDALIGN(uint8_t *,esc->sc_tailbuf+slop_bgn_size)-slop_bgn_size;
|
||||
/* If the beginning of the tail is not correctly aligned,
|
||||
* we have no choice but to align the start, which might then unalign the end.
|
||||
*/
|
||||
#endif
|
||||
esc->sc_tail = DMA_SCSI_ALIGN(void *,esc->sc_tailbuf);
|
||||
/* So therefore, we change the tail size to be end aligned again. */
|
||||
esc->sc_tail_size = DMA_ENDALIGN(void *,esc->sc_tail+esc->sc_dmasize)-esc->sc_tail;
|
||||
esc->sc_tail_size = DMA_ENDALIGN(uint8_t *,esc->sc_tail+esc->sc_dmasize)-esc->sc_tail;
|
||||
|
||||
/* @@@ next DMA overrun lossage */
|
||||
if (!esc->sc_datain) {
|
||||
|
@ -1174,7 +1176,7 @@ esp_dma_go(struct ncr53c9x_softc *sc)
|
|||
if (esc->sc_tail_dmamap->dm_mapsize) {
|
||||
/* if we are a DMA write cycle, copy the end slop */
|
||||
if (!esc->sc_datain) {
|
||||
memcpy(esc->sc_tail, *esc->sc_dmaaddr+esc->sc_begin_size+esc->sc_main_size,
|
||||
memcpy(esc->sc_tail, (char *)*esc->sc_dmaaddr+esc->sc_begin_size+esc->sc_main_size,
|
||||
esc->sc_dmasize-(esc->sc_begin_size+esc->sc_main_size));
|
||||
}
|
||||
bus_dmamap_sync(esc->sc_dma->sc_dmat, esc->sc_tail_dmamap,
|
||||
|
@ -1642,7 +1644,7 @@ esp_dmacb_shutdown(void *arg)
|
|||
bus_dmamap_unload(esc->sc_dma->sc_dmat, esc->sc_tail_dmamap);
|
||||
/* copy the tail DMA buffer data for read transfers */
|
||||
if (esc->sc_datain) {
|
||||
memcpy(*esc->sc_dmaaddr+esc->sc_begin_size+esc->sc_main_size,
|
||||
memcpy((char *)*esc->sc_dmaaddr+esc->sc_begin_size+esc->sc_main_size,
|
||||
esc->sc_tail, esc->sc_dmasize-(esc->sc_begin_size+esc->sc_main_size));
|
||||
}
|
||||
NDTRACEIF (
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
/* $NetBSD: espvar.h,v 1.16 2007/03/04 06:00:26 christos Exp $ */
|
||||
/* $NetBSD: espvar.h,v 1.17 2007/03/05 15:05:24 tsutsui Exp $ */
|
||||
|
||||
/*-
|
||||
* Copyright (c) 1997 The NetBSD Foundation, Inc.
|
||||
|
@ -44,8 +44,8 @@ struct esp_softc {
|
|||
bus_space_handle_t sc_bsh; /* the device registers */
|
||||
|
||||
void **sc_dmaaddr; /* saved argument to esp_dma_setup */
|
||||
size_t *sc_dmalen; /* saved argument to esp_dma_setup */
|
||||
size_t sc_dmasize; /* saved argument to esp_dma_setup */
|
||||
size_t *sc_dmalen; /* saved argument to esp_dma_setup */
|
||||
size_t sc_dmasize; /* saved argument to esp_dma_setup */
|
||||
int sc_datain; /* saved argument to esp_dma_setup */
|
||||
|
||||
#define ESP_LOADED_MAIN (0x01)
|
||||
|
@ -60,12 +60,12 @@ struct esp_softc {
|
|||
/* To deal with begin alignment problems, we stuff the fifo
|
||||
* with a begin buffer
|
||||
*/
|
||||
void * sc_begin; /* pointer to start io buf, NULL if invalid */
|
||||
size_t sc_begin_size; /* */
|
||||
uint8_t *sc_begin; /* pointer to start io buf, NULL if invalid */
|
||||
size_t sc_begin_size; /* */
|
||||
|
||||
bus_dmamap_t sc_main_dmamap; /* I/O DMA map */
|
||||
void * sc_main; /* pointer to main io buf, NULL if invalid */
|
||||
size_t sc_main_size; /* aligned length of main io buf we are using */
|
||||
bus_dmamap_t sc_main_dmamap; /* I/O DMA map */
|
||||
uint8_t *sc_main; /* pointer to main io buf, NULL if invalid */
|
||||
size_t sc_main_size; /* aligned length of main io buf we are using */
|
||||
|
||||
/* To deal with end alignment problems, we copy the end of the DMA
|
||||
* buffer into a "tail" buffer that we can control more carefully.
|
||||
|
@ -75,9 +75,9 @@ struct esp_softc {
|
|||
#define ESP_DMA_MAXTAIL 128
|
||||
#define ESP_DMA_TAILBUFSIZE (ESP_DMA_MAXTAIL+2*DMA_ENDALIGNMENT+ESP_DMA_OVERRUN)
|
||||
bus_dmamap_t sc_tail_dmamap;
|
||||
void *sc_tail; /* pointer into sc_tailbuf, NULL if invalid */
|
||||
uint8_t *sc_tail; /* pointer into sc_tailbuf, NULL if invalid */
|
||||
size_t sc_tail_size; /* aligned length of tailbuf we are using */
|
||||
u_char sc_tailbuf[ESP_DMA_TAILBUFSIZE];
|
||||
uint8_t sc_tailbuf[ESP_DMA_TAILBUFSIZE];
|
||||
};
|
||||
|
||||
#ifndef ESP_MAX_DMASIZE
|
||||
|
|
Loading…
Reference in New Issue