diff options
Diffstat (limited to 'sys/dev/spibus/spigen.c')
| -rw-r--r-- | sys/dev/spibus/spigen.c | 12 |
1 files changed, 6 insertions, 6 deletions
diff --git a/sys/dev/spibus/spigen.c b/sys/dev/spibus/spigen.c index 94f276d239f3..400ae1e139ad 100644 --- a/sys/dev/spibus/spigen.c +++ b/sys/dev/spibus/spigen.c @@ -73,7 +73,7 @@ struct spigen_softc { struct spigen_mmap { vm_object_t bufobj; - vm_offset_t kvaddr; + void *kvaddr; size_t bufsize; }; @@ -235,10 +235,10 @@ spigen_transfer_mmapped(struct cdev *cdev, struct spigen_transfer_mmapped *stm) if (mmap->bufsize < stm->stm_command_length + stm->stm_data_length) return (E2BIG); - transfer.tx_cmd = transfer.rx_cmd = (void *)((uintptr_t)mmap->kvaddr); + transfer.tx_cmd = transfer.rx_cmd = mmap->kvaddr; transfer.tx_cmd_sz = transfer.rx_cmd_sz = stm->stm_command_length; transfer.tx_data = transfer.rx_data = - (void *)((uintptr_t)mmap->kvaddr + stm->stm_command_length); + (void *)((char *)mmap->kvaddr + stm->stm_command_length); transfer.tx_data_sz = transfer.rx_data_sz = stm->stm_data_length; error = SPIBUS_TRANSFER(device_get_parent(dev), dev, &transfer); @@ -283,9 +283,9 @@ spigen_mmap_cleanup(void *arg) { struct spigen_mmap *mmap = arg; - if (mmap->kvaddr != 0) { + if (mmap->kvaddr != NULL) { pmap_qremove(mmap->kvaddr, mmap->bufsize / PAGE_SIZE); - kva_free(mmap->kvaddr, mmap->bufsize); + kva_free((vm_offset_t)mmap->kvaddr, mmap->bufsize); } if (mmap->bufobj != NULL) vm_object_deallocate(mmap->bufobj); @@ -312,7 +312,7 @@ spigen_mmap_single(struct cdev *cdev, vm_ooffset_t *offset, return (EBUSY); mmap = malloc(sizeof(*mmap), M_DEVBUF, M_ZERO | M_WAITOK); - if ((mmap->kvaddr = kva_alloc(size)) == 0) { + if ((mmap->kvaddr = (void *)kva_alloc(size)) == 0) { spigen_mmap_cleanup(mmap); return (ENOMEM); } |
