1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
|
/* Copyright (c) 2011-2012, 2014, The Linux Foundation. All rights reserved.
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License version 2 and
* only version 2 as published by the Free Software Foundation.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*/
#include <linux/types.h>
#include <linux/skbuff.h>
#ifndef _BAM_DMUX_H
#define _BAM_DMUX_H
#define BAM_DMUX_CH_NAME_MAX_LEN 20
enum {
BAM_DMUX_DATA_RMNET_0,
BAM_DMUX_DATA_RMNET_1,
BAM_DMUX_DATA_RMNET_2,
BAM_DMUX_DATA_RMNET_3,
BAM_DMUX_DATA_RMNET_4,
BAM_DMUX_DATA_RMNET_5,
BAM_DMUX_DATA_RMNET_6,
BAM_DMUX_DATA_RMNET_7,
BAM_DMUX_USB_RMNET_0,
BAM_DMUX_RESERVED_0, /* 9..11 are reserved*/
BAM_DMUX_RESERVED_1,
BAM_DMUX_RESERVED_2,
BAM_DMUX_DATA_REV_RMNET_0,
BAM_DMUX_DATA_REV_RMNET_1,
BAM_DMUX_DATA_REV_RMNET_2,
BAM_DMUX_DATA_REV_RMNET_3,
BAM_DMUX_DATA_REV_RMNET_4,
BAM_DMUX_DATA_REV_RMNET_5,
BAM_DMUX_DATA_REV_RMNET_6,
BAM_DMUX_DATA_REV_RMNET_7,
BAM_DMUX_DATA_REV_RMNET_8,
BAM_DMUX_USB_DPL,
BAM_DMUX_NUM_CHANNELS
};
/* event type enum */
enum {
BAM_DMUX_RECEIVE, /* data is struct sk_buff */
BAM_DMUX_WRITE_DONE, /* data is struct sk_buff */
BAM_DMUX_UL_CONNECTED, /* data is null */
BAM_DMUX_UL_DISCONNECTED, /*data is null */
BAM_DMUX_TRANSMIT_SIZE, /* data is maximum negotiated transmit MTU */
};
/*
* Open a bam_dmux logical channel
* id - the logical channel to open
* priv - private data pointer to be passed to the notify callback
* notify - event callback function
* priv - private data pointer passed to msm_bam_dmux_open()
* event_type - type of event
* data - data relevant to event. May not be valid. See event_type
* enum for valid cases.
*/
#ifdef CONFIG_MSM_BAM_DMUX
int msm_bam_dmux_open(uint32_t id, void *priv,
void (*notify)(void *priv, int event_type,
unsigned long data));
int msm_bam_dmux_close(uint32_t id);
int msm_bam_dmux_write(uint32_t id, struct sk_buff *skb);
int msm_bam_dmux_kickoff_ul_wakeup(void);
int msm_bam_dmux_ul_power_vote(void);
int msm_bam_dmux_ul_power_unvote(void);
int msm_bam_dmux_is_ch_full(uint32_t id);
int msm_bam_dmux_is_ch_low(uint32_t id);
int msm_bam_dmux_reg_notify(void *priv,
void (*notify)(void *priv, int event_type,
unsigned long data));
#else
static inline int msm_bam_dmux_open(uint32_t id, void *priv,
void (*notify)(void *priv, int event_type,
unsigned long data))
{
return -ENODEV;
}
static inline int msm_bam_dmux_close(uint32_t id)
{
return -ENODEV;
}
static inline int msm_bam_dmux_write(uint32_t id, struct sk_buff *skb)
{
return -ENODEV;
}
static inline int msm_bam_dmux_kickoff_ul_wakeup(void)
{
return -ENODEV;
}
static inline int msm_bam_dmux_ul_power_vote(void)
{
return -ENODEV;
}
static inline int msm_bam_dmux_ul_power_unvote(void)
{
return -ENODEV;
}
static inline int msm_bam_dmux_is_ch_full(uint32_t id)
{
return -ENODEV;
}
static inline int msm_bam_dmux_is_ch_low(uint32_t id)
{
return -ENODEV;
}
static inline int msm_bam_dmux_reg_notify(void *priv,
void (*notify)(void *priv, int event_type,
unsigned long data))
{
return -ENODEV;
}
#endif
#endif /* _BAM_DMUX_H */
|