lkml.org 
[lkml]   [2016]   [Dec]   [1]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH v3 5/9] bus: fsl-mc: dpio: add global dpaa2 definitions
    Date
    From: Roy Pledge <Roy.Pledge@nxp.com>

    Create header for global dpaa2 definitions. Add definitions
    for dequeue results.

    Signed-off-by: Roy Pledge <Roy.Pledge@nxp.com>
    Signed-off-by: Stuart Yoder <stuart.yoder@nxp.com>
    ---
    include/linux/fsl/dpaa2-global.h | 203 +++++++++++++++++++++++++++++++++++++++
    1 file changed, 203 insertions(+)
    create mode 100644 include/linux/fsl/dpaa2-global.h

    diff --git a/include/linux/fsl/dpaa2-global.h b/include/linux/fsl/dpaa2-global.h
    new file mode 100644
    index 0000000..3ee3f29
    --- /dev/null
    +++ b/include/linux/fsl/dpaa2-global.h
    @@ -0,0 +1,203 @@
    +/*
    + * Copyright 2014-2016 Freescale Semiconductor Inc.
    + *
    + * Redistribution and use in source and binary forms, with or without
    + * modification, are permitted provided that the following conditions are met:
    + * * Redistributions of source code must retain the above copyright
    + * notice, this list of conditions and the following disclaimer.
    + * * Redistributions in binary form must reproduce the above copyright
    + * notice, this list of conditions and the following disclaimer in the
    + * documentation and/or other materials provided with the distribution.
    + * * Neither the name of Freescale Semiconductor nor the
    + * names of its contributors may be used to endorse or promote products
    + * derived from this software without specific prior written permission.
    + *
    + * ALTERNATIVELY, this software may be distributed under the terms of the
    + * GNU General Public License ("GPL") as published by the Free Software
    + * Foundation, either version 2 of that License or (at your option) any
    + * later version.
    + *
    + * THIS SOFTWARE IS PROVIDED BY Freescale Semiconductor ``AS IS'' AND ANY
    + * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
    + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
    + * DISCLAIMED. IN NO EVENT SHALL Freescale Semiconductor BE LIABLE FOR ANY
    + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
    + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
    + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
    + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
    + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
    + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
    + */
    +#ifndef __FSL_DPAA2_GLOBAL_H
    +#define __FSL_DPAA2_GLOBAL_H
    +
    +#include <linux/types.h>
    +#include <linux/cpumask.h>
    +#include <linux/fsl/dpaa2-fd.h>
    +
    +struct dpaa2_dq {
    + union {
    + struct common {
    + u8 verb;
    + u8 reserved[63];
    + } common;
    + struct dq {
    + u8 verb;
    + u8 stat;
    + __le16 seqnum;
    + __le16 oprid;
    + u8 reserved;
    + u8 tok;
    + __le32 fqid;
    + u32 reserved2;
    + __le32 fq_byte_cnt;
    + __le32 fq_frm_cnt;
    + __le64 fqd_ctx;
    + u8 fd[32];
    + } dq;
    + struct scn {
    + u8 verb;
    + u8 stat;
    + u8 state;
    + u8 reserved;
    + __le32 rid_tok;
    + __le64 ctx;
    + } scn;
    + };
    +};
    +
    +
    +/* Parsing frame dequeue results */
    +/* FQ empty */
    +#define DPAA2_DQ_STAT_FQEMPTY 0x80
    +/* FQ held active */
    +#define DPAA2_DQ_STAT_HELDACTIVE 0x40
    +/* FQ force eligible */
    +#define DPAA2_DQ_STAT_FORCEELIGIBLE 0x20
    +/* valid frame */
    +#define DPAA2_DQ_STAT_VALIDFRAME 0x10
    +/* FQ ODP enable */
    +#define DPAA2_DQ_STAT_ODPVALID 0x04
    +/* volatile dequeue */
    +#define DPAA2_DQ_STAT_VOLATILE 0x02
    +/* volatile dequeue command is expired */
    +#define DPAA2_DQ_STAT_EXPIRED 0x01
    +
    +#define DQ_FQID_MASK 0x00FFFFFF
    +#define DQ_FRAME_COUNT_MASK 0x00FFFFFF
    +
    +/**
    + * dpaa2_dq_flags() - Get the stat field of dequeue response
    + * @dq: the dequeue result.
    + */
    +static inline u32 dpaa2_dq_flags(const struct dpaa2_dq *dq)
    +{
    + return dq->dq.stat;
    +}
    +
    +/**
    + * dpaa2_dq_is_pull() - Check whether the dq response is from a pull
    + * command.
    + * @dq: the dequeue result
    + *
    + * Return 1 for volatile(pull) dequeue, 0 for static dequeue.
    + */
    +static inline int dpaa2_dq_is_pull(const struct dpaa2_dq *dq)
    +{
    + return (int)(dpaa2_dq_flags(dq) & DPAA2_DQ_STAT_VOLATILE);
    +}
    +
    +/**
    + * dpaa2_dq_is_pull_complete() - Check whether the pull command is completed.
    + * @dq: the dequeue result
    + *
    + * Return boolean.
    + */
    +static inline int dpaa2_dq_is_pull_complete(
    + const struct dpaa2_dq *dq)
    +{
    + return (int)(dpaa2_dq_flags(dq) & DPAA2_DQ_STAT_EXPIRED);
    +}
    +
    +/**
    + * dpaa2_dq_seqnum() - Get the seqnum field in dequeue response
    + * @dq: the dequeue result
    + *
    + * seqnum is valid only if VALIDFRAME flag is TRUE
    + *
    + * Return seqnum.
    + */
    +static inline u16 dpaa2_dq_seqnum(const struct dpaa2_dq *dq)
    +{
    + return le16_to_cpu(dq->dq.seqnum);
    +}
    +
    +/**
    + * dpaa2_dq_odpid() - Get the odpid field in dequeue response
    + * @dq: the dequeue result
    + *
    + * odpid is valid only if ODPVAILD flag is TRUE.
    + *
    + * Return odpid.
    + */
    +static inline u16 dpaa2_dq_odpid(const struct dpaa2_dq *dq)
    +{
    + return le16_to_cpu(dq->dq.oprid);
    +}
    +
    +/**
    + * dpaa2_dq_fqid() - Get the fqid in dequeue response
    + * @dq: the dequeue result
    + *
    + * Return fqid.
    + */
    +static inline u32 dpaa2_dq_fqid(const struct dpaa2_dq *dq)
    +{
    + return le32_to_cpu(dq->dq.fqid) & DQ_FQID_MASK;
    +}
    +
    +/**
    + * dpaa2_dq_byte_count() - Get the byte count in dequeue response
    + * @dq: the dequeue result
    + *
    + * Return the byte count remaining in the FQ.
    + */
    +static inline u32 dpaa2_dq_byte_count(const struct dpaa2_dq *dq)
    +{
    + return le32_to_cpu(dq->dq.fq_byte_cnt);
    +}
    +
    +/**
    + * dpaa2_dq_frame_count() - Get the frame count in dequeue response
    + * @dq: the dequeue result
    + *
    + * Return the frame count remaining in the FQ.
    + */
    +static inline u32 dpaa2_dq_frame_count(const struct dpaa2_dq *dq)
    +{
    + return le32_to_cpu(dq->dq.fq_frm_cnt) & DQ_FRAME_COUNT_MASK;
    +}
    +
    +/**
    + * dpaa2_dq_fd_ctx() - Get the frame queue context in dequeue response
    + * @dq: the dequeue result
    + *
    + * Return the frame queue context.
    + */
    +static inline u64 dpaa2_dq_fqd_ctx(const struct dpaa2_dq *dq)
    +{
    + return le64_to_cpu(dq->dq.fqd_ctx);
    +}
    +
    +/**
    + * dpaa2_dq_fd() - Get the frame descriptor in dequeue response
    + * @dq: the dequeue result
    + *
    + * Return the frame descriptor.
    + */
    +static inline const struct dpaa2_fd *dpaa2_dq_fd(const struct dpaa2_dq *dq)
    +{
    + return (const struct dpaa2_fd *)&dq->dq.fd[0];
    +}
    +
    +#endif /* __FSL_DPAA2_GLOBAL_H */
    --
    1.9.0
    \
     
     \ /
      Last update: 2016-12-01 23:50    [W:2.622 / U:1.100 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site