Ignore:
File:
1 edited

Legend:

Unmodified
Added
Removed
  • uspace/lib/c/generic/ddi.c

    racc0efb r9d58539  
    3434
    3535#include <assert.h>
    36 #include <atomic.h>
    3736#include <unistd.h>
    38 #include <stdio.h>
    3937#include <errno.h>
    4038#include <sys/types.h>
     
    4846#include <libarch/config.h>
    4947#include "private/libc.h"
    50 
    5148
    5249/** Return unique device number.
     
    123120 *
    124121 */
    125 static int iospace_enable(task_id_t id, void *ioaddr, size_t size)
     122int iospace_enable(task_id_t id, void *ioaddr, unsigned long size)
    126123{
    127         const ddi_ioarg_t arg = {
    128                 .task_id = id,
    129                 .ioaddr = ioaddr,
    130                 .size = size
    131         };
     124        ddi_ioarg_t arg;
     125       
     126        arg.task_id = id;
     127        arg.ioaddr = ioaddr;
     128        arg.size = size;
    132129       
    133130        return __SYSCALL1(SYS_IOSPACE_ENABLE, (sysarg_t) &arg);
     
    139136 * @param size     Size of the I/O region.
    140137 * @param virt     Virtual address for application's
    141  *                 PIO operations. Can be NULL for PMIO.
     138 *                 PIO operations.
    142139 *
    143140 * @return EOK on success.
     
    149146#ifdef IO_SPACE_BOUNDARY
    150147        if (pio_addr < IO_SPACE_BOUNDARY) {
    151                 if (virt)
    152                         *virt = pio_addr;
     148                *virt = pio_addr;
    153149                return iospace_enable(task_get_id(), pio_addr, size);
    154150        }
    155151#endif
    156         if (!virt)
    157                 return EINVAL;
    158 
     152       
    159153        void *phys_frame =
    160154            (void *) ALIGN_DOWN((uintptr_t) pio_addr, PAGE_SIZE);
     
    170164        *virt = virt_page + offset;
    171165        return EOK;
    172 }
    173 
    174 void pio_write_8(ioport8_t *reg, uint8_t val)
    175 {
    176         pio_trace_log(reg, val, true);
    177         arch_pio_write_8(reg, val);
    178 }
    179 
    180 void pio_write_16(ioport16_t *reg, uint16_t val)
    181 {
    182         pio_trace_log(reg, val, true);
    183         arch_pio_write_16(reg, val);
    184 }
    185 
    186 void pio_write_32(ioport32_t *reg, uint32_t val)
    187 {
    188         pio_trace_log(reg, val, true);
    189         arch_pio_write_32(reg, val);
    190 }
    191 
    192 uint8_t pio_read_8(ioport8_t *reg)
    193 {
    194         const uint8_t val = arch_pio_read_8(reg);
    195         pio_trace_log(reg, val, false);
    196         return val;
    197 }
    198 
    199 uint16_t pio_read_16(ioport16_t *reg)
    200 {
    201         const uint16_t val = arch_pio_read_16(reg);
    202         pio_trace_log(reg, val, false);
    203         return val;
    204 }
    205 
    206 uint32_t pio_read_32(ioport32_t *reg)
    207 {
    208         const uint32_t val = arch_pio_read_32(reg);
    209         pio_trace_log(reg, val, false);
    210         return val;
    211166}
    212167
Note: See TracChangeset for help on using the changeset viewer.