1  /*
   2   * \brief  Hardware-resource access
   3   * \author Christian Helmuth
   4   * \date   2008-10-21
   5   */

   6  
   7  /*
   8   * Copyright (C) 2008-2013 Genode Labs GmbH
   9   *
  10   * This file is part of the Genode OS framework, which is distributed
  11   * under the terms of the GNU General Public License version 2.
  12   */

  13  
  14  #ifndef _INCLUDE__DDE_KIT__RESOURCES_H_
  15  #define _INCLUDE__DDE_KIT__RESOURCES_H_
  16  
  17  #include <dde_kit/types.h>
  18  
  19  /**
  20   * Allocate I/O port range (x86)
  21   *
  22   * \param start  first port of range
  23   * \param size   size of port range
  24   *
  25   * \return 0 on success, -1 otherwise
  26   */

  27  int dde_kit_request_io(dde_kit_addr_t start, dde_kit_size_t size);

  28  
  29  /**
  30   * Free I/O port range (x86)
  31   *
  32   * \param start  first port of range
  33   * \param size   size of port range
  34   *
  35   * \return 0 on success, -1 otherwise
  36   */

  37  int dde_kit_release_io(dde_kit_addr_t start, dde_kit_size_t size);

  38  
  39  /**
  40   * Read I/O port (byte)
  41   *
  42   * \param port  port to read
  43   *
  44   * \return value read from port
  45   */

  46  unsigned char dde_kit_inb(dde_kit_addr_t port);

  47  
  48  /**
  49   * Read I/O port (2-byte)
  50   *
  51   * \param port  port to read
  52   *
  53   * \return value read from port
  54   */

  55  unsigned short dde_kit_inw(dde_kit_addr_t port);

  56  
  57  /**
  58   * Read I/O port (4-byte)
  59   *
  60   * \param port  port to read
  61   *
  62   * \return value read from port
  63   */

  64  unsigned long dde_kit_inl(dde_kit_addr_t port);

  65  
  66  /**
  67   * Write I/O port (byte)
  68   *
  69   * \param port  port to write
  70   * \param val   value to write
  71   */

  72  void dde_kit_outb(dde_kit_addr_t port, unsigned char val);

  73  
  74  /**
  75   * Write I/O port (2-byte)
  76   *
  77   * \param port  port to write
  78   * \param val   value to write
  79   */

  80  void dde_kit_outw(dde_kit_addr_t port, unsigned short val);

  81  
  82  /**
  83   * Write I/O port (4-byte)
  84   *
  85   * \param port  port to write
  86   * \param val   value to write
  87   */

  88  void dde_kit_outl(dde_kit_addr_t port, unsigned long val);

  89  
  90  /**
  91   * Allocate MMIO range
  92   *
  93   * \param  start  begin of MMIO range
  94   * \param  size   size of MMIO range
  95   * \param  wc     if !0 request write-combined memory mapping
  96   *
  97   * \retval vaddr  virtual start address mapped range
  98   * \return 0 on success, -1 otherwise
  99   */

 100  int dde_kit_request_mem(dde_kit_addr_t start, dde_kit_size_t size,
 101                          int wc, dde_kit_addr_t *vaddr)
;

 102  
 103  /**
 104   * Free MMIO range
 105   *
 106   * \param  start  begin of MMIO range
 107   * \param  size   size of MMIO range
 108   *
 109   * \return 0 on success, -1 otherwise
 110   */

 111  int dde_kit_release_mem(dde_kit_addr_t start, dde_kit_size_t size);

 112  
 113  #endif /* _INCLUDE__DDE_KIT__RESOURCES_H_ */