2019-05-28 19:57:21 +03:00
/* SPDX-License-Identifier: GPL-2.0-only */
2010-03-30 17:56:21 +04:00
/*
* Copyright ( C ) ST - Ericsson AB 2010
2013-04-23 03:57:01 +04:00
* Author : Sjur Brendeland
2010-03-30 17:56:21 +04:00
*/
# ifndef CFCNFG_H_
# define CFCNFG_H_
# include <linux/spinlock.h>
2010-06-17 10:55:40 +04:00
# include <linux/netdevice.h>
2010-03-30 17:56:21 +04:00
# include <net/caif/caif_layer.h>
# include <net/caif/cfctrl.h>
struct cfcnfg ;
/**
* enum cfcnfg_phy_preference - Physical preference HW Abstraction
*
* @ CFPHYPREF_UNSPECIFIED : Default physical interface
*
* @ CFPHYPREF_LOW_LAT : Default physical interface for low - latency
* traffic
* @ CFPHYPREF_HIGH_BW : Default physical interface for high - bandwidth
* traffic
* @ CFPHYPREF_LOOP : TEST only Loopback interface simulating modem
* responses .
*
*/
enum cfcnfg_phy_preference {
CFPHYPREF_UNSPECIFIED ,
CFPHYPREF_LOW_LAT ,
CFPHYPREF_HIGH_BW ,
CFPHYPREF_LOOP
} ;
2011-05-13 06:44:05 +04:00
/**
* cfcnfg_create ( ) - Get the CAIF configuration object given network .
* @ net : Network for the CAIF configuration object .
*/
struct cfcnfg * get_cfcnfg ( struct net * net ) ;
2010-03-30 17:56:21 +04:00
/**
* cfcnfg_create ( ) - Create the CAIF configuration object .
*/
struct cfcnfg * cfcnfg_create ( void ) ;
/**
* cfcnfg_remove ( ) - Remove the CFCNFG object
* @ cfg : config object
*/
void cfcnfg_remove ( struct cfcnfg * cfg ) ;
/**
* cfcnfg_add_phy_layer ( ) - Adds a physical layer to the CAIF stack .
* @ cnfg : Pointer to a CAIF configuration object , created by
* cfcnfg_create ( ) .
* @ dev : Pointer to link layer device
* @ phy_layer : Specify the physical layer . The transmit function
* MUST be set in the structure .
* @ pref : The phy ( link layer ) preference .
2011-11-30 13:22:47 +04:00
* @ link_support : Protocol implementation for link layer specific protocol .
2010-03-30 17:56:21 +04:00
* @ fcs : Specify if checksum is used in CAIF Framing Layer .
2011-11-30 13:22:47 +04:00
* @ head_room : Head space needed by link specific protocol .
2010-03-30 17:56:21 +04:00
*/
2021-06-03 19:38:51 +03:00
int
2011-11-30 13:22:47 +04:00
cfcnfg_add_phy_layer ( struct cfcnfg * cnfg ,
2010-06-17 10:55:40 +04:00
struct net_device * dev , struct cflayer * phy_layer ,
2011-05-13 06:44:05 +04:00
enum cfcnfg_phy_preference pref ,
2011-11-30 13:22:47 +04:00
struct cflayer * link_support ,
bool fcs , int head_room ) ;
2010-03-30 17:56:21 +04:00
/**
* cfcnfg_del_phy_layer - Deletes an phy layer from the CAIF stack .
*
* @ cnfg : Pointer to a CAIF configuration object , created by
* cfcnfg_create ( ) .
* @ phy_layer : Adaptation layer to be removed .
*/
int cfcnfg_del_phy_layer ( struct cfcnfg * cnfg , struct cflayer * phy_layer ) ;
2011-05-13 06:44:00 +04:00
/**
* cfcnfg_set_phy_state ( ) - Set the state of the physical interface device .
* @ cnfg : Configuration object
* @ phy_layer : Physical Layer representation
* @ up : State of device
*/
int cfcnfg_set_phy_state ( struct cfcnfg * cnfg , struct cflayer * phy_layer ,
bool up ) ;
2010-03-30 17:56:21 +04:00
# endif /* CFCNFG_H_ */