dpaa: Add <soc/fsl/dpaa.h>

This commit is contained in:
Sebastian Huber 2017-06-27 12:51:07 +02:00
parent 9789434e21
commit e3dc39ee0c
3 changed files with 95 additions and 0 deletions

View File

@ -56,6 +56,8 @@
#include <linux/percpu.h>
#include <linux/dma-mapping.h>
#include <linux/sort.h>
#else /* __rtems__ */
#include <soc/fsl/dpaa.h>
#endif /* __rtems__ */
#include <soc/fsl/bman.h>
#include <soc/fsl/qman.h>
@ -1606,6 +1608,35 @@ release_previous_buffs:
return 0;
}
#ifdef __rtems__
void
dpaa_recycle_mcluster(struct dpaa_priv *dpaa_priv,
dpaa_buffer_recycle_context *rc, struct mbuf *m)
{
size_t i;
dma_addr_t addr;
i = rc->count;
m->m_data = m->m_ext.ext_buf;
*(struct mbuf **)(mtod(m, char *) + DPAA_MBUF_POINTER_OFFSET) = m;
addr = mtod(m, dma_addr_t);
rc->bmb[i].data = 0;
bm_buffer_set64(&rc->bmb[i], addr);
if (i < ARRAY_SIZE(rc->bmb) - 1) {
rc->count = i + 1;
} else {
struct dpaa_bp *dpaa_bp;
int *countptr;
rc->count = 0;
dpaa_bp = dpaa_priv->dpaa_bps[0];
countptr = this_cpu_ptr(dpaa_bp->percpu_count);
*countptr += dpaa_bman_release(dpaa_bp, rc->bmb,
ARRAY_SIZE(rc->bmb));
}
}
#endif /* __rtems__ */
static int dpaa_bp_seed(struct dpaa_bp *dpaa_bp)
{

View File

@ -0,0 +1,53 @@
/*-
* Copyright (c) 2017 embedded brains GmbH
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
* 1. Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* 2. 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.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
* "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 THE COPYRIGHT
* OWNER OR CONTRIBUTORS 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 _SOC_FSL_DPAA_H
#define _SOC_FSL_DPAA_H
#include <sys/cdefs.h>
#include <linux/types.h>
#include <asm/byteorder.h>
#include <soc/fsl/bman.h>
__BEGIN_DECLS
struct dpaa_priv;
struct ifnet;
struct mbuf;
struct dpaa_priv *dpaa_get_priv_of_ifp(struct ifnet *);
typedef struct {
size_t count;
struct bm_buffer bmb[8];
} dpaa_buffer_recycle_context;
void dpaa_recycle_mcluster(struct dpaa_priv *,
dpaa_buffer_recycle_context *, struct mbuf *);
__END_DECLS
#endif /* _SOC_FSL_DPAA_H */

View File

@ -44,6 +44,8 @@
#include <linux/phy.h>
#include <soc/fsl/dpaa.h>
#include "../../../../../../../../linux/drivers/net/ethernet/freescale/dpaa/dpaa_eth.h"
#define FMAN_MAC_LOCK(sc) mtx_lock(&(sc)->mtx)
@ -579,3 +581,12 @@ void dpaa_cleanup_tx_fd(struct ifnet *ifp, const struct qm_fd *fd)
m_freem(sgt->m);
uma_zfree(sc->sgt_zone, sgt);
}
struct dpaa_priv *
dpaa_get_priv_of_ifp(struct ifnet *ifp)
{
struct fman_mac_softc *sc;
sc = ifp->if_softc;
return (netdev_priv(&sc->mac_dev.net_dev));
}