root/include/net/caif/cfsrvl.h

/* [<][>][^][v][top][bottom][index][help] */

INCLUDED FROM


DEFINITIONS

This source file includes following definitions.
  1. cfsrvl_get
  2. cfsrvl_put

   1 /* SPDX-License-Identifier: GPL-2.0-only */
   2 /*
   3  * Copyright (C) ST-Ericsson AB 2010
   4  * Author:      Sjur Brendeland
   5  */
   6 
   7 #ifndef CFSRVL_H_
   8 #define CFSRVL_H_
   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>
  14 
  15 struct cfsrvl {
  16         struct cflayer layer;
  17         bool open;
  18         bool phy_flow_on;
  19         bool modem_flow_on;
  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);
  25         struct rcu_head rcu;
  26 };
  27 
  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,
  33                                 int mtu_size);
  34 struct cflayer *cfdbgl_create(u8 linkid, struct dev_info *dev_info);
  35 
  36 void cfsrvl_ctrlcmd(struct cflayer *layr, enum caif_ctrlcmd ctrl,
  37                      int phyid);
  38 
  39 bool cfsrvl_phyid_match(struct cflayer *layer, int phyid);
  40 
  41 void cfsrvl_init(struct cfsrvl *service,
  42                         u8 channel_id,
  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);
  47 
  48 static inline void cfsrvl_get(struct cflayer *layr)
  49 {
  50         struct cfsrvl *s = container_of(layr, struct cfsrvl, layer);
  51         if (layr == NULL || layr->up == NULL || s->hold == NULL)
  52                 return;
  53 
  54         s->hold(layr->up);
  55 }
  56 
  57 static inline void cfsrvl_put(struct cflayer *layr)
  58 {
  59         struct cfsrvl *s = container_of(layr, struct cfsrvl, layer);
  60         if (layr == NULL || layr->up == NULL || s->hold == NULL)
  61                 return;
  62 
  63         s->put(layr->up);
  64 }
  65 #endif                          /* CFSRVL_H_ */

/* [<][>][^][v][top][bottom][index][help] */