95 lines · c
1/* SPDX-License-Identifier: (GPL-2.0+ OR BSD-3-Clause) */2/*3 * Copyright 2013-2016 Freescale Semiconductor Inc.4 * Copyright 2016 NXP5 *6 */7#ifndef __FSL_DPIO_H8#define __FSL_DPIO_H9 10struct fsl_mc_io;11 12int dpio_open(struct fsl_mc_io *mc_io,13 u32 cmd_flags,14 int dpio_id,15 u16 *token);16 17int 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 mode23 * @DPIO_NO_CHANNEL: No support for notification channel24 * @DPIO_LOCAL_CHANNEL: Notifications on data availability can be received by a25 * dedicated channel in the DPIO; user should point the queue's26 * destination in the relevant interface to this DPIO27 */28enum dpio_channel_mode {29 DPIO_NO_CHANNEL = 0,30 DPIO_LOCAL_CHANNEL = 1,31};32 33/**34 * struct dpio_cfg - Structure representing DPIO configuration35 * @channel_mode: Notification channel mode36 * @num_priorities: Number of priorities for the notification channel (1-8);37 * relevant only if 'channel_mode = DPIO_LOCAL_CHANNEL'38 */39struct dpio_cfg {40 enum dpio_channel_mode channel_mode;41 u8 num_priorities;42};43 44int dpio_enable(struct fsl_mc_io *mc_io,45 u32 cmd_flags,46 u16 token);47 48int dpio_disable(struct fsl_mc_io *mc_io,49 u32 cmd_flags,50 u16 token);51 52/**53 * struct dpio_attr - Structure representing DPIO attributes54 * @id: DPIO object ID55 * @qbman_portal_ce_offset: offset of the software portal cache-enabled area56 * @qbman_portal_ci_offset: offset of the software portal cache-inhibited area57 * @qbman_portal_id: Software portal ID58 * @channel_mode: Notification channel mode59 * @num_priorities: Number of priorities for the notification channel (1-8);60 * relevant only if 'channel_mode = DPIO_LOCAL_CHANNEL'61 * @qbman_version: QBMAN version62 * @clk: QBMAN clock frequency value in Hz63 */64struct 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 75int dpio_get_attributes(struct fsl_mc_io *mc_io,76 u32 cmd_flags,77 u16 token,78 struct dpio_attr *attr);79 80int dpio_set_stashing_destination(struct fsl_mc_io *mc_io,81 u32 cmd_flags,82 u16 token,83 u8 dest);84 85int dpio_get_api_version(struct fsl_mc_io *mc_io,86 u32 cmd_flags,87 u16 *major_ver,88 u16 *minor_ver);89 90int dpio_reset(struct fsl_mc_io *mc_io,91 u32 cmd_flags,92 u16 token);93 94#endif /* __FSL_DPIO_H */95