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
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 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 */
28enum 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 */
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 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 */
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

source code of linux/drivers/soc/fsl/dpio/dpio.h