/* SPDX-License-Identifier: GPL-2.0 * * mcp251xfd - Microchip MCP251xFD Family CAN controller driver * * Copyright (c) 2021, 2022 Pengutronix, * Marc Kleine-Budde <kernel@pengutronix.de> */ #ifndef _MCP251XFD_RAM_H #define _MCP251XFD_RAM_H #include <linux/ethtool.h> #define CAN_RAM_NUM_MAX (-1) enum can_ram_mode { CAN_RAM_MODE_CAN, CAN_RAM_MODE_CANFD, __CAN_RAM_MODE_MAX }; struct can_ram_obj_config { u8 size[__CAN_RAM_MODE_MAX]; u8 def[__CAN_RAM_MODE_MAX]; u8 min; u8 max; u8 fifo_num; u8 fifo_depth_min; u8 fifo_depth_coalesce_min; }; struct can_ram_config { const struct can_ram_obj_config rx; const struct can_ram_obj_config tx; u16 size; u8 fifo_depth; }; struct can_ram_layout { u8 default_rx; u8 default_tx; u8 max_rx; u8 max_tx; u8 cur_rx; u8 cur_tx; u8 rx_coalesce; u8 tx_coalesce; }; void can_ram_get_layout(struct can_ram_layout *layout, const struct can_ram_config *config, const struct ethtool_ringparam *ring, const struct ethtool_coalesce *ec, const bool fd_mode); #endif