1*4882a593Smuzhiyun /* SPDX-License-Identifier: (GPL-2.0+ OR BSD-3-Clause) */ 2*4882a593Smuzhiyun /* 3*4882a593Smuzhiyun * Copyright 2013-2016 Freescale Semiconductor Inc. 4*4882a593Smuzhiyun * Copyright 2016 NXP 5*4882a593Smuzhiyun * 6*4882a593Smuzhiyun */ 7*4882a593Smuzhiyun #ifndef __FSL_DPIO_H 8*4882a593Smuzhiyun #define __FSL_DPIO_H 9*4882a593Smuzhiyun 10*4882a593Smuzhiyun struct fsl_mc_io; 11*4882a593Smuzhiyun 12*4882a593Smuzhiyun int dpio_open(struct fsl_mc_io *mc_io, 13*4882a593Smuzhiyun u32 cmd_flags, 14*4882a593Smuzhiyun int dpio_id, 15*4882a593Smuzhiyun u16 *token); 16*4882a593Smuzhiyun 17*4882a593Smuzhiyun int dpio_close(struct fsl_mc_io *mc_io, 18*4882a593Smuzhiyun u32 cmd_flags, 19*4882a593Smuzhiyun u16 token); 20*4882a593Smuzhiyun 21*4882a593Smuzhiyun /** 22*4882a593Smuzhiyun * enum dpio_channel_mode - DPIO notification channel mode 23*4882a593Smuzhiyun * @DPIO_NO_CHANNEL: No support for notification channel 24*4882a593Smuzhiyun * @DPIO_LOCAL_CHANNEL: Notifications on data availability can be received by a 25*4882a593Smuzhiyun * dedicated channel in the DPIO; user should point the queue's 26*4882a593Smuzhiyun * destination in the relevant interface to this DPIO 27*4882a593Smuzhiyun */ 28*4882a593Smuzhiyun enum dpio_channel_mode { 29*4882a593Smuzhiyun DPIO_NO_CHANNEL = 0, 30*4882a593Smuzhiyun DPIO_LOCAL_CHANNEL = 1, 31*4882a593Smuzhiyun }; 32*4882a593Smuzhiyun 33*4882a593Smuzhiyun /** 34*4882a593Smuzhiyun * struct dpio_cfg - Structure representing DPIO configuration 35*4882a593Smuzhiyun * @channel_mode: Notification channel mode 36*4882a593Smuzhiyun * @num_priorities: Number of priorities for the notification channel (1-8); 37*4882a593Smuzhiyun * relevant only if 'channel_mode = DPIO_LOCAL_CHANNEL' 38*4882a593Smuzhiyun */ 39*4882a593Smuzhiyun struct dpio_cfg { 40*4882a593Smuzhiyun enum dpio_channel_mode channel_mode; 41*4882a593Smuzhiyun u8 num_priorities; 42*4882a593Smuzhiyun }; 43*4882a593Smuzhiyun 44*4882a593Smuzhiyun int dpio_enable(struct fsl_mc_io *mc_io, 45*4882a593Smuzhiyun u32 cmd_flags, 46*4882a593Smuzhiyun u16 token); 47*4882a593Smuzhiyun 48*4882a593Smuzhiyun int dpio_disable(struct fsl_mc_io *mc_io, 49*4882a593Smuzhiyun u32 cmd_flags, 50*4882a593Smuzhiyun u16 token); 51*4882a593Smuzhiyun 52*4882a593Smuzhiyun /** 53*4882a593Smuzhiyun * struct dpio_attr - Structure representing DPIO attributes 54*4882a593Smuzhiyun * @id: DPIO object ID 55*4882a593Smuzhiyun * @qbman_portal_ce_offset: offset of the software portal cache-enabled area 56*4882a593Smuzhiyun * @qbman_portal_ci_offset: offset of the software portal cache-inhibited area 57*4882a593Smuzhiyun * @qbman_portal_id: Software portal ID 58*4882a593Smuzhiyun * @channel_mode: Notification channel mode 59*4882a593Smuzhiyun * @num_priorities: Number of priorities for the notification channel (1-8); 60*4882a593Smuzhiyun * relevant only if 'channel_mode = DPIO_LOCAL_CHANNEL' 61*4882a593Smuzhiyun * @qbman_version: QBMAN version 62*4882a593Smuzhiyun */ 63*4882a593Smuzhiyun struct dpio_attr { 64*4882a593Smuzhiyun int id; 65*4882a593Smuzhiyun u64 qbman_portal_ce_offset; 66*4882a593Smuzhiyun u64 qbman_portal_ci_offset; 67*4882a593Smuzhiyun u16 qbman_portal_id; 68*4882a593Smuzhiyun enum dpio_channel_mode channel_mode; 69*4882a593Smuzhiyun u8 num_priorities; 70*4882a593Smuzhiyun u32 qbman_version; 71*4882a593Smuzhiyun }; 72*4882a593Smuzhiyun 73*4882a593Smuzhiyun int dpio_get_attributes(struct fsl_mc_io *mc_io, 74*4882a593Smuzhiyun u32 cmd_flags, 75*4882a593Smuzhiyun u16 token, 76*4882a593Smuzhiyun struct dpio_attr *attr); 77*4882a593Smuzhiyun 78*4882a593Smuzhiyun int dpio_set_stashing_destination(struct fsl_mc_io *mc_io, 79*4882a593Smuzhiyun u32 cmd_flags, 80*4882a593Smuzhiyun u16 token, 81*4882a593Smuzhiyun u8 dest); 82*4882a593Smuzhiyun 83*4882a593Smuzhiyun int dpio_get_api_version(struct fsl_mc_io *mc_io, 84*4882a593Smuzhiyun u32 cmd_flags, 85*4882a593Smuzhiyun u16 *major_ver, 86*4882a593Smuzhiyun u16 *minor_ver); 87*4882a593Smuzhiyun 88*4882a593Smuzhiyun int dpio_reset(struct fsl_mc_io *mc_io, 89*4882a593Smuzhiyun u32 cmd_flags, 90*4882a593Smuzhiyun u16 token); 91*4882a593Smuzhiyun 92*4882a593Smuzhiyun #endif /* __FSL_DPIO_H */ 93