Linux kernel & device driver programming

Cross-Referenced Linux and Device Driver Code

[ source navigation ] [ diff markup ] [ identifier search ] [ freetext search ] [ file search ]
Version: [ 2.6.11.8 ] [ 2.6.25 ] [ 2.6.25.8 ] [ 2.6.31.13 ] Architecture: [ i386 ]
  1 /*
  2  *  IBM eServer eHCA Infiniband device driver for Linux on POWER
  3  *
  4  *  Firmware calls
  5  *
  6  *  Authors: Christoph Raisch <raisch@de.ibm.com>
  7  *           Hoang-Nam Nguyen <hnguyen@de.ibm.com>
  8  *           Waleri Fomin <fomin@de.ibm.com>
  9  *           Gerd Bayer <gerd.bayer@de.ibm.com>
 10  *
 11  *  Copyright (c) 2005 IBM Corporation
 12  *
 13  *  All rights reserved.
 14  *
 15  *  This source code is distributed under a dual license of GPL v2.0 and OpenIB
 16  *  BSD.
 17  *
 18  * OpenIB BSD License
 19  *
 20  * Redistribution and use in source and binary forms, with or without
 21  * modification, are permitted provided that the following conditions are met:
 22  *
 23  * Redistributions of source code must retain the above copyright notice, this
 24  * list of conditions and the following disclaimer.
 25  *
 26  * Redistributions in binary form must reproduce the above copyright notice,
 27  * this list of conditions and the following disclaimer in the documentation
 28  * and/or other materials
 29  * provided with the distribution.
 30  *
 31  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
 32  * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
 33  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
 34  * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
 35  * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
 36  * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
 37  * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
 38  * BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER
 39  * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
 40  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
 41  * POSSIBILITY OF SUCH DAMAGE.
 42  */
 43 
 44 #ifndef __HCP_PHYP_H__
 45 #define __HCP_PHYP_H__
 46 
 47 
 48 /*
 49  * eHCA page (mapped into memory)
 50  * resource to access eHCA register pages in CPU address space
 51 */
 52 struct h_galpa {
 53         u64 fw_handle;
 54         /* for pSeries this is a 64bit memory address where
 55            I/O memory is mapped into CPU address space (kv) */
 56 };
 57 
 58 /*
 59  * resource to access eHCA address space registers, all types
 60  */
 61 struct h_galpas {
 62         u32 pid;                /*PID of userspace galpa checking */
 63         struct h_galpa user;    /* user space accessible resource,
 64                                    set to 0 if unused */
 65         struct h_galpa kernel;  /* kernel space accessible resource,
 66                                    set to 0 if unused */
 67 };
 68 
 69 static inline u64 hipz_galpa_load(struct h_galpa galpa, u32 offset)
 70 {
 71         u64 addr = galpa.fw_handle + offset;
 72         return *(volatile u64 __force *)addr;
 73 }
 74 
 75 static inline void hipz_galpa_store(struct h_galpa galpa, u32 offset, u64 value)
 76 {
 77         u64 addr = galpa.fw_handle + offset;
 78         *(volatile u64 __force *)addr = value;
 79 }
 80 
 81 int hcp_galpas_ctor(struct h_galpas *galpas, int is_user,
 82                     u64 paddr_kernel, u64 paddr_user);
 83 
 84 int hcp_galpas_dtor(struct h_galpas *galpas);
 85 
 86 int hcall_map_page(u64 physaddr, u64 * mapaddr);
 87 
 88 int hcall_unmap_page(u64 mapaddr);
 89 
 90 #endif
 91 
  This page was automatically generated by the LXR engine.