mirror of
https://git.rtems.org/rtems-libbsd/
synced 2025-05-13 18:49:19 +08:00
dpaa: Add <soc/fsl/dpaa.h>
This commit is contained in:
parent
9789434e21
commit
e3dc39ee0c
@ -56,6 +56,8 @@
|
|||||||
#include <linux/percpu.h>
|
#include <linux/percpu.h>
|
||||||
#include <linux/dma-mapping.h>
|
#include <linux/dma-mapping.h>
|
||||||
#include <linux/sort.h>
|
#include <linux/sort.h>
|
||||||
|
#else /* __rtems__ */
|
||||||
|
#include <soc/fsl/dpaa.h>
|
||||||
#endif /* __rtems__ */
|
#endif /* __rtems__ */
|
||||||
#include <soc/fsl/bman.h>
|
#include <soc/fsl/bman.h>
|
||||||
#include <soc/fsl/qman.h>
|
#include <soc/fsl/qman.h>
|
||||||
@ -1606,6 +1608,35 @@ release_previous_buffs:
|
|||||||
|
|
||||||
return 0;
|
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)
|
static int dpaa_bp_seed(struct dpaa_bp *dpaa_bp)
|
||||||
{
|
{
|
||||||
|
53
rtemsbsd/powerpc/include/soc/fsl/dpaa.h
Normal file
53
rtemsbsd/powerpc/include/soc/fsl/dpaa.h
Normal 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 */
|
@ -44,6 +44,8 @@
|
|||||||
|
|
||||||
#include <linux/phy.h>
|
#include <linux/phy.h>
|
||||||
|
|
||||||
|
#include <soc/fsl/dpaa.h>
|
||||||
|
|
||||||
#include "../../../../../../../../linux/drivers/net/ethernet/freescale/dpaa/dpaa_eth.h"
|
#include "../../../../../../../../linux/drivers/net/ethernet/freescale/dpaa/dpaa_eth.h"
|
||||||
|
|
||||||
#define FMAN_MAC_LOCK(sc) mtx_lock(&(sc)->mtx)
|
#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);
|
m_freem(sgt->m);
|
||||||
uma_zfree(sc->sgt_zone, sgt);
|
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));
|
||||||
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user