1 /* SPDX-License-Identifier: GPL-2.0-only */
3 * Copyright (C) ST-Ericsson AB 2010
4 * Author: Sjur Brendeland
9 #include <linux/list.h>
10 #include <linux/stddef.h>
11 #include <linux/types.h>
12 #include <linux/kref.h>
13 #include <linux/rculist.h>
20 bool supports_flowctrl
;
21 void (*release
)(struct cflayer
*layer
);
22 struct dev_info dev_info
;
23 void (*hold
)(struct cflayer
*lyr
);
24 void (*put
)(struct cflayer
*lyr
);
28 struct cflayer
*cfvei_create(u8 linkid
, struct dev_info
*dev_info
);
29 struct cflayer
*cfdgml_create(u8 linkid
, struct dev_info
*dev_info
);
30 struct cflayer
*cfutill_create(u8 linkid
, struct dev_info
*dev_info
);
31 struct cflayer
*cfvidl_create(u8 linkid
, struct dev_info
*dev_info
);
32 struct cflayer
*cfrfml_create(u8 linkid
, struct dev_info
*dev_info
,
34 struct cflayer
*cfdbgl_create(u8 linkid
, struct dev_info
*dev_info
);
36 void cfsrvl_ctrlcmd(struct cflayer
*layr
, enum caif_ctrlcmd ctrl
,
39 bool cfsrvl_phyid_match(struct cflayer
*layer
, int phyid
);
41 void cfsrvl_init(struct cfsrvl
*service
,
43 struct dev_info
*dev_info
,
44 bool supports_flowctrl
);
45 bool cfsrvl_ready(struct cfsrvl
*service
, int *err
);
46 u8
cfsrvl_getphyid(struct cflayer
*layer
);
48 static inline void cfsrvl_get(struct cflayer
*layr
)
50 struct cfsrvl
*s
= container_of(layr
, struct cfsrvl
, layer
);
51 if (layr
== NULL
|| layr
->up
== NULL
|| s
->hold
== NULL
)
57 static inline void cfsrvl_put(struct cflayer
*layr
)
59 struct cfsrvl
*s
= container_of(layr
, struct cfsrvl
, layer
);
60 if (layr
== NULL
|| layr
->up
== NULL
|| s
->hold
== NULL
)
65 #endif /* CFSRVL_H_ */