From: Jes Sorensen <Jes.Sorensen@xxxxxxxxxx> visorchannel's signal code should call visorchannel_write() directly. This is more consistent and cleaner, and allows us to remove the last memregion call. Signed-off-by: Jes Sorensen <Jes.Sorensen@xxxxxxxxxx> Signed-off-by: Benjamin Romer <benjamin.romer@xxxxxxxxxx> --- drivers/staging/unisys/visorbus/visorchannel.c | 34 ++++++++++------------ drivers/staging/unisys/visorutil/memregion.h | 2 -- .../staging/unisys/visorutil/memregion_direct.c | 12 -------- 3 files changed, 16 insertions(+), 32 deletions(-) diff --git a/drivers/staging/unisys/visorbus/visorchannel.c b/drivers/staging/unisys/visorbus/visorchannel.c index 549128d..564d325 100644 --- a/drivers/staging/unisys/visorbus/visorchannel.c +++ b/drivers/staging/unisys/visorbus/visorchannel.c @@ -250,8 +250,8 @@ visorchannel_clear(struct visorchannel *channel, ulong offset, u8 ch, if (nbytes < thisbytes) thisbytes = nbytes; - err = visor_memregion_write(&channel->memregion, - offset + written, buf, thisbytes); + err = visorchannel_write(channel, offset + written, + buf, thisbytes); if (err) goto cleanup; @@ -290,12 +290,12 @@ EXPORT_SYMBOL_GPL(visorchannel_get_header); /** Write the contents of a specific field within a SIGNAL_QUEUE_HEADER back * into host memory */ -#define SIG_WRITE_FIELD(channel, queue, sig_hdr, FIELD) \ - (visor_memregion_write(&channel->memregion, \ - SIG_QUEUE_OFFSET(&channel->chan_hdr, queue)+ \ - offsetof(struct signal_queue_header, FIELD),\ - &((sig_hdr)->FIELD), \ - sizeof((sig_hdr)->FIELD)) >= 0) +#define SIG_WRITE_FIELD(channel, queue, sig_hdr, FIELD) \ + (visorchannel_write(channel, \ + SIG_QUEUE_OFFSET(&channel->chan_hdr, queue)+ \ + offsetof(struct signal_queue_header, FIELD), \ + &((sig_hdr)->FIELD), \ + sizeof((sig_hdr)->FIELD)) >= 0) static BOOL sig_read_header(struct visorchannel *channel, u32 queue, @@ -340,9 +340,8 @@ sig_write_data(struct visorchannel *channel, u32 queue, int signal_data_offset = SIG_DATA_OFFSET(&channel->chan_hdr, queue, sig_hdr, slot); - err = visor_memregion_write(&channel->memregion, - signal_data_offset, - data, sig_hdr->signal_size); + err = visorchannel_write(channel, signal_data_offset, + data, sig_hdr->signal_size); if (err) return FALSE; @@ -403,13 +402,12 @@ signalinsert_inner(struct visorchannel *channel, u32 queue, void *msg) sig_hdr.head = ((sig_hdr.head + 1) % sig_hdr.max_slots); if (sig_hdr.head == sig_hdr.tail) { sig_hdr.num_overflows++; - visor_memregion_write(&channel->memregion, - SIG_QUEUE_OFFSET(&channel->chan_hdr, - queue) + - offsetof(struct signal_queue_header, - num_overflows), - &(sig_hdr.num_overflows), - sizeof(sig_hdr.num_overflows)); + visorchannel_write(channel, + SIG_QUEUE_OFFSET(&channel->chan_hdr, queue) + + offsetof(struct signal_queue_header, + num_overflows), + &(sig_hdr.num_overflows), + sizeof(sig_hdr.num_overflows)); return FALSE; } diff --git a/drivers/staging/unisys/visorutil/memregion.h b/drivers/staging/unisys/visorutil/memregion.h index 4122b48..62036cd 100644 --- a/drivers/staging/unisys/visorutil/memregion.h +++ b/drivers/staging/unisys/visorutil/memregion.h @@ -29,8 +29,6 @@ struct memregion { void __iomem *mapped; }; -int visor_memregion_write(struct memregion *memregion, - ulong offset, void *src, ulong nbytes); void memregion_dump(struct memregion *memregion, char *s, ulong off, ulong len, struct seq_file *seq); diff --git a/drivers/staging/unisys/visorutil/memregion_direct.c b/drivers/staging/unisys/visorutil/memregion_direct.c index 17b1033..818f6a8 100644 --- a/drivers/staging/unisys/visorutil/memregion_direct.c +++ b/drivers/staging/unisys/visorutil/memregion_direct.c @@ -24,15 +24,3 @@ #include "memregion.h" #define MYDRVNAME "memregion" - -int -visor_memregion_write(struct memregion *memregion, ulong offset, void *src, - ulong nbytes) -{ - if (offset + nbytes > memregion->nbytes) - return -EIO; - - memcpy_toio(memregion->mapped + offset, src, nbytes); - return 0; -} -EXPORT_SYMBOL_GPL(visor_memregion_write); -- 2.1.4 _______________________________________________ devel mailing list devel@xxxxxxxxxxxxxxxxxxxxxx http://driverdev.linuxdriverproject.org/mailman/listinfo/driverdev-devel