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