Ignore:
File:
1 edited

Legend:

Unmodified
Added
Removed
  • uspace/lib/c/include/ddi.h

    r9d58539 r8cd680c  
    3636#define LIBC_DDI_H_
    3737
     38#include <stdbool.h>
    3839#include <sys/types.h>
     40#include <sys/time.h>
    3941#include <abi/ddi/irq.h>
     42#include <device/hw_res.h>
     43#include <device/hw_res_parsed.h>
     44#include <device/pio_window.h>
    4045#include <task.h>
     46
     47#define DMAMEM_16MiB  ((uintptr_t) UINT64_C(0xffffffffff000000))
     48#define DMAMEM_4GiB   ((uintptr_t) UINT64_C(0xffffffff00000000))
    4149
    4250extern int device_assign_devno(void);
    4351
    44 extern int physmem_map(void *, size_t, unsigned int, void **);
     52extern int physmem_map(uintptr_t, size_t, unsigned int, void **);
     53extern int physmem_unmap(void *);
    4554
    46 extern int dmamem_map(void *, size_t, unsigned int, unsigned int, void **);
    47 extern int dmamem_map_anonymous(size_t, unsigned int, unsigned int, void **,
    48     void **);
     55extern int dmamem_map(void *, size_t, unsigned int, unsigned int, uintptr_t *);
     56extern int dmamem_map_anonymous(size_t, uintptr_t, unsigned int, unsigned int,
     57    uintptr_t *, void **);
    4958extern int dmamem_unmap(void *, size_t);
    5059extern int dmamem_unmap_anonymous(void *);
    5160
    52 extern int iospace_enable(task_id_t, void *, unsigned long);
     61extern int pio_enable_range(addr_range_t *, void **);
     62extern int pio_enable_resource(pio_window_t *, hw_resource_t *, void **);
    5363extern int pio_enable(void *, size_t, void **);
     64extern int pio_disable(void *, size_t);
    5465
    55 extern int irq_register(int, int, int, irq_code_t *);
    56 extern int irq_unregister(int, int);
     66typedef void (*trace_fnc)(const volatile void *place, uint32_t val,
     67    volatile void* base, size_t size, void *data, bool write);
     68
     69extern int pio_trace_enable(void *, size_t, trace_fnc, void *);
     70extern void pio_trace_log(const volatile void *, uint32_t val, bool write);
     71extern void pio_trace_disable(void *);
     72
     73extern void pio_write_8(ioport8_t *, uint8_t);
     74extern void pio_write_16(ioport16_t *, uint16_t);
     75extern void pio_write_32(ioport32_t *, uint32_t);
     76
     77extern uint8_t pio_read_8(const ioport8_t *);
     78extern uint16_t pio_read_16(const ioport16_t *);
     79extern uint32_t pio_read_32(const ioport32_t *);
     80
     81static inline uint8_t pio_change_8(ioport8_t *reg, uint8_t val, uint8_t mask,
     82    useconds_t delay)
     83{
     84        uint8_t v = pio_read_8(reg);
     85        udelay(delay);
     86        pio_write_8(reg, (v & ~mask) | val);
     87        return v;
     88}
     89
     90static inline uint16_t pio_change_16(ioport16_t *reg, uint16_t val,
     91    uint16_t mask, useconds_t delay)
     92{
     93        uint16_t v = pio_read_16(reg);
     94        udelay(delay);
     95        pio_write_16(reg, (v & ~mask) | val);
     96        return v;
     97}
     98
     99static inline uint32_t pio_change_32(ioport32_t *reg, uint32_t val,
     100    uint32_t mask, useconds_t delay)
     101{
     102        uint32_t v = pio_read_32(reg);
     103        udelay(delay);
     104        pio_write_32(reg, (v & ~mask) | val);
     105        return v;
     106}
     107
     108static inline uint8_t pio_set_8(ioport8_t *r, uint8_t v, useconds_t d)
     109{
     110        return pio_change_8(r, v, 0, d);
     111}
     112static inline uint16_t pio_set_16(ioport16_t *r, uint16_t v, useconds_t d)
     113{
     114        return pio_change_16(r, v, 0, d);
     115}
     116static inline uint32_t pio_set_32(ioport32_t *r, uint32_t v, useconds_t d)
     117{
     118        return pio_change_32(r, v, 0, d);
     119}
     120
     121static inline uint8_t pio_clear_8(ioport8_t *r, uint8_t v, useconds_t d)
     122{
     123        return pio_change_8(r, 0, v, d);
     124}
     125static inline uint16_t pio_clear_16(ioport16_t *r, uint16_t v, useconds_t d)
     126{
     127        return pio_change_16(r, 0, v, d);
     128}
     129static inline uint32_t pio_clear_32(ioport32_t *r, uint32_t v, useconds_t d)
     130{
     131        return pio_change_32(r, 0, v, d);
     132}
    57133
    58134#endif
Note: See TracChangeset for help on using the changeset viewer.