Ignore:
File:
1 edited

Legend:

Unmodified
Added
Removed
  • kernel/generic/src/ddi/ddi.c

    r8df5f20 r5a5269d  
    4646#include <mm/frame.h>
    4747#include <mm/as.h>
     48#include <mm/km.h>
    4849#include <mm/page.h>
    4950#include <synch/mutex.h>
     
    5657#include <trace.h>
    5758#include <bitops.h>
     59#include <arch/asm.h>
    5860
    5961/** This lock protects the @c pareas ordered dictionary. */
     
    246248 */
    247249sys_errno_t sys_physmem_map(uintptr_t phys, size_t pages, unsigned int flags,
    248     void *virt_ptr, uintptr_t bound)
     250    uspace_ptr_uintptr_t virt_ptr, uintptr_t bound)
    249251{
    250252        uintptr_t virt;
     
    260262        rc = copy_to_uspace(virt_ptr, &virt, sizeof(virt));
    261263        if (rc != EOK) {
    262                 physmem_unmap((uintptr_t) virt);
     264                physmem_unmap(virt);
    263265                return rc;
    264266        }
     
    391393 *
    392394 */
    393 sys_errno_t sys_iospace_enable(ddi_ioarg_t *uspace_io_arg)
     395sys_errno_t sys_iospace_enable(uspace_ptr_ddi_ioarg_t uspace_io_arg)
    394396{
    395397        ddi_ioarg_t arg;
     
    402404}
    403405
    404 sys_errno_t sys_iospace_disable(ddi_ioarg_t *uspace_io_arg)
     406sys_errno_t sys_iospace_disable(uspace_ptr_ddi_ioarg_t uspace_io_arg)
    405407{
    406408        ddi_ioarg_t arg;
     
    463465
    464466sys_errno_t sys_dmamem_map(size_t size, unsigned int map_flags, unsigned int flags,
    465     void *phys_ptr, void *virt_ptr, uintptr_t bound)
     467    uspace_ptr_uintptr_t phys_ptr, uspace_ptr_uintptr_t virt_ptr, uintptr_t bound)
    466468{
    467469        if ((flags & DMAMEM_FLAGS_ANONYMOUS) == 0) {
     
    471473
    472474                uintptr_t phys;
    473                 errno_t rc = dmamem_map((uintptr_t) virt_ptr, size, map_flags,
     475                errno_t rc = dmamem_map(virt_ptr, size, map_flags,
    474476                    flags, &phys);
    475477
     
    479481                rc = copy_to_uspace(phys_ptr, &phys, sizeof(phys));
    480482                if (rc != EOK) {
    481                         dmamem_unmap((uintptr_t) virt_ptr, size);
     483                        dmamem_unmap(virt_ptr, size);
    482484                        return rc;
    483485                }
     
    506508                rc = copy_to_uspace(phys_ptr, &phys, sizeof(phys));
    507509                if (rc != EOK) {
    508                         dmamem_unmap_anonymous((uintptr_t) virt);
     510                        dmamem_unmap_anonymous(virt);
    509511                        return rc;
    510512                }
     
    512514                rc = copy_to_uspace(virt_ptr, &virt, sizeof(virt));
    513515                if (rc != EOK) {
    514                         dmamem_unmap_anonymous((uintptr_t) virt);
     516                        dmamem_unmap_anonymous(virt);
    515517                        return rc;
    516518                }
     
    527529                return dmamem_unmap_anonymous(virt);
    528530}
     531void *pio_map(void *phys, size_t size)
     532{
     533#ifdef IO_SPACE_BOUNDARY
     534        if (phys < IO_SPACE_BOUNDARY)
     535                return phys;
     536#endif
     537        return (void *) km_map((uintptr_t) phys, size, KM_NATURAL_ALIGNMENT,
     538            PAGE_READ | PAGE_WRITE | PAGE_NOT_CACHEABLE);
     539}
     540
     541void pio_unmap(void *phys, void *virt, size_t size)
     542{
     543#ifdef IO_SPACE_BOUNDARY
     544        if (phys < IO_SPACE_BOUNDARY)
     545                return;
     546#endif
     547        km_unmap((uintptr_t) virt, size);
     548}
    529549
    530550/** @}
Note: See TracChangeset for help on using the changeset viewer.