linux/drivers/staging/cxt1e1/sbecom_inline_linux.h
<<
>>
Prefs
   1/*
   2 * $Id: sbecom_inline_linux.h,v 1.2 2007/08/15 22:51:35 rickd PMCC4_3_1B $
   3 */
   4
   5#ifndef _INC_SBECOM_INLNX_H_
   6#define _INC_SBECOM_INLNX_H_
   7
   8/*-----------------------------------------------------------------------------
   9 * sbecom_inline_linux.h - SBE common Linux inlined routines
  10 *
  11 * Copyright (C) 2007  One Stop Systems, Inc.
  12 * Copyright (C) 2005  SBE, Inc.
  13 *
  14 *   This program is free software; you can redistribute it and/or modify
  15 *   it under the terms of the GNU General Public License as published by
  16 *   the Free Software Foundation; either version 2 of the License, or
  17 *   (at your option) any later version.
  18 *
  19 *   This program is distributed in the hope that it will be useful,
  20 *   but WITHOUT ANY WARRANTY; without even the implied warranty of
  21 *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  22 *   GNU General Public License for more details.
  23 *
  24 * For further information, contact via email: support@onestopsystems.com
  25 * One Stop Systems, Inc.  Escondido, California  U.S.A.
  26 *-----------------------------------------------------------------------------
  27 * RCS info:
  28 * RCS revision: $Revision: 1.2 $
  29 * Last changed on $Date: 2007/08/15 22:51:35 $
  30 * Changed by $Author: rickd $
  31 *-----------------------------------------------------------------------------
  32 * $Log: sbecom_inline_linux.h,v $
  33 * Revision 1.2  2007/08/15 22:51:35  rickd
  34 * Remove duplicate version.h entry.
  35 *
  36 * Revision 1.1  2007/08/15 22:50:29  rickd
  37 * Update linux/config for 2.6.18 and later.
  38 *
  39 * Revision 1.0  2005/09/28 00:10:09  rickd
  40 * Initial revision
  41 *
  42 *-----------------------------------------------------------------------------
  43 */
  44
  45
  46#include <linux/types.h>
  47#include <linux/module.h>
  48#include <linux/kernel.h>       /* resolves kmalloc references */
  49#include <linux/skbuff.h>       /* resolves skb references */
  50#include <linux/netdevice.h>    /* resolves dev_kree_skb_any */
  51#include <asm/byteorder.h>      /* resolves cpu_to_le32 */
  52
  53/* forward reference */
  54u_int32_t   pci_read_32 (u_int32_t *p);
  55void        pci_write_32 (u_int32_t *p, u_int32_t v);
  56
  57
  58/*
  59 * system dependent callbacks
  60 */
  61
  62/**********/
  63/* malloc */
  64/**********/
  65
  66static inline void *
  67OS_kmalloc (size_t size)
  68{
  69    char       *ptr = kmalloc (size, GFP_KERNEL | GFP_DMA);
  70
  71    if (ptr)
  72        memset (ptr, 0, size);
  73    return ptr;
  74}
  75
  76static inline void
  77OS_kfree (void *x)
  78{
  79    kfree (x);
  80}
  81
  82
  83/****************/
  84/* memory token */
  85/****************/
  86
  87static inline void *
  88OS_mem_token_alloc (size_t size)
  89{
  90    struct sk_buff *skb;
  91
  92    skb = dev_alloc_skb (size);
  93    if (!skb)
  94    {
  95        //pr_warning("no mem in OS_mem_token_alloc !\n");
  96        return 0;
  97    }
  98    return skb;
  99}
 100
 101
 102static inline void
 103OS_mem_token_free (void *token)
 104{
 105    dev_kfree_skb_any (token);
 106}
 107
 108
 109static inline void
 110OS_mem_token_free_irq (void *token)
 111{
 112    dev_kfree_skb_irq (token);
 113}
 114
 115
 116static inline void *
 117OS_mem_token_data (void *token)
 118{
 119    return ((struct sk_buff *) token)->data;
 120}
 121
 122
 123static inline void *
 124OS_mem_token_next (void *token)
 125{
 126    return 0;
 127}
 128
 129
 130static inline int
 131OS_mem_token_len (void *token)
 132{
 133    return ((struct sk_buff *) token)->len;
 134}
 135
 136
 137static inline int
 138OS_mem_token_tlen (void *token)
 139{
 140    return ((struct sk_buff *) token)->len;
 141}
 142
 143
 144/***************************************/
 145/* virtual to physical addr conversion */
 146/***************************************/
 147
 148static inline u_long
 149OS_phystov (void *addr)
 150{
 151    return (u_long) __va (addr);
 152}
 153
 154
 155static inline u_long
 156OS_vtophys (void *addr)
 157{
 158    return __pa (addr);
 159}
 160
 161
 162/**********/
 163/* semops */
 164/**********/
 165
 166void        OS_sem_init (void *, int);
 167
 168
 169static inline void
 170OS_sem_free (void *sem)
 171{
 172    /*
 173     * NOOP - since semaphores structures predeclared w/in structures, no
 174     * longer malloc'd
 175     */
 176}
 177
 178#define SD_SEM_TAKE(sem,desc)  down(sem)
 179#define SD_SEM_GIVE(sem)       up(sem)
 180#define SEM_AVAILABLE     1
 181#define SEM_TAKEN         0
 182
 183
 184/**********************/
 185/* watchdog functions */
 186/**********************/
 187
 188struct watchdog
 189{
 190    struct timer_list h;
 191    struct work_struct work;
 192    void       *softc;
 193    void        (*func) (void *softc);
 194    int         ticks;
 195    int         init_tq;
 196};
 197
 198
 199static inline int
 200OS_start_watchdog (struct watchdog * wd)
 201{
 202    wd->h.expires = jiffies + wd->ticks;
 203    add_timer (&wd->h);
 204    return 0;
 205}
 206
 207
 208static inline int
 209OS_stop_watchdog (struct watchdog * wd)
 210{
 211    del_timer_sync (&wd->h);
 212    return 0;
 213}
 214
 215
 216static inline int
 217OS_free_watchdog (struct watchdog * wd)
 218{
 219    OS_stop_watchdog (wd);
 220    OS_kfree (wd);
 221    return 0;
 222}
 223
 224
 225/* sleep in microseconds */
 226void        OS_uwait (int usec, char *description);
 227void        OS_uwait_dummy (void);
 228
 229
 230/* watchdog functions */
 231int OS_init_watchdog(struct watchdog *wdp, void (*f) (void *), void *ci, int usec);
 232
 233
 234#endif                          /*** _INC_SBECOM_INLNX_H_ ***/
 235
lxr.linux.no kindly hosted by Redpill Linpro AS, provider of Linux consulting and operations services since 1995.