63 lines · c
1/* SPDX-License-Identifier: GPL-2.02 *3 * mcp251xfd - Microchip MCP251xFD Family CAN controller driver4 *5 * Copyright (c) 2021, 2022 Pengutronix,6 * Marc Kleine-Budde <kernel@pengutronix.de>7 */8 9#ifndef _MCP251XFD_RAM_H10#define _MCP251XFD_RAM_H11 12#include <linux/ethtool.h>13 14#define CAN_RAM_NUM_MAX (-1)15 16enum can_ram_mode {17 CAN_RAM_MODE_CAN,18 CAN_RAM_MODE_CANFD,19 __CAN_RAM_MODE_MAX20};21 22struct can_ram_obj_config {23 u8 size[__CAN_RAM_MODE_MAX];24 25 u8 def[__CAN_RAM_MODE_MAX];26 u8 min;27 u8 max;28 29 u8 fifo_num;30 u8 fifo_depth_min;31 u8 fifo_depth_coalesce_min;32};33 34struct can_ram_config {35 const struct can_ram_obj_config rx;36 const struct can_ram_obj_config tx;37 38 u16 size;39 u8 fifo_depth;40};41 42struct can_ram_layout {43 u8 default_rx;44 u8 default_tx;45 46 u8 max_rx;47 u8 max_tx;48 49 u8 cur_rx;50 u8 cur_tx;51 52 u8 rx_coalesce;53 u8 tx_coalesce;54};55 56void can_ram_get_layout(struct can_ram_layout *layout,57 const struct can_ram_config *config,58 const struct ethtool_ringparam *ring,59 const struct ethtool_coalesce *ec,60 const bool fd_mode);61 62#endif63