00001 /* $Id: libio.h 31603 2008-05-12 06:54:17Z adam $ */ 00002 /*****************************************************************************/ 00011 /* (c) 2007 Technische Universitaet Dresden 00012 * This file is part of DROPS, which is distributed under the terms of the 00013 * GNU General Public License 2. Please see the COPYING file for details. 00014 */ 00015 00016 #ifndef __GENERIC_IO_INCLUDE_LIBIO_H_ 00017 #define __GENERIC_IO_INCLUDE_LIBIO_H_ 00018 00019 /* L4 includes */ 00020 #include <l4/sys/types.h> 00021 #include <l4/generic_io/types.h> 00022 00023 EXTERN_C_BEGIN 00024 00025 /*****************************************************************************/ 00049 /*****************************************************************************/ 00050 L4_CV int l4io_init(l4io_info_t **io_info_addr, l4io_drv_t drv_type); 00051 00052 /*****************************************************************************/ 00059 /*****************************************************************************/ 00060 L4_CV l4io_info_t *l4io_info_page(void); 00061 00062 /*****************************************************************************/ 00072 /*****************************************************************************/ 00073 L4_CV l4io_desc_device_t *l4io_desc_lookup_device(const char *name, 00074 l4io_info_t *iopage); 00075 00076 /*****************************************************************************/ 00088 /*****************************************************************************/ 00089 L4_CV int l4io_desc_lookup_resource(l4io_desc_device_t *d, 00090 unsigned long type, int i); 00091 00092 /*****************************************************************************/ 00104 /*****************************************************************************/ 00105 L4_CV l4_addr_t l4io_request_mem_region(l4_addr_t start, l4_size_t len, 00106 int flags); 00107 00108 /*****************************************************************************/ 00118 /*****************************************************************************/ 00119 L4_CV l4_addr_t l4io_request_mem_region_name(const char *name, const int index); 00120 00121 /*****************************************************************************/ 00131 /*****************************************************************************/ 00132 L4_CV int l4io_get_irq_name(const char *name, const int index); 00133 00134 /******************************************************************************/ 00145 /*****************************************************************************/ 00146 L4_CV int l4io_search_mem_region(l4_addr_t addr, 00147 l4_addr_t *start, l4_size_t *len); 00148 00149 /******************************************************************************/ 00159 /*****************************************************************************/ 00160 L4_CV int l4io_release_mem_region(l4_addr_t start, l4_size_t len); 00161 00162 /*****************************************************************************/ 00172 /*****************************************************************************/ 00173 L4_CV int l4io_request_region(l4_uint16_t start, l4_uint16_t len); 00174 00175 /*****************************************************************************/ 00185 /*****************************************************************************/ 00186 L4_CV int l4io_release_region(l4_uint16_t start, l4_uint16_t len); 00187 00188 /*****************************************************************************/ 00197 /*****************************************************************************/ 00198 L4_CV int l4io_request_dma(unsigned int channel); 00199 00200 /*****************************************************************************/ 00209 /*****************************************************************************/ 00210 L4_CV int l4io_release_dma(unsigned int channel); 00211 00212 /******************************************************************************/ 00224 /*****************************************************************************/ 00225 L4_CV int l4io_pci_find_slot(unsigned int bus, unsigned int slot, 00226 l4io_pci_dev_t * pci_dev); 00227 00228 /*****************************************************************************/ 00241 /*****************************************************************************/ 00242 L4_CV int l4io_pci_find_device(unsigned short vendor, unsigned short device, 00243 l4io_pdev_t start, l4io_pci_dev_t * pci_dev); 00244 00245 /*****************************************************************************/ 00257 /*****************************************************************************/ 00258 L4_CV int l4io_pci_find_class(unsigned long dev_class, 00259 l4io_pdev_t start, l4io_pci_dev_t * pci_dev); 00260 00261 /*****************************************************************************/ 00270 /*****************************************************************************/ 00271 L4_CV int l4io_pci_enable(l4io_pdev_t pdev); 00272 00273 /*****************************************************************************/ 00282 /*****************************************************************************/ 00283 L4_CV int l4io_pci_disable(l4io_pdev_t pdev); 00284 00285 /*****************************************************************************/ 00292 /*****************************************************************************/ 00293 L4_CV void l4io_pci_set_master(l4io_pdev_t pdev); 00294 00295 /*****************************************************************************/ 00305 /*****************************************************************************/ 00306 L4_CV int l4io_pci_set_pm(l4io_pdev_t pdev, int state); 00307 00308 /*****************************************************************************/ 00321 /*****************************************************************************/ 00322 L4_CV int l4io_pci_readb_cfg(l4io_pdev_t pdev, int pos, l4_uint8_t * val); 00323 L4_CV int l4io_pci_readw_cfg(l4io_pdev_t pdev, int pos, l4_uint16_t * val); 00324 L4_CV int l4io_pci_readl_cfg(l4io_pdev_t pdev, int pos, l4_uint32_t * val); 00325 00327 /*****************************************************************************/ 00339 /*****************************************************************************/ 00340 L4_CV int l4io_pci_writeb_cfg(l4io_pdev_t pdev, int pos, l4_uint8_t val); 00341 L4_CV int l4io_pci_writew_cfg(l4io_pdev_t pdev, int pos, l4_uint16_t val); 00342 L4_CV int l4io_pci_writel_cfg(l4io_pdev_t pdev, int pos, l4_uint32_t val); 00345 EXTERN_C_END 00346 00347 #endif