bus/fslmc: add 32-bit functional support for ARM
This patch adds the functional logic to make the dpaa2 drivers work on 32bit machine. Signed-off-by: Hemant Agrawal <hemant.agrawal@nxp.com>
This commit is contained in:
parent
5ae1edff68
commit
171c8504bf
@ -20,6 +20,9 @@
|
||||
|
||||
#include "qbman_sys_decl.h"
|
||||
|
||||
#define CENA_WRITE_ENABLE 0
|
||||
#define CINH_WRITE_ENABLE 1
|
||||
|
||||
/* Debugging assists */
|
||||
static inline void __hexdump(unsigned long start, unsigned long end,
|
||||
unsigned long p, size_t sz, const unsigned char *c)
|
||||
@ -178,7 +181,11 @@ static inline void *qbman_cena_write_start_wo_shadow(struct qbman_swp_sys *s,
|
||||
s->addr_cena, s->idx, offset);
|
||||
#endif
|
||||
QBMAN_BUG_ON(offset & 63);
|
||||
#ifdef RTE_ARCH_64
|
||||
return (s->addr_cena + offset);
|
||||
#else
|
||||
return (s->addr_cinh + offset);
|
||||
#endif
|
||||
}
|
||||
|
||||
static inline void qbman_cena_write_complete(struct qbman_swp_sys *s,
|
||||
@ -191,11 +198,19 @@ static inline void qbman_cena_write_complete(struct qbman_swp_sys *s,
|
||||
s->addr_cena, s->idx, offset, shadow);
|
||||
hexdump(cmd, 64);
|
||||
#endif
|
||||
#ifdef RTE_ARCH_64
|
||||
for (loop = 15; loop >= 1; loop--)
|
||||
__raw_writel(shadow[loop], s->addr_cena +
|
||||
offset + loop * 4);
|
||||
lwsync();
|
||||
__raw_writel(shadow[0], s->addr_cena + offset);
|
||||
#else
|
||||
for (loop = 15; loop >= 1; loop--)
|
||||
__raw_writel(shadow[loop], s->addr_cinh +
|
||||
offset + loop * 4);
|
||||
lwsync();
|
||||
__raw_writel(shadow[0], s->addr_cinh + offset);
|
||||
#endif
|
||||
dcbf(s->addr_cena + offset);
|
||||
}
|
||||
|
||||
@ -224,9 +239,15 @@ static inline void *qbman_cena_read(struct qbman_swp_sys *s, uint32_t offset)
|
||||
s->addr_cena, s->idx, offset, shadow);
|
||||
#endif
|
||||
|
||||
#ifdef RTE_ARCH_64
|
||||
for (loop = 0; loop < 16; loop++)
|
||||
shadow[loop] = __raw_readl(s->addr_cena + offset
|
||||
+ loop * 4);
|
||||
#else
|
||||
for (loop = 0; loop < 16; loop++)
|
||||
shadow[loop] = __raw_readl(s->addr_cinh + offset
|
||||
+ loop * 4);
|
||||
#endif
|
||||
#ifdef QBMAN_CENA_TRACE
|
||||
hexdump(shadow, 64);
|
||||
#endif
|
||||
@ -313,6 +334,11 @@ static inline int qbman_swp_sys_init(struct qbman_swp_sys *s,
|
||||
uint8_t dqrr_size)
|
||||
{
|
||||
uint32_t reg;
|
||||
#ifdef RTE_ARCH_64
|
||||
uint8_t wn = CENA_WRITE_ENABLE;
|
||||
#else
|
||||
uint8_t wn = CINH_WRITE_ENABLE;
|
||||
#endif
|
||||
|
||||
s->addr_cena = d->cena_bar;
|
||||
s->addr_cinh = d->cinh_bar;
|
||||
@ -333,10 +359,10 @@ static inline int qbman_swp_sys_init(struct qbman_swp_sys *s,
|
||||
QBMAN_BUG_ON(reg);
|
||||
#endif
|
||||
if (s->eqcr_mode == qman_eqcr_vb_array)
|
||||
reg = qbman_set_swp_cfg(dqrr_size, 0, 0, 3, 2, 3, 1, 1, 1, 1,
|
||||
reg = qbman_set_swp_cfg(dqrr_size, wn, 0, 3, 2, 3, 1, 1, 1, 1,
|
||||
1, 1);
|
||||
else
|
||||
reg = qbman_set_swp_cfg(dqrr_size, 0, 1, 3, 2, 2, 1, 1, 1, 1,
|
||||
reg = qbman_set_swp_cfg(dqrr_size, wn, 1, 3, 2, 2, 1, 1, 1, 1,
|
||||
1, 1);
|
||||
qbman_cinh_write(s, QBMAN_CINH_SWP_CFG, reg);
|
||||
reg = qbman_cinh_read(s, QBMAN_CINH_SWP_CFG);
|
||||
|
@ -15,6 +15,7 @@
|
||||
/****************/
|
||||
/* arch assists */
|
||||
/****************/
|
||||
#if defined(RTE_ARCH_ARM64)
|
||||
#define dcbz(p) { asm volatile("dc zva, %0" : : "r" (p) : "memory"); }
|
||||
#define lwsync() { asm volatile("dmb st" : : : "memory"); }
|
||||
#define dcbf(p) { asm volatile("dc cvac, %0" : : "r"(p) : "memory"); }
|
||||
@ -28,3 +29,11 @@ static inline void prefetch_for_store(void *p)
|
||||
{
|
||||
asm volatile("prfm pstl1keep, [%0, #0]" : : "r" (p));
|
||||
}
|
||||
#elif defined(RTE_ARCH_ARM)
|
||||
#define dcbz(p) memset(p, 0, 64)
|
||||
#define lwsync() { asm volatile("dmb st" : : : "memory"); }
|
||||
#define dcbf(p) RTE_SET_USED(p)
|
||||
#define dccivac(p) RTE_SET_USED(p)
|
||||
#define prefetch_for_load(p) { asm volatile ("pld [%0]" : : "r" (p)); }
|
||||
#define prefetch_for_store(p) { asm volatile ("pld [%0]" : : "r" (p)); }
|
||||
#endif
|
||||
|
Loading…
x
Reference in New Issue
Block a user