OpenCores
URL https://opencores.org/ocsvn/test_project/test_project/trunk

Subversion Repositories test_project

[/] [test_project/] [trunk/] [linux_sd_driver/] [drivers/] [misc/] [ibmasm/] [i2o.h] - Blame information for rev 62

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 62 marcus.erl
/*
2
 * IBM ASM Service Processor Device Driver
3
 *
4
 * This program is free software; you can redistribute it and/or modify
5
 * it under the terms of the GNU General Public License as published by
6
 * the Free Software Foundation; either version 2 of the License, or
7
 * (at your option) any later version.
8
 *
9
 * This program is distributed in the hope that it will be useful,
10
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
11
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
12
 * GNU General Public License for more details.
13
 *
14
 * You should have received a copy of the GNU General Public License
15
 * along with this program; if not, write to the Free Software
16
 * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
17
 *
18
 * Copyright (C) IBM Corporation, 2004
19
 *
20
 * Author: Max Asböck <amax@us.ibm.com>
21
 *
22
 */
23
 
24
#pragma pack(1)
25
struct i2o_header {
26
        u8      version;
27
        u8      message_flags;
28
        u16     message_size;
29
        u8      target;
30
        u8      initiator_and_target;
31
        u8      initiator;
32
        u8      function;
33
        u32     initiator_context;
34
};
35
#pragma pack()
36
 
37
#define I2O_HEADER_TEMPLATE \
38
      { .version              = 0x01, \
39
        .message_flags        = 0x00, \
40
        .function             = 0xFF, \
41
        .initiator            = 0x00, \
42
        .initiator_and_target = 0x40, \
43
        .target               = 0x00, \
44
        .initiator_context    = 0x0 }
45
 
46
#define I2O_MESSAGE_SIZE        0x1000
47
#define I2O_COMMAND_SIZE        (I2O_MESSAGE_SIZE - sizeof(struct i2o_header))
48
 
49
#pragma pack(1)
50
struct i2o_message {
51
        struct i2o_header       header;
52
        void                    *data;
53
};
54
#pragma pack()
55
 
56
static inline unsigned short outgoing_message_size(unsigned int data_size)
57
{
58
        unsigned int size;
59
        unsigned short i2o_size;
60
 
61
        if (data_size > I2O_COMMAND_SIZE)
62
                data_size = I2O_COMMAND_SIZE;
63
 
64
        size = sizeof(struct i2o_header) + data_size;
65
 
66
        i2o_size = size / sizeof(u32);
67
 
68
        if (size % sizeof(u32))
69
               i2o_size++;
70
 
71
        return i2o_size;
72
}
73
 
74
static inline u32 incoming_data_size(struct i2o_message *i2o_message)
75
{
76
        return (sizeof(u32) * i2o_message->header.message_size);
77
}

powered by: WebSVN 2.1.0

© copyright 1999-2025 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.