root/include/net/caif/cfcnfg.h

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

INCLUDED FROM


   1 /* SPDX-License-Identifier: GPL-2.0-only */
   2 /*
   3  * Copyright (C) ST-Ericsson AB 2010
   4  * Author:      Sjur Brendeland
   5  */
   6 
   7 #ifndef CFCNFG_H_
   8 #define CFCNFG_H_
   9 #include <linux/spinlock.h>
  10 #include <linux/netdevice.h>
  11 #include <net/caif/caif_layer.h>
  12 #include <net/caif/cfctrl.h>
  13 
  14 struct cfcnfg;
  15 
  16 /**
  17  * enum cfcnfg_phy_preference - Physical preference HW Abstraction
  18  *
  19  * @CFPHYPREF_UNSPECIFIED:      Default physical interface
  20  *
  21  * @CFPHYPREF_LOW_LAT:          Default physical interface for low-latency
  22  *                              traffic
  23  * @CFPHYPREF_HIGH_BW:          Default physical interface for high-bandwidth
  24  *                              traffic
  25  * @CFPHYPREF_LOOP:             TEST only Loopback interface simulating modem
  26  *                              responses.
  27  *
  28  */
  29 enum cfcnfg_phy_preference {
  30         CFPHYPREF_UNSPECIFIED,
  31         CFPHYPREF_LOW_LAT,
  32         CFPHYPREF_HIGH_BW,
  33         CFPHYPREF_LOOP
  34 };
  35 
  36 /**
  37  * cfcnfg_create() - Get the CAIF configuration object given network.
  38  * @net:        Network for the CAIF configuration object.
  39  */
  40 struct cfcnfg *get_cfcnfg(struct net *net);
  41 
  42 /**
  43  * cfcnfg_create() - Create the CAIF configuration object.
  44  */
  45 struct cfcnfg *cfcnfg_create(void);
  46 
  47 /**
  48  * cfcnfg_remove() -  Remove the CFCNFG object
  49  * @cfg: config object
  50  */
  51 void cfcnfg_remove(struct cfcnfg *cfg);
  52 
  53 /**
  54  * cfcnfg_add_phy_layer() - Adds a physical layer to the CAIF stack.
  55  * @cnfg:       Pointer to a CAIF configuration object, created by
  56  *              cfcnfg_create().
  57  * @dev:        Pointer to link layer device
  58  * @phy_layer:  Specify the physical layer. The transmit function
  59  *              MUST be set in the structure.
  60  * @pref:       The phy (link layer) preference.
  61  * @link_support: Protocol implementation for link layer specific protocol.
  62  * @fcs:        Specify if checksum is used in CAIF Framing Layer.
  63  * @head_room:  Head space needed by link specific protocol.
  64  */
  65 void
  66 cfcnfg_add_phy_layer(struct cfcnfg *cnfg,
  67                      struct net_device *dev, struct cflayer *phy_layer,
  68                      enum cfcnfg_phy_preference pref,
  69                      struct cflayer *link_support,
  70                      bool fcs, int head_room);
  71 
  72 /**
  73  * cfcnfg_del_phy_layer - Deletes an phy layer from the CAIF stack.
  74  *
  75  * @cnfg:       Pointer to a CAIF configuration object, created by
  76  *              cfcnfg_create().
  77  * @phy_layer:  Adaptation layer to be removed.
  78  */
  79 int cfcnfg_del_phy_layer(struct cfcnfg *cnfg, struct cflayer *phy_layer);
  80 
  81 /**
  82  * cfcnfg_set_phy_state() - Set the state of the physical interface device.
  83  * @cnfg:       Configuration object
  84  * @phy_layer:  Physical Layer representation
  85  * @up: State of device
  86  */
  87 int cfcnfg_set_phy_state(struct cfcnfg *cnfg, struct cflayer *phy_layer,
  88                                 bool up);
  89 
  90 #endif                          /* CFCNFG_H_ */

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