#include <linux/kernel.h>
#include <linux/slab.h>
#include <linux/netdevice.h>
#include <linux/if_arp.h>
#include <linux/workqueue.h>
#include <linux/can.h>
#include <linux/can/can-ml.h>
#include <linux/can/dev.h>
#include <linux/can/skb.h>
#include <linux/gpio/consumer.h>
#include <linux/of.h>
static void can_update_state_error_stats(struct net_device *dev,
enum can_state new_state)
{ … }
static int can_tx_state_to_frame(struct net_device *dev, enum can_state state)
{ … }
static int can_rx_state_to_frame(struct net_device *dev, enum can_state state)
{ … }
const char *can_get_state_str(const enum can_state state)
{ … }
EXPORT_SYMBOL_GPL(…);
static enum can_state can_state_err_to_state(u16 err)
{ … }
void can_state_get_by_berr_counter(const struct net_device *dev,
const struct can_berr_counter *bec,
enum can_state *tx_state,
enum can_state *rx_state)
{ … }
EXPORT_SYMBOL_GPL(…);
void can_change_state(struct net_device *dev, struct can_frame *cf,
enum can_state tx_state, enum can_state rx_state)
{ … }
EXPORT_SYMBOL_GPL(…);
static void can_restart(struct net_device *dev)
{ … }
static void can_restart_work(struct work_struct *work)
{ … }
int can_restart_now(struct net_device *dev)
{ … }
void can_bus_off(struct net_device *dev)
{ … }
EXPORT_SYMBOL_GPL(…);
void can_setup(struct net_device *dev)
{ … }
struct net_device *alloc_candev_mqs(int sizeof_priv, unsigned int echo_skb_max,
unsigned int txqs, unsigned int rxqs)
{ … }
EXPORT_SYMBOL_GPL(…);
void free_candev(struct net_device *dev)
{ … }
EXPORT_SYMBOL_GPL(…);
int can_change_mtu(struct net_device *dev, int new_mtu)
{ … }
EXPORT_SYMBOL_GPL(…);
int can_eth_ioctl_hwts(struct net_device *netdev, struct ifreq *ifr, int cmd)
{ … }
EXPORT_SYMBOL(…);
int can_ethtool_op_get_ts_info_hwts(struct net_device *dev,
struct kernel_ethtool_ts_info *info)
{ … }
EXPORT_SYMBOL(…);
int open_candev(struct net_device *dev)
{ … }
EXPORT_SYMBOL_GPL(…);
#ifdef CONFIG_OF
void of_can_transceiver(struct net_device *dev)
{ … }
EXPORT_SYMBOL_GPL(…);
#endif
void close_candev(struct net_device *dev)
{ … }
EXPORT_SYMBOL_GPL(…);
static int can_set_termination(struct net_device *ndev, u16 term)
{ … }
static int can_get_termination(struct net_device *ndev)
{ … }
static bool
can_bittiming_const_valid(const struct can_bittiming_const *btc)
{ … }
int register_candev(struct net_device *dev)
{ … }
EXPORT_SYMBOL_GPL(…);
void unregister_candev(struct net_device *dev)
{ … }
EXPORT_SYMBOL_GPL(…);
struct can_priv *safe_candev_priv(struct net_device *dev)
{ … }
EXPORT_SYMBOL_GPL(…);
static __init int can_dev_init(void)
{ … }
module_init(…) …;
static __exit void can_dev_exit(void)
{ … }
module_exit(can_dev_exit);
MODULE_ALIAS_RTNL_LINK(…) …;