diff options
author | jason <jason.jin@freescale.com> | 2015-06-01 08:30:34 (GMT) |
---|---|---|
committer | jason <jason.jin@freescale.com> | 2015-06-01 08:30:34 (GMT) |
commit | 5217966a0624a33977766b5c5e91a0bc46d9cb36 (patch) | |
tree | e55aabe4f6e5284bd863349d8d540d427d495e94 /drivers | |
parent | 02d571e96d41e475ad809326a94a1b3beb3b104e (diff) | |
parent | 1b189c445fc54387c7a3bb94c61232d4f3846922 (diff) | |
download | linux-fsl-qoriq-5217966a0624a33977766b5c5e91a0bc46d9cb36.tar.xz |
Merge branch 'qoriq-sdk' into LS1-SDK-Rev2.0
Diffstat (limited to 'drivers')
47 files changed, 819 insertions, 1463 deletions
diff --git a/drivers/clk/clk-qoriq.c b/drivers/clk/clk-qoriq.c index bbb2568..4c3d27c 100644 --- a/drivers/clk/clk-qoriq.c +++ b/drivers/clk/clk-qoriq.c @@ -127,7 +127,7 @@ static void __init core_mux_init(struct device_node *np) init.name = clk_name; init.ops = &cmux_ops; init.parent_names = parent_names; - init.num_parents = count; + init.num_parents = (u8)count; init.flags = 0; cmux_clk->hw.init = &init; diff --git a/drivers/crypto/caam/caamalg.c b/drivers/crypto/caam/caamalg.c index ba0c55a..0f117d0 100644 --- a/drivers/crypto/caam/caamalg.c +++ b/drivers/crypto/caam/caamalg.c @@ -660,6 +660,12 @@ static int tls_set_sh_desc(struct crypto_aead *aead) unsigned int blocksize = crypto_aead_blocksize(aead); /* Associated data length is always = 13 for TLS */ unsigned int assoclen = 13; + /* + * Pointer Size bool determines the size of address pointers. + * false - Pointers fit in one 32-bit word. + * true - Pointers fit in two 32-bit words. + */ + static const bool ps = (CAAM_PTR_SZ != CAAM_CMD_SZ); if (!ctx->enckeylen || !ctx->authsize) return 0; @@ -878,6 +884,10 @@ static int tls_set_sh_desc(struct crypto_aead *aead) /* VSOL = payloadlen + icvlen + padlen */ append_math_add(desc, VARSEQOUTLEN, ZERO, REG3, 4); +#ifdef __LITTLE_ENDIAN + append_moveb(desc, MOVE_WAITCOMP | + MOVE_SRC_MATH0 | MOVE_DEST_MATH0 | 8); +#endif /* update Len field */ append_math_sub(desc, REG0, REG0, REG2, 8); @@ -917,23 +927,90 @@ static int tls_set_sh_desc(struct crypto_aead *aead) /* VSIL = (payloadlen + icvlen + padlen) - icvlen + padlen */ append_math_sub(desc, VARSEQINLEN, REG3, REG2, 4); - /* move seqoutptr fields into math registers */ - append_move(desc, MOVE_WAITCOMP | MOVE_SRC_DESCBUF | MOVE_DEST_MATH0 | - (54 * 4 << MOVE_OFFSET_SHIFT) | 20); - /* seqinptr will point to seqoutptr */ - append_math_and_imm_u32(desc, REG0, REG0, IMM, - ~(CMD_SEQ_IN_PTR ^ CMD_SEQ_OUT_PTR)); - /* Load jump command */ - jumpback = CMD_JUMP | (char)-9; - append_load_imm_u32(desc, jumpback, LDST_CLASS_DECO | LDST_IMM | - LDST_SRCDST_WORD_DECO_MATH2 | - (4 << LDST_OFFSET_SHIFT)); - append_jump(desc, JUMP_TEST_ALL | JUMP_COND_CALM | 1); - /* move updated seqinptr fields to JD */ - append_move(desc, MOVE_WAITCOMP | MOVE_SRC_MATH0 | MOVE_DEST_DESCBUF | - (54 * 4 << MOVE_OFFSET_SHIFT) | 24); - /* read updated seqinptr */ - append_jump(desc, JUMP_TEST_ALL | JUMP_COND_CALM | 6); + /* + * Start a new input sequence using the SEQ OUT PTR command options, + * pointer and length used when the current output sequence was defined. + */ + if (ps) { + /* + * Move the lower 32 bits of Shared Descriptor address, the + * SEQ OUT PTR command, Output Pointer (2 words) and + * Output Length into math registers. + */ +#ifdef __LITTLE_ENDIAN + append_move(desc, MOVE_WAITCOMP | MOVE_SRC_DESCBUF | + MOVE_DEST_MATH0 | (55 * 4 << MOVE_OFFSET_SHIFT) | + 20); +#else + append_move(desc, MOVE_WAITCOMP | MOVE_SRC_DESCBUF | + MOVE_DEST_MATH0 | (54 * 4 << MOVE_OFFSET_SHIFT) | + 20); +#endif + /* Transform SEQ OUT PTR command in SEQ IN PTR command */ + append_math_and_imm_u32(desc, REG0, REG0, IMM, + ~(CMD_SEQ_IN_PTR ^ CMD_SEQ_OUT_PTR)); + /* Append a JUMP command after the copied fields */ + jumpback = CMD_JUMP | (char)-9; + append_load_imm_u32(desc, jumpback, LDST_CLASS_DECO | LDST_IMM | + LDST_SRCDST_WORD_DECO_MATH2 | + (4 << LDST_OFFSET_SHIFT)); + append_jump(desc, JUMP_TEST_ALL | JUMP_COND_CALM | 1); + /* Move the updated fields back to the Job Descriptor */ +#ifdef __LITTLE_ENDIAN + append_move(desc, MOVE_WAITCOMP | MOVE_SRC_MATH0 | + MOVE_DEST_DESCBUF | (55 * 4 << MOVE_OFFSET_SHIFT) | + 24); +#else + append_move(desc, MOVE_WAITCOMP | MOVE_SRC_MATH0 | + MOVE_DEST_DESCBUF | (54 * 4 << MOVE_OFFSET_SHIFT) | + 24); +#endif + /* + * Read the new SEQ IN PTR command, Input Pointer, Input Length + * and then jump back to the next command from the + * Shared Descriptor. + */ + append_jump(desc, JUMP_TEST_ALL | JUMP_COND_CALM | 6); + } else { + /* + * Move the SEQ OUT PTR command, Output Pointer (1 word) and + * Output Length into math registers. + */ +#ifdef __LITTLE_ENDIAN + append_move(desc, MOVE_WAITCOMP | MOVE_SRC_DESCBUF | + MOVE_DEST_MATH0 | (54 * 4 << MOVE_OFFSET_SHIFT) | + 12); +#else + append_move(desc, MOVE_WAITCOMP | MOVE_SRC_DESCBUF | + MOVE_DEST_MATH0 | (53 * 4 << MOVE_OFFSET_SHIFT) | + 12); +#endif + /* Transform SEQ OUT PTR command in SEQ IN PTR command */ + append_math_and_imm_u64(desc, REG0, REG0, IMM, + ~(((u64)(CMD_SEQ_IN_PTR ^ CMD_SEQ_OUT_PTR)) << 32)); + /* Append a JUMP command after the copied fields */ + jumpback = CMD_JUMP | (char)-7; + append_load_imm_u32(desc, jumpback, LDST_CLASS_DECO | LDST_IMM | + LDST_SRCDST_WORD_DECO_MATH1 | + (4 << LDST_OFFSET_SHIFT)); + append_jump(desc, JUMP_TEST_ALL | JUMP_COND_CALM | 1); + /* Move the updated fields back to the Job Descriptor */ +#ifdef __LITTLE_ENDIAN + append_move(desc, MOVE_WAITCOMP | MOVE_SRC_MATH0 | + MOVE_DEST_DESCBUF | (54 * 4 << MOVE_OFFSET_SHIFT) | + 16); +#else + append_move(desc, MOVE_WAITCOMP | MOVE_SRC_MATH0 | + MOVE_DEST_DESCBUF | (53 * 4 << MOVE_OFFSET_SHIFT) | + 16); +#endif + /* + * Read the new SEQ IN PTR command, Input Pointer, Input Length + * and then jump back to the next command from the + * Shared Descriptor. + */ + append_jump(desc, JUMP_TEST_ALL | JUMP_COND_CALM | 5); + } /* skip payload */ append_seq_fifo_load(desc, 0, FIFOLD_CLASS_SKIP | FIFOLDST_VLF); @@ -4315,7 +4392,7 @@ static int caam_cra_init(struct crypto_tfm *tfm) if (op_id < ARRAY_SIZE(digest_size)) { ctx->authsize = digest_size[op_id]; } else { - dev_err(ctx->jrdev, "incorrect op_id %d; must be less than %d\n", + dev_err(ctx->jrdev, "incorrect op_id %d; must be less than %zu\n", op_id, ARRAY_SIZE(digest_size)); caam_jr_free(ctx->jrdev); return -EINVAL; diff --git a/drivers/crypto/caam/caamalg_qi.c b/drivers/crypto/caam/caamalg_qi.c index 81b82bd..cc47085 100644 --- a/drivers/crypto/caam/caamalg_qi.c +++ b/drivers/crypto/caam/caamalg_qi.c @@ -376,6 +376,12 @@ static int tls_set_sh_desc(struct crypto_aead *aead) unsigned int blocksize = crypto_aead_blocksize(aead); /* Associated data length is always = 13 for TLS */ unsigned int assoclen = 13; + /* + * Pointer Size bool determines the size of address pointers. + * false - Pointers fit in one 32-bit word. + * true - Pointers fit in two 32-bit words. + */ + static const bool ps = (CAAM_PTR_SZ != CAAM_CMD_SZ); if (!ctx->enckeylen || !ctx->authsize) return 0; @@ -587,6 +593,10 @@ static int tls_set_sh_desc(struct crypto_aead *aead) /* VSOL = payloadlen + icvlen + padlen */ append_math_add(desc, VARSEQOUTLEN, ZERO, REG3, 4); +#ifdef __LITTLE_ENDIAN + append_moveb(desc, MOVE_WAITCOMP | + MOVE_SRC_MATH0 | MOVE_DEST_MATH0 | 8); +#endif /* update Len field */ append_math_sub(desc, REG0, REG0, REG2, 8); @@ -626,23 +636,90 @@ static int tls_set_sh_desc(struct crypto_aead *aead) /* VSIL = (payloadlen + icvlen + padlen) - icvlen + padlen */ append_math_sub(desc, VARSEQINLEN, REG3, REG2, 4); - /* move seqoutptr fields into math registers */ - append_move(desc, MOVE_WAITCOMP | MOVE_SRC_DESCBUF | MOVE_DEST_MATH0 | - (54 * 4 << MOVE_OFFSET_SHIFT) | 20); - /* seqinptr will point to seqoutptr */ - append_math_and_imm_u32(desc, REG0, REG0, IMM, - ~(CMD_SEQ_IN_PTR ^ CMD_SEQ_OUT_PTR)); - /* Load jump command */ - jumpback = CMD_JUMP | (char)-9; - append_load_imm_u32(desc, jumpback, LDST_CLASS_DECO | LDST_IMM | - LDST_SRCDST_WORD_DECO_MATH2 | - (4 << LDST_OFFSET_SHIFT)); - append_jump(desc, JUMP_TEST_ALL | JUMP_COND_CALM | 1); - /* move updated seqinptr fields to JD */ - append_move(desc, MOVE_WAITCOMP | MOVE_SRC_MATH0 | MOVE_DEST_DESCBUF | - (54 * 4 << MOVE_OFFSET_SHIFT) | 24); - /* read updated seqinptr */ - append_jump(desc, JUMP_TEST_ALL | JUMP_COND_CALM | 6); + /* + * Start a new input sequence using the SEQ OUT PTR command options, + * pointer and length used when the current output sequence was defined. + */ + if (ps) { + /* + * Move the lower 32 bits of Shared Descriptor address, the + * SEQ OUT PTR command, Output Pointer (2 words) and + * Output Length into math registers. + */ +#ifdef __LITTLE_ENDIAN + append_move(desc, MOVE_WAITCOMP | MOVE_SRC_DESCBUF | + MOVE_DEST_MATH0 | (55 * 4 << MOVE_OFFSET_SHIFT) | + 20); +#else + append_move(desc, MOVE_WAITCOMP | MOVE_SRC_DESCBUF | + MOVE_DEST_MATH0 | (54 * 4 << MOVE_OFFSET_SHIFT) | + 20); +#endif + /* Transform SEQ OUT PTR command in SEQ IN PTR command */ + append_math_and_imm_u32(desc, REG0, REG0, IMM, + ~(CMD_SEQ_IN_PTR ^ CMD_SEQ_OUT_PTR)); + /* Append a JUMP command after the copied fields */ + jumpback = CMD_JUMP | (char)-9; + append_load_imm_u32(desc, jumpback, LDST_CLASS_DECO | LDST_IMM | + LDST_SRCDST_WORD_DECO_MATH2 | + (4 << LDST_OFFSET_SHIFT)); + append_jump(desc, JUMP_TEST_ALL | JUMP_COND_CALM | 1); + /* Move the updated fields back to the Job Descriptor */ +#ifdef __LITTLE_ENDIAN + append_move(desc, MOVE_WAITCOMP | MOVE_SRC_MATH0 | + MOVE_DEST_DESCBUF | (55 * 4 << MOVE_OFFSET_SHIFT) | + 24); +#else + append_move(desc, MOVE_WAITCOMP | MOVE_SRC_MATH0 | + MOVE_DEST_DESCBUF | (54 * 4 << MOVE_OFFSET_SHIFT) | + 24); +#endif + /* + * Read the new SEQ IN PTR command, Input Pointer, Input Length + * and then jump back to the next command from the + * Shared Descriptor. + */ + append_jump(desc, JUMP_TEST_ALL | JUMP_COND_CALM | 6); + } else { + /* + * Move the SEQ OUT PTR command, Output Pointer (1 word) and + * Output Length into math registers. + */ +#ifdef __LITTLE_ENDIAN + append_move(desc, MOVE_WAITCOMP | MOVE_SRC_DESCBUF | + MOVE_DEST_MATH0 | (54 * 4 << MOVE_OFFSET_SHIFT) | + 12); +#else + append_move(desc, MOVE_WAITCOMP | MOVE_SRC_DESCBUF | + MOVE_DEST_MATH0 | (53 * 4 << MOVE_OFFSET_SHIFT) | + 12); +#endif + /* Transform SEQ OUT PTR command in SEQ IN PTR command */ + append_math_and_imm_u64(desc, REG0, REG0, IMM, + ~(((u64)(CMD_SEQ_IN_PTR ^ CMD_SEQ_OUT_PTR)) << 32)); + /* Append a JUMP command after the copied fields */ + jumpback = CMD_JUMP | (char)-7; + append_load_imm_u32(desc, jumpback, LDST_CLASS_DECO | LDST_IMM | + LDST_SRCDST_WORD_DECO_MATH1 | + (4 << LDST_OFFSET_SHIFT)); + append_jump(desc, JUMP_TEST_ALL | JUMP_COND_CALM | 1); + /* Move the updated fields back to the Job Descriptor */ +#ifdef __LITTLE_ENDIAN + append_move(desc, MOVE_WAITCOMP | MOVE_SRC_MATH0 | + MOVE_DEST_DESCBUF | (54 * 4 << MOVE_OFFSET_SHIFT) | + 16); +#else + append_move(desc, MOVE_WAITCOMP | MOVE_SRC_MATH0 | + MOVE_DEST_DESCBUF | (53 * 4 << MOVE_OFFSET_SHIFT) | + 16); +#endif + /* + * Read the new SEQ IN PTR command, Input Pointer, Input Length + * and then jump back to the next command from the + * Shared Descriptor. + */ + append_jump(desc, JUMP_TEST_ALL | JUMP_COND_CALM | 5); + } /* skip payload */ append_seq_fifo_load(desc, 0, FIFOLD_CLASS_SKIP | FIFOLDST_VLF); diff --git a/drivers/crypto/caam/caamhash.c b/drivers/crypto/caam/caamhash.c index 697a683..e99a45b 100644 --- a/drivers/crypto/caam/caamhash.c +++ b/drivers/crypto/caam/caamhash.c @@ -1778,7 +1778,7 @@ static int caam_hash_cra_init(struct crypto_tfm *tfm) op_id = (ctx->alg_op & OP_ALG_ALGSEL_SUBMASK) >> OP_ALG_ALGSEL_SHIFT; if (op_id >= ARRAY_SIZE(runninglen)) { - dev_err(ctx->jrdev, "incorrect op_id %d; must be less than %d\n", + dev_err(ctx->jrdev, "incorrect op_id %d; must be less than %zu\n", op_id, ARRAY_SIZE(runninglen)); ret = -EINVAL; goto out_err; diff --git a/drivers/crypto/caam/caampkc.c b/drivers/crypto/caam/caampkc.c index f98abfb..e9944a4 100644 --- a/drivers/crypto/caam/caampkc.c +++ b/drivers/crypto/caam/caampkc.c @@ -30,6 +30,12 @@ struct caam_pkc_context_s { struct device *dev; }; +struct caam_pkc_alg { + struct list_head entry; + struct device *ctrldev; + struct crypto_alg crypto_alg; +}; + static void rsa_unmap(struct device *dev, struct rsa_edesc *edesc, struct pkc_request *req) { @@ -484,6 +490,10 @@ static int caam_keygen_edesc(struct pkc_request *req, { struct crypto_pkc *tfm = crypto_pkc_reqtfm(req); struct caam_pkc_context_s *ctxt = crypto_pkc_ctx(tfm); + struct crypto_alg *alg = crypto_pkc_tfm(tfm)->__crt_alg; + struct caam_pkc_alg *caam_alg = + container_of(alg, struct caam_pkc_alg, crypto_alg); + struct caam_drv_private *caam_priv = dev_get_drvdata(caam_alg->ctrldev); struct device *dev = ctxt->dev; struct keygen_req_s *key_req = &req->req_u.keygen; @@ -491,6 +501,7 @@ static int caam_keygen_edesc(struct pkc_request *req, edesc->n_len = key_req->r_len; edesc->req_type = req->type; edesc->curve_type = req->curve_type; + edesc->erratum_A_006899 = caam_priv->errata & SEC_ERRATUM_A_006899; edesc->q_dma = dma_map_single(dev, key_req->q, key_req->q_len, DMA_TO_DEVICE); @@ -513,6 +524,20 @@ static int caam_keygen_edesc(struct pkc_request *req, goto g_map_fail; } + if (edesc->erratum_A_006899) { + dma_to_sec4_sg_one(&(edesc->g_sg), edesc->g_dma, + key_req->g_len, 0); + edesc->g_sg.len |= SEC4_SG_LEN_FIN; + + edesc->g_sg_dma = dma_map_single(dev, &(edesc->g_sg), + sizeof(struct sec4_sg_entry), + DMA_TO_DEVICE); + if (dma_mapping_error(dev, edesc->g_sg_dma)) { + dev_err(dev, "unable to map S/G table\n"); + goto g_sg_dma_fail; + } + } + edesc->key_dma = dma_map_single(dev, key_req->pub_key, key_req->pub_key_len, DMA_FROM_DEVICE); if (dma_mapping_error(dev, edesc->key_dma)) { @@ -545,6 +570,10 @@ s_map_fail: dma_unmap_single(dev, edesc->key_dma, key_req->pub_key_len, DMA_FROM_DEVICE); key_map_fail: + if (edesc->erratum_A_006899) + dma_unmap_single(dev, edesc->g_sg_dma, key_req->g_len, + DMA_TO_DEVICE); +g_sg_dma_fail: dma_unmap_single(dev, edesc->g_dma, key_req->g_len, DMA_TO_DEVICE); g_map_fail: dma_unmap_single(dev, edesc->r_dma, key_req->r_len, DMA_TO_DEVICE); @@ -1324,12 +1353,6 @@ static struct caam_pkc_template driver_pkc[] = { } }; -struct caam_pkc_alg { - struct list_head entry; - struct device *ctrldev; - struct crypto_alg crypto_alg; -}; - /* Per session pkc's driver context creation function */ static int caam_pkc_cra_init(struct crypto_tfm *tfm) { diff --git a/drivers/crypto/caam/ctrl.c b/drivers/crypto/caam/ctrl.c index 7a22427..321deb0 100644 --- a/drivers/crypto/caam/ctrl.c +++ b/drivers/crypto/caam/ctrl.c @@ -480,6 +480,7 @@ static int caam_probe(struct platform_device *pdev) { int ret, ring, rspec; u64 caam_id; + u32 caam_id_ms; struct device *dev; struct device_node *nprop, *np; struct caam_ctrl __iomem *ctrl; @@ -660,7 +661,12 @@ static int caam_probe(struct platform_device *pdev) /* NOTE: RTIC detection ought to go here, around Si time */ ctrlpriv->era = caam_get_era(); - caam_id = (u64)rd_reg32(&ctrl->perfmon.caam_id_ms) << 32 | + + caam_id_ms = rd_reg32(&ctrl->perfmon.caam_id_ms); + if (caam_id_ms == SEC_ID_MS_T1040) + ctrlpriv->errata |= SEC_ERRATUM_A_006899; + + caam_id = (u64)caam_id_ms << 32 | (u64)rd_reg32(&ctrl->perfmon.caam_id_ls); /* Report "alive" for developer to see */ diff --git a/drivers/crypto/caam/desc.h b/drivers/crypto/caam/desc.h index 03efd6e..e57fefa 100644 --- a/drivers/crypto/caam/desc.h +++ b/drivers/crypto/caam/desc.h @@ -38,6 +38,7 @@ struct sec4_sg_entry { #define CMD_SEQ_LOAD (0x03 << CMD_SHIFT) #define CMD_FIFO_LOAD (0x04 << CMD_SHIFT) #define CMD_SEQ_FIFO_LOAD (0x05 << CMD_SHIFT) +#define CMD_MOVEB (0x07 << CMD_SHIFT) #define CMD_STORE (0x0a << CMD_SHIFT) #define CMD_SEQ_STORE (0x0b << CMD_SHIFT) #define CMD_FIFO_STORE (0x0c << CMD_SHIFT) diff --git a/drivers/crypto/caam/desc_constr.h b/drivers/crypto/caam/desc_constr.h index 112eb29..12a0eda 100644 --- a/drivers/crypto/caam/desc_constr.h +++ b/drivers/crypto/caam/desc_constr.h @@ -167,6 +167,7 @@ static inline u32 *append_##cmd(u32 *desc, u32 options) \ } APPEND_CMD_RET(jump, JUMP) APPEND_CMD_RET(move, MOVE) +APPEND_CMD_RET(moveb, MOVEB) static inline void set_jump_tgt_here(u32 *desc, u32 *jump_cmd) { @@ -369,7 +370,7 @@ do { \ if (upper) \ append_u64(desc, data); \ else \ - append_u32(desc, data); \ + append_u32(desc, lower_32_bits(data)); \ } while (0) #define append_math_add_imm_u64(desc, dest, src0, src1, data) \ diff --git a/drivers/crypto/caam/intern.h b/drivers/crypto/caam/intern.h index 43596fe..9faf832 100644 --- a/drivers/crypto/caam/intern.h +++ b/drivers/crypto/caam/intern.h @@ -95,6 +95,11 @@ struct caam_drv_private { struct list_head pkc_list; int era; /* SEC Era */ + +#define SEC_ERRATUM_A_006899 0x01 + /* SEC errata bitmask */ + u32 errata; + int virt_en; /* Virtualization enabled in CAAM */ #define RNG4_MAX_HANDLES 2 diff --git a/drivers/crypto/caam/pkc_desc.c b/drivers/crypto/caam/pkc_desc.c index 5bcf5d3..2e81519 100644 --- a/drivers/crypto/caam/pkc_desc.c +++ b/drivers/crypto/caam/pkc_desc.c @@ -271,10 +271,15 @@ void *caam_keygen_desc(struct dsa_edesc_s *edesc) (start_idx << HDR_START_IDX_SHIFT) | (start_idx & HDR_DESCLEN_MASK) | HDR_ONE); ecc_desc->sgf_ln = (edesc->l_len << DSA_PDB_L_SHIFT) | - ((edesc->n_len & DSA_PDB_N_MASK)); + (edesc->n_len & DSA_PDB_N_MASK); + if (edesc->erratum_A_006899) { + ecc_desc->sgf_ln |= DSA_PDB_SGF_G; + ecc_desc->g_dma = edesc->g_sg_dma; + } else { + ecc_desc->g_dma = edesc->g_dma; + } ecc_desc->q_dma = edesc->q_dma; ecc_desc->r_dma = edesc->r_dma; - ecc_desc->g_dma = edesc->g_dma; ecc_desc->s_dma = edesc->s_dma; ecc_desc->w_dma = edesc->key_dma; ecc_desc->ab_dma = edesc->ab_dma; diff --git a/drivers/crypto/caam/pkc_desc.h b/drivers/crypto/caam/pkc_desc.h index 03013c2..e859e40 100644 --- a/drivers/crypto/caam/pkc_desc.h +++ b/drivers/crypto/caam/pkc_desc.h @@ -20,6 +20,7 @@ #include "desc_constr.h" #include "jr.h" #include "error.h" +#include "sg_sw_sec4.h" #include <linux/crypto.h> #include "pdb.h" @@ -187,8 +188,11 @@ struct dsa_edesc_s { dma_addr_t d_dma; dma_addr_t ab_dma; dma_addr_t g_dma; + dma_addr_t g_sg_dma; dma_addr_t tmp_dma; uint8_t *tmp; /* Allocate locally for dsa_verify */ + struct sec4_sg_entry g_sg; + bool erratum_A_006899; u32 hw_desc[]; }; diff --git a/drivers/crypto/caam/regs.h b/drivers/crypto/caam/regs.h index 928cb53..72193f8 100644 --- a/drivers/crypto/caam/regs.h +++ b/drivers/crypto/caam/regs.h @@ -182,6 +182,8 @@ struct sec_vid { u8 min_rev; }; +#define SEC_ID_MS_T1040 0x0A120400 + struct caam_perfmon { /* Performance Monitor Registers f00-f9f */ u64 req_dequeued; /* PC_REQ_DEQ - Dequeued Requests */ diff --git a/drivers/crypto/caam/sg_sw_sec4.h b/drivers/crypto/caam/sg_sw_sec4.h index eef6345..752134c 100644 --- a/drivers/crypto/caam/sg_sw_sec4.h +++ b/drivers/crypto/caam/sg_sw_sec4.h @@ -90,9 +90,9 @@ static inline int sg_count(struct scatterlist *sg_list, int nbytes, return sg_nents; } -static int dma_map_sg_chained(struct device *dev, struct scatterlist *sg, - unsigned int nents, enum dma_data_direction dir, - bool chained) +static int __maybe_unused dma_map_sg_chained(struct device *dev, + struct scatterlist *sg, unsigned int nents, enum dma_data_direction dir, + bool chained) { if (!sg || !nents) return 0; @@ -109,9 +109,9 @@ static int dma_map_sg_chained(struct device *dev, struct scatterlist *sg, return nents; } -static void dma_unmap_sg_chained(struct device *dev, struct scatterlist *sg, - unsigned int nents, enum dma_data_direction dir, - bool chained) +static void __maybe_unused dma_unmap_sg_chained(struct device *dev, + struct scatterlist *sg, unsigned int nents, enum dma_data_direction dir, + bool chained) { if (!sg || !nents) return; diff --git a/drivers/crypto/talitos.c b/drivers/crypto/talitos.c index c7a1368..8ebe3f9 100644 --- a/drivers/crypto/talitos.c +++ b/drivers/crypto/talitos.c @@ -65,7 +65,7 @@ static void to_talitos_ptr(struct talitos_ptr *talitos_ptr, dma_addr_t dma_addr) */ static void map_single_talitos_ptr(struct device *dev, struct talitos_ptr *talitos_ptr, - unsigned short len, void *data, + unsigned int len, void *data, unsigned char extent, enum dma_data_direction dir) { @@ -458,7 +458,7 @@ static void talitos_error(struct device *dev, u32 isr, u32 isr_lo) struct talitos_private *priv = dev_get_drvdata(dev); unsigned int timeout = TALITOS_TIMEOUT; int ch, error, reset_dev = 0, reset_ch = 0; - u32 v, v_lo; + u32 v_lo; for (ch = 0; ch < priv->num_channels; ch++) { /* skip channels without errors */ @@ -467,7 +467,6 @@ static void talitos_error(struct device *dev, u32 isr, u32 isr_lo) error = -EINVAL; - v = in_be32(priv->chan[ch].reg + TALITOS_CCPSR); v_lo = in_be32(priv->chan[ch].reg + TALITOS_CCPSR_LO); if (v_lo & TALITOS_CCPSR_LO_DOF) { @@ -1052,7 +1051,7 @@ struct talitos_ahash_req_ctx { unsigned int first; unsigned int last; unsigned int to_hash_later; - u64 nbuf; + unsigned int nbuf; struct scatterlist bufsl[2]; struct scatterlist *psrc; }; @@ -1298,7 +1297,7 @@ static int sg_to_link_tbl(struct scatterlist *sg, int sg_count, { int n_sg = sg_count; - while (n_sg--) { + while (sg && n_sg--) { to_talitos_ptr(link_tbl_ptr, sg_dma_address(sg)); link_tbl_ptr->len = cpu_to_be16(sg_dma_len(sg)); link_tbl_ptr->j_extent = 0; @@ -1316,7 +1315,8 @@ static int sg_to_link_tbl(struct scatterlist *sg, int sg_count, sg_count--; link_tbl_ptr--; } - be16_add_cpu(&link_tbl_ptr->len, cryptlen); + link_tbl_ptr->len = cpu_to_be16(be16_to_cpu(link_tbl_ptr->len) + + cryptlen); /* tag end of link table */ link_tbl_ptr->j_extent = DESC_PTR_LNKTBL_RETURN; @@ -1486,7 +1486,7 @@ static int sg_count(struct scatterlist *sg_list, int nbytes, bool *chained) int sg_nents = 0; *chained = false; - while (nbytes > 0) { + while (nbytes > 0 && sg) { sg_nents++; nbytes -= sg->length; if (!sg_is_last(sg) && (sg + 1)->length == 0) @@ -1825,8 +1825,7 @@ static int common_nonsnoop(struct talitos_edesc *edesc, (edesc->src_nents + 1) * sizeof(struct talitos_ptr)); desc->ptr[4].j_extent |= DESC_PTR_LNKTBL_JUMP; - sg_count = sg_to_link_tbl(areq->dst, sg_count, cryptlen, - link_tbl_ptr); + sg_to_link_tbl(areq->dst, sg_count, cryptlen, link_tbl_ptr); dma_sync_single_for_device(ctx->dev, edesc->dma_link_tbl, edesc->dma_len, DMA_BIDIRECTIONAL); } @@ -2961,6 +2960,7 @@ static struct talitos_crypto_alg *talitos_alg_alloc(struct device *dev, break; default: dev_err(dev, "unknown algorithm type %d\n", t_alg->algt.type); + kfree(t_alg); return ERR_PTR(-EINVAL); } diff --git a/drivers/mtd/devices/m25p80.c b/drivers/mtd/devices/m25p80.c index fa5e463..d531b1e 100644 --- a/drivers/mtd/devices/m25p80.c +++ b/drivers/mtd/devices/m25p80.c @@ -26,6 +26,7 @@ #include <linux/spi/spi.h> #include <linux/spi/flash.h> #include <linux/mtd/spi-nor.h> +#include <linux/delay.h> #define MAX_CMD_SIZE 6 struct m25p { @@ -256,9 +257,13 @@ static int m25p_suspend(struct device *dev) struct m25p *flash = dev_get_drvdata(dev); struct spi_nor *nor = &flash->spi_nor; - /* Wait till previous write/erase is done. */ - if (nor->wait_till_ready) - return nor->wait_till_ready(nor); + /* + * A minimum de-selection time of 50ns must come between the + * RESET ENABLE and RESET MEMORY commands + */ + m25p80_write_reg(nor, SPINOR_OP_RESET_EN, NULL, 0, 0); + ndelay(50); + m25p80_write_reg(nor, SPINOR_OP_RESET_MEM, NULL, 0, 0); return 0; } diff --git a/drivers/net/ethernet/freescale/dpa/dpaa_eth_common.c b/drivers/net/ethernet/freescale/dpa/dpaa_eth_common.c index 327246c..06ada5f 100644 --- a/drivers/net/ethernet/freescale/dpa/dpaa_eth_common.c +++ b/drivers/net/ethernet/freescale/dpa/dpaa_eth_common.c @@ -821,6 +821,7 @@ void dpa_bp_drain(struct dpa_bp *bp) } } while (ret > 0); } +EXPORT_SYMBOL(dpa_bp_drain); static void __cold __attribute__((nonnull)) _dpa_bp_free(struct dpa_bp *dpa_bp) diff --git a/drivers/net/ethernet/freescale/dpa/dpaa_eth_generic.c b/drivers/net/ethernet/freescale/dpa/dpaa_eth_generic.c index 970e7c8..5bb4af0 100644 --- a/drivers/net/ethernet/freescale/dpa/dpaa_eth_generic.c +++ b/drivers/net/ethernet/freescale/dpa/dpaa_eth_generic.c @@ -1347,6 +1347,46 @@ static int dpa_generic_bp_create(struct net_device *net_dev, return 0; } +static void dpa_generic_bp_free(struct dpa_generic_priv_s *priv) +{ + struct dpa_bp *bp = NULL; + int i = 0; + + /* release the rx bpools */ + for (i = 0; i < priv->rx_bp_count; i++) { + bp = &priv->rx_bp[i]; + if (!bp) + continue; + + if (!atomic_dec_and_test(&bp->refs)) + continue; + + if (bp->free_buf_cb) + dpa_bp_drain(bp); + + bman_free_pool(bp->pool); + + if (bp->dev) + platform_device_unregister(to_platform_device(bp->dev)); + } + + /* release the tx draining bpool */ + bp = priv->draining_tx_bp; + if (!bp) + return; + + if (!atomic_dec_and_test(&bp->refs)) + return; + + if (bp->free_buf_cb) + dpa_bp_drain(bp); + + bman_free_pool(bp->pool); + + if (bp->dev) + platform_device_unregister(to_platform_device(bp->dev)); +} + static int dpa_generic_remove(struct platform_device *of_dev) { int err; @@ -1363,22 +1403,11 @@ static int dpa_generic_remove(struct platform_device *of_dev) dev_set_drvdata(dev, NULL); unregister_netdev(net_dev); - /* TODO: this is for private driver; make it generic */ - err = 0; -#if 0 err = dpa_fq_free(dev, &priv->dpa_fq_list); -#endif - dpa_private_napi_del(net_dev); + dpa_generic_napi_del(net_dev); - /* TODO: this is for private dirver also; make generic */ -#if 0 - dpa_bp_free(priv); - devm_kfree(dev, priv->dpa_bp); - - if (priv->buf_layout) - devm_kfree(dev, priv->buf_layout); -#endif + dpa_generic_bp_free(priv); #ifdef CONFIG_FSL_DPAA_ETH_DEBUGFS dpa_generic_debugfs_remove(net_dev); diff --git a/drivers/net/ethernet/freescale/dpa/dpaa_generic_debugfs.c b/drivers/net/ethernet/freescale/dpa/dpaa_generic_debugfs.c index 2b655cd..b53c289 100644 --- a/drivers/net/ethernet/freescale/dpa/dpaa_generic_debugfs.c +++ b/drivers/net/ethernet/freescale/dpa/dpaa_generic_debugfs.c @@ -247,7 +247,7 @@ int dpa_generic_debugfs_create(struct net_device *net_dev) void dpa_generic_debugfs_remove(struct net_device *net_dev) { - struct dpa_priv_s *priv = netdev_priv(net_dev); + struct dpa_generic_priv_s *priv = netdev_priv(net_dev); debugfs_remove(priv->debugfs_file); } diff --git a/drivers/net/ethernet/freescale/dpa/mac-api.c b/drivers/net/ethernet/freescale/dpa/mac-api.c index c9866db..3b93ddc 100644 --- a/drivers/net/ethernet/freescale/dpa/mac-api.c +++ b/drivers/net/ethernet/freescale/dpa/mac-api.c @@ -818,6 +818,7 @@ int fm_mac_dump_rx_stats(struct mac_device *h_mac, char *buf, int nn) return n; } +EXPORT_SYMBOL(fm_mac_dump_rx_stats); int fm_mac_dump_tx_stats(struct mac_device *h_mac, char *buf, int nn) { @@ -828,6 +829,7 @@ int fm_mac_dump_tx_stats(struct mac_device *h_mac, char *buf, int nn) return n; } +EXPORT_SYMBOL(fm_mac_dump_tx_stats); static void __cold setup_dtsec(struct mac_device *mac_dev) { diff --git a/drivers/net/ethernet/freescale/fman/Peripherals/FM/HC/hc.c b/drivers/net/ethernet/freescale/fman/Peripherals/FM/HC/hc.c index 5b03cfc..8bc0889 100644 --- a/drivers/net/ethernet/freescale/fman/Peripherals/FM/HC/hc.c +++ b/drivers/net/ethernet/freescale/fman/Peripherals/FM/HC/hc.c @@ -342,19 +342,6 @@ t_Error FmHcSetFramesDataMemory(t_Handle h_FmHc, return FillBufPool(p_FmHc); } -#if (defined(DEBUG_ERRORS) && (DEBUG_ERRORS > 0)) -t_Error FmHcDumpRegs(t_Handle h_FmHc) -{ - t_FmHc *p_FmHc = (t_FmHc*)h_FmHc; - - SANITY_CHECK_RETURN_ERROR(p_FmHc, E_INVALID_HANDLE); - SANITY_CHECK_RETURN_ERROR(p_FmHc->h_HcPortDev, E_INVALID_HANDLE); - - return FM_PORT_DumpRegs(p_FmHc->h_HcPortDev); - -} -#endif /* (defined(DEBUG_ERRORS) && ... */ - void FmHcTxConf(t_Handle h_FmHc, t_DpaaFD *p_Fd) { t_FmHc *p_FmHc = (t_FmHc*)h_FmHc; diff --git a/drivers/net/ethernet/freescale/fman/Peripherals/FM/MAC/dtsec.c b/drivers/net/ethernet/freescale/fman/Peripherals/FM/MAC/dtsec.c index d0ed2e7..5ae65f8 100644 --- a/drivers/net/ethernet/freescale/fman/Peripherals/FM/MAC/dtsec.c +++ b/drivers/net/ethernet/freescale/fman/Peripherals/FM/MAC/dtsec.c @@ -1202,52 +1202,6 @@ static t_Error DtsecSetException(t_Handle h_Dtsec, e_FmMacExceptions exception, return E_OK; } -/* ........................................................................... */ - -#if (defined(DEBUG_ERRORS) && (DEBUG_ERRORS > 0)) -static t_Error DtsecDumpRegs(t_Handle h_Dtsec) -{ - t_Dtsec *p_Dtsec = (t_Dtsec *)h_Dtsec; - int i = 0; - - DECLARE_DUMP; - - if (p_Dtsec->p_MemMap) - { - DUMP_TITLE(p_Dtsec->p_MemMap, ("dTSEC %d: ", p_Dtsec->macId)); - DUMP_VAR(p_Dtsec->p_MemMap, tsec_id); - DUMP_VAR(p_Dtsec->p_MemMap, tsec_id2); - DUMP_VAR(p_Dtsec->p_MemMap, ievent); - DUMP_VAR(p_Dtsec->p_MemMap, imask); - DUMP_VAR(p_Dtsec->p_MemMap, ecntrl); - DUMP_VAR(p_Dtsec->p_MemMap, ptv); - DUMP_VAR(p_Dtsec->p_MemMap, tmr_ctrl); - DUMP_VAR(p_Dtsec->p_MemMap, tmr_pevent); - DUMP_VAR(p_Dtsec->p_MemMap, tmr_pemask); - DUMP_VAR(p_Dtsec->p_MemMap, tctrl); - DUMP_VAR(p_Dtsec->p_MemMap, rctrl); - DUMP_VAR(p_Dtsec->p_MemMap, maccfg1); - DUMP_VAR(p_Dtsec->p_MemMap, maccfg2); - DUMP_VAR(p_Dtsec->p_MemMap, ipgifg); - DUMP_VAR(p_Dtsec->p_MemMap, hafdup); - DUMP_VAR(p_Dtsec->p_MemMap, maxfrm); - - DUMP_VAR(p_Dtsec->p_MemMap, macstnaddr1); - DUMP_VAR(p_Dtsec->p_MemMap, macstnaddr2); - - DUMP_SUBSTRUCT_ARRAY(i, 8) - { - DUMP_VAR(p_Dtsec->p_MemMap, macaddr[i].exact_match1); - DUMP_VAR(p_Dtsec->p_MemMap, macaddr[i].exact_match2); - } - DUMP_VAR(p_Dtsec->p_MemMap, car1); - DUMP_VAR(p_Dtsec->p_MemMap, car2); - } - - return E_OK; -} -#endif /* (defined(DEBUG_ERRORS) && ... */ - /*****************************************************************************/ /* dTSEC Init & Free API */ @@ -1447,9 +1401,6 @@ static void InitFmMacControllerDriver(t_FmMacControllerDriver *p_FmMacController p_FmMacControllerDriver->f_FM_MAC_MII_WritePhyReg = DTSEC_MII_WritePhyReg; p_FmMacControllerDriver->f_FM_MAC_MII_ReadPhyReg = DTSEC_MII_ReadPhyReg; -#if (defined(DEBUG_ERRORS) && (DEBUG_ERRORS > 0)) - p_FmMacControllerDriver->f_FM_MAC_DumpRegs = DtsecDumpRegs; -#endif /* (defined(DEBUG_ERRORS) && ... */ } diff --git a/drivers/net/ethernet/freescale/fman/Peripherals/FM/MAC/memac.c b/drivers/net/ethernet/freescale/fman/Peripherals/FM/MAC/memac.c index a2b8751..b5aacc9 100644 --- a/drivers/net/ethernet/freescale/fman/Peripherals/FM/MAC/memac.c +++ b/drivers/net/ethernet/freescale/fman/Peripherals/FM/MAC/memac.c @@ -812,63 +812,6 @@ static uint16_t MemacGetMaxFrameLength(t_Handle h_Memac) return fman_memac_get_max_frame_len(p_Memac->p_MemMap); } -/* ......................................................................... */ - -#if (defined(DEBUG_ERRORS) && (DEBUG_ERRORS > 0)) -static t_Error MemacDumpRegs(t_Handle h_Memac) -{ - t_Memac *p_Memac = (t_Memac *)h_Memac; - int i = 0; - - DECLARE_DUMP; - - if (p_Memac->p_MemMap) - { - DUMP_TITLE(p_Memac->p_MemMap, ("mEMAC %d: ", p_Memac->macId)); - DUMP_VAR(p_Memac->p_MemMap, command_config); - DUMP_VAR(p_Memac->p_MemMap, mac_addr0.mac_addr_l); - DUMP_VAR(p_Memac->p_MemMap, mac_addr0.mac_addr_u); - DUMP_VAR(p_Memac->p_MemMap, maxfrm); - DUMP_VAR(p_Memac->p_MemMap, hashtable_ctrl); - DUMP_VAR(p_Memac->p_MemMap, ievent); - DUMP_VAR(p_Memac->p_MemMap, tx_ipg_length); - DUMP_VAR(p_Memac->p_MemMap, imask); - - DUMP_SUBSTRUCT_ARRAY(i, 4) - { - DUMP_VAR(p_Memac->p_MemMap, pause_quanta[i]); - } - DUMP_SUBSTRUCT_ARRAY(i, 4) - { - DUMP_VAR(p_Memac->p_MemMap, pause_thresh[i]); - } - - DUMP_VAR(p_Memac->p_MemMap, rx_pause_status); - - DUMP_SUBSTRUCT_ARRAY(i, MEMAC_NUM_OF_PADDRS) - { - DUMP_VAR(p_Memac->p_MemMap, mac_addr[i].mac_addr_l); - DUMP_VAR(p_Memac->p_MemMap, mac_addr[i].mac_addr_u); - } - - DUMP_VAR(p_Memac->p_MemMap, lpwake_timer); - DUMP_VAR(p_Memac->p_MemMap, sleep_timer); - DUMP_VAR(p_Memac->p_MemMap, statn_config); - DUMP_VAR(p_Memac->p_MemMap, if_mode); - DUMP_VAR(p_Memac->p_MemMap, if_status); - DUMP_VAR(p_Memac->p_MemMap, hg_config); - DUMP_VAR(p_Memac->p_MemMap, hg_pause_quanta); - DUMP_VAR(p_Memac->p_MemMap, hg_pause_thresh); - DUMP_VAR(p_Memac->p_MemMap, hgrx_pause_status); - DUMP_VAR(p_Memac->p_MemMap, hg_fifos_status); - DUMP_VAR(p_Memac->p_MemMap, rhm); - DUMP_VAR(p_Memac->p_MemMap, thm); - } - - return E_OK; -} -#endif /* (defined(DEBUG_ERRORS) && ... */ - /*****************************************************************************/ /* mEMAC Init & Free API */ @@ -1086,10 +1029,6 @@ static void InitFmMacControllerDriver(t_FmMacControllerDriver *p_FmMacController p_FmMacControllerDriver->f_FM_MAC_MII_WritePhyReg = MEMAC_MII_WritePhyReg; p_FmMacControllerDriver->f_FM_MAC_MII_ReadPhyReg = MEMAC_MII_ReadPhyReg; - -#if (defined(DEBUG_ERRORS) && (DEBUG_ERRORS > 0)) - p_FmMacControllerDriver->f_FM_MAC_DumpRegs = MemacDumpRegs; -#endif /* (defined(DEBUG_ERRORS) && ... */ } diff --git a/drivers/net/ethernet/freescale/fman/Peripherals/FM/MAC/tgec.c b/drivers/net/ethernet/freescale/fman/Peripherals/FM/MAC/tgec.c index 8f39f25..bf12c5d 100644 --- a/drivers/net/ethernet/freescale/fman/Peripherals/FM/MAC/tgec.c +++ b/drivers/net/ethernet/freescale/fman/Peripherals/FM/MAC/tgec.c @@ -741,50 +741,6 @@ static t_Error TgecTxEccWorkaround(t_Tgec *p_Tgec) } #endif /* FM_TX_ECC_FRMS_ERRATA_10GMAC_A004 */ -/* ......................................................................... */ - -#if (defined(DEBUG_ERRORS) && (DEBUG_ERRORS > 0)) -static t_Error TgecDumpRegs(t_Handle h_Tgec) -{ - t_Tgec *p_Tgec = (t_Tgec *)h_Tgec; - - DECLARE_DUMP; - - if (p_Tgec->p_MemMap) - { - DUMP_TITLE(p_Tgec->p_MemMap, ("10G MAC %d: ", p_Tgec->macId)); - DUMP_VAR(p_Tgec->p_MemMap, tgec_id); - DUMP_VAR(p_Tgec->p_MemMap, command_config); - DUMP_VAR(p_Tgec->p_MemMap, mac_addr_0); - DUMP_VAR(p_Tgec->p_MemMap, mac_addr_1); - DUMP_VAR(p_Tgec->p_MemMap, maxfrm); - DUMP_VAR(p_Tgec->p_MemMap, pause_quant); - DUMP_VAR(p_Tgec->p_MemMap, rx_fifo_sections); - DUMP_VAR(p_Tgec->p_MemMap, tx_fifo_sections); - DUMP_VAR(p_Tgec->p_MemMap, rx_fifo_almost_f_e); - DUMP_VAR(p_Tgec->p_MemMap, tx_fifo_almost_f_e); - DUMP_VAR(p_Tgec->p_MemMap, hashtable_ctrl); - DUMP_VAR(p_Tgec->p_MemMap, mdio_cfg_status); - DUMP_VAR(p_Tgec->p_MemMap, mdio_command); - DUMP_VAR(p_Tgec->p_MemMap, mdio_data); - DUMP_VAR(p_Tgec->p_MemMap, mdio_regaddr); - DUMP_VAR(p_Tgec->p_MemMap, status); - DUMP_VAR(p_Tgec->p_MemMap, tx_ipg_len); - DUMP_VAR(p_Tgec->p_MemMap, mac_addr_2); - DUMP_VAR(p_Tgec->p_MemMap, mac_addr_3); - DUMP_VAR(p_Tgec->p_MemMap, rx_fifo_ptr_rd); - DUMP_VAR(p_Tgec->p_MemMap, rx_fifo_ptr_wr); - DUMP_VAR(p_Tgec->p_MemMap, tx_fifo_ptr_rd); - DUMP_VAR(p_Tgec->p_MemMap, tx_fifo_ptr_wr); - DUMP_VAR(p_Tgec->p_MemMap, imask); - DUMP_VAR(p_Tgec->p_MemMap, ievent); - } - - return E_OK; -} -#endif /* (defined(DEBUG_ERRORS) && ... */ - - /*****************************************************************************/ /* FM Init & Free API */ /*****************************************************************************/ @@ -960,10 +916,6 @@ static void InitFmMacControllerDriver(t_FmMacControllerDriver *p_FmMacController p_FmMacControllerDriver->f_FM_MAC_MII_WritePhyReg = TGEC_MII_WritePhyReg; p_FmMacControllerDriver->f_FM_MAC_MII_ReadPhyReg = TGEC_MII_ReadPhyReg; - -#if (defined(DEBUG_ERRORS) && (DEBUG_ERRORS > 0)) - p_FmMacControllerDriver->f_FM_MAC_DumpRegs = TgecDumpRegs; -#endif /* (defined(DEBUG_ERRORS) && ... */ } diff --git a/drivers/net/ethernet/freescale/fman/Peripherals/FM/Pcd/fm_kg.c b/drivers/net/ethernet/freescale/fman/Peripherals/FM/Pcd/fm_kg.c index dae5575..720da19 100644 --- a/drivers/net/ethernet/freescale/fman/Peripherals/FM/Pcd/fm_kg.c +++ b/drivers/net/ethernet/freescale/fman/Peripherals/FM/Pcd/fm_kg.c @@ -3240,105 +3240,3 @@ t_Error FM_PCD_KgSetDfltValue(t_Handle h_FmPcd, uint8_t valueId, uint32_t value) WRITE_UINT32(p_Regs->fmkg_gdv1r,value); return E_OK; } - -#if (defined(DEBUG_ERRORS) && (DEBUG_ERRORS > 0)) -t_Error FM_PCD_KgDumpRegs(t_Handle h_FmPcd) -{ - t_FmPcd *p_FmPcd = (t_FmPcd*)h_FmPcd; - int i = 0, j = 0; - uint8_t hardwarePortId = 0; - uint32_t tmpKgarReg, intFlags; - t_Error err = E_OK; - - DECLARE_DUMP; - - SANITY_CHECK_RETURN_ERROR(p_FmPcd, E_INVALID_HANDLE); - SANITY_CHECK_RETURN_ERROR(p_FmPcd->p_FmPcdKg, E_INVALID_HANDLE); - SANITY_CHECK_RETURN_ERROR(!p_FmPcd->p_FmPcdDriverParam, E_INVALID_STATE); - SANITY_CHECK_RETURN_ERROR(((p_FmPcd->guestId == NCSW_MASTER_ID) || - p_FmPcd->p_FmPcdKg->p_FmPcdKgRegs), E_INVALID_OPERATION); - - DUMP_SUBTITLE(("\n")); - DUMP_TITLE(p_FmPcd->p_FmPcdKg->p_FmPcdKgRegs, ("FmPcdKgRegs Regs")); - - DUMP_VAR(p_FmPcd->p_FmPcdKg->p_FmPcdKgRegs,fmkg_gcr); - DUMP_VAR(p_FmPcd->p_FmPcdKg->p_FmPcdKgRegs,fmkg_eer); - DUMP_VAR(p_FmPcd->p_FmPcdKg->p_FmPcdKgRegs,fmkg_eeer); - DUMP_VAR(p_FmPcd->p_FmPcdKg->p_FmPcdKgRegs,fmkg_seer); - DUMP_VAR(p_FmPcd->p_FmPcdKg->p_FmPcdKgRegs,fmkg_seeer); - DUMP_VAR(p_FmPcd->p_FmPcdKg->p_FmPcdKgRegs,fmkg_gsr); - DUMP_VAR(p_FmPcd->p_FmPcdKg->p_FmPcdKgRegs,fmkg_tpc); - DUMP_VAR(p_FmPcd->p_FmPcdKg->p_FmPcdKgRegs,fmkg_serc); - DUMP_VAR(p_FmPcd->p_FmPcdKg->p_FmPcdKgRegs,fmkg_fdor); - DUMP_VAR(p_FmPcd->p_FmPcdKg->p_FmPcdKgRegs,fmkg_gdv0r); - DUMP_VAR(p_FmPcd->p_FmPcdKg->p_FmPcdKgRegs,fmkg_gdv1r); - DUMP_VAR(p_FmPcd->p_FmPcdKg->p_FmPcdKgRegs,fmkg_feer); - DUMP_VAR(p_FmPcd->p_FmPcdKg->p_FmPcdKgRegs,fmkg_ar); - - DUMP_SUBTITLE(("\n")); - intFlags = KgHwLock(p_FmPcd->p_FmPcdKg); - for (j = 0;j<FM_PCD_KG_NUM_OF_SCHEMES;j++) - { - tmpKgarReg = FmPcdKgBuildReadSchemeActionReg((uint8_t)j); - if (WriteKgarWait(p_FmPcd, tmpKgarReg) != E_OK) - RETURN_ERROR(MAJOR, E_INVALID_STATE, NO_MSG); - - DUMP_TITLE(&p_FmPcd->p_FmPcdKg->p_IndirectAccessRegs->schemeRegs, ("FmPcdKgIndirectAccessSchemeRegs Scheme %d Regs", j)); - - DUMP_VAR(&p_FmPcd->p_FmPcdKg->p_IndirectAccessRegs->schemeRegs,kgse_mode); - DUMP_VAR(&p_FmPcd->p_FmPcdKg->p_IndirectAccessRegs->schemeRegs,kgse_ekfc); - DUMP_VAR(&p_FmPcd->p_FmPcdKg->p_IndirectAccessRegs->schemeRegs,kgse_ekdv); - DUMP_VAR(&p_FmPcd->p_FmPcdKg->p_IndirectAccessRegs->schemeRegs,kgse_bmch); - DUMP_VAR(&p_FmPcd->p_FmPcdKg->p_IndirectAccessRegs->schemeRegs,kgse_bmcl); - DUMP_VAR(&p_FmPcd->p_FmPcdKg->p_IndirectAccessRegs->schemeRegs,kgse_fqb); - DUMP_VAR(&p_FmPcd->p_FmPcdKg->p_IndirectAccessRegs->schemeRegs,kgse_hc); - DUMP_VAR(&p_FmPcd->p_FmPcdKg->p_IndirectAccessRegs->schemeRegs,kgse_ppc); - - DUMP_TITLE(&p_FmPcd->p_FmPcdKg->p_IndirectAccessRegs->schemeRegs.kgse_gec, ("kgse_gec")); - DUMP_SUBSTRUCT_ARRAY(i, FM_KG_NUM_OF_GENERIC_REGS) - { - DUMP_MEMORY(&p_FmPcd->p_FmPcdKg->p_IndirectAccessRegs->schemeRegs.kgse_gec[i], sizeof(uint32_t)); - } - - DUMP_VAR(&p_FmPcd->p_FmPcdKg->p_IndirectAccessRegs->schemeRegs,kgse_spc); - DUMP_VAR(&p_FmPcd->p_FmPcdKg->p_IndirectAccessRegs->schemeRegs,kgse_dv0); - DUMP_VAR(&p_FmPcd->p_FmPcdKg->p_IndirectAccessRegs->schemeRegs,kgse_dv1); - DUMP_VAR(&p_FmPcd->p_FmPcdKg->p_IndirectAccessRegs->schemeRegs,kgse_ccbs); - DUMP_VAR(&p_FmPcd->p_FmPcdKg->p_IndirectAccessRegs->schemeRegs,kgse_mv); - } - DUMP_SUBTITLE(("\n")); - - for (i=0;i<FM_MAX_NUM_OF_PORTS;i++) - { - SW_PORT_INDX_TO_HW_PORT_ID(hardwarePortId, i); - - tmpKgarReg = FmPcdKgBuildReadPortSchemeBindActionReg(hardwarePortId); - - err = WriteKgarWait(p_FmPcd, tmpKgarReg); - if (err) - RETURN_ERROR(MINOR, err, NO_MSG); - - DUMP_TITLE(&p_FmPcd->p_FmPcdKg->p_IndirectAccessRegs->portRegs, ("FmPcdKgIndirectAccessPortRegs PCD Port %d regs", hardwarePortId)); - - DUMP_VAR(&p_FmPcd->p_FmPcdKg->p_IndirectAccessRegs->portRegs, fmkg_pe_sp); - DUMP_VAR(&p_FmPcd->p_FmPcdKg->p_IndirectAccessRegs->portRegs, fmkg_pe_cpp); - } - - DUMP_SUBTITLE(("\n")); - for (j=0;j<FM_PCD_MAX_NUM_OF_CLS_PLANS/CLS_PLAN_NUM_PER_GRP;j++) - { - DUMP_TITLE(&p_FmPcd->p_FmPcdKg->p_IndirectAccessRegs->clsPlanRegs, ("FmPcdKgIndirectAccessClsPlanRegs Regs group %d", j)); - DUMP_TITLE(&p_FmPcd->p_FmPcdKg->p_IndirectAccessRegs->clsPlanRegs.kgcpe, ("kgcpe")); - - tmpKgarReg = ReadClsPlanBlockActionReg((uint8_t)j); - err = WriteKgarWait(p_FmPcd, tmpKgarReg); - if (err) - RETURN_ERROR(MINOR, err, NO_MSG); - DUMP_SUBSTRUCT_ARRAY(i, 8) - DUMP_MEMORY(&p_FmPcd->p_FmPcdKg->p_IndirectAccessRegs->clsPlanRegs.kgcpe[i], sizeof(uint32_t)); - } - KgHwUnlock(p_FmPcd->p_FmPcdKg, intFlags); - - return E_OK; -} -#endif /* (defined(DEBUG_ERRORS) && ... */ diff --git a/drivers/net/ethernet/freescale/fman/Peripherals/FM/Pcd/fm_pcd.c b/drivers/net/ethernet/freescale/fman/Peripherals/FM/Pcd/fm_pcd.c index 4adf9a1..1534331 100644 --- a/drivers/net/ethernet/freescale/fman/Peripherals/FM/Pcd/fm_pcd.c +++ b/drivers/net/ethernet/freescale/fman/Peripherals/FM/Pcd/fm_pcd.c @@ -1752,41 +1752,6 @@ uint32_t FM_PCD_GetCounter(t_Handle h_FmPcd, e_FmPcdCounters counter) return 0; } -#if (defined(DEBUG_ERRORS) && (DEBUG_ERRORS > 0)) -t_Error FM_PCD_DumpRegs(t_Handle h_FmPcd) -{ - t_FmPcd *p_FmPcd = (t_FmPcd*)h_FmPcd; - t_Error err = E_OK; - - DECLARE_DUMP; - - SANITY_CHECK_RETURN_ERROR(h_FmPcd, E_INVALID_HANDLE); - SANITY_CHECK_RETURN_ERROR(!p_FmPcd->p_FmPcdDriverParam, E_INVALID_STATE); - - if (p_FmPcd->p_FmPcdKg) - err |= FM_PCD_KgDumpRegs(h_FmPcd); - if (p_FmPcd->p_FmPcdPlcr) - err |= FM_PCD_PlcrDumpRegs(h_FmPcd); - if (p_FmPcd->p_FmPcdPrs) - err |= FM_PCD_PrsDumpRegs(h_FmPcd); - - return err; -} - -t_Error FM_PCD_HcDumpRegs(t_Handle h_FmPcd) -{ - t_FmPcd *p_FmPcd = (t_FmPcd*)h_FmPcd; - - DECLARE_DUMP; - - SANITY_CHECK_RETURN_ERROR(h_FmPcd, E_INVALID_HANDLE); - SANITY_CHECK_RETURN_ERROR(!p_FmPcd->p_FmPcdDriverParam, E_INVALID_STATE); - SANITY_CHECK_RETURN_ERROR(p_FmPcd->h_Hc, E_INVALID_STATE); - - return FmHcDumpRegs(p_FmPcd->h_Hc); -} -#endif /* (defined(DEBUG_ERRORS) && ... */ - t_Error FM_PCD_SetException(t_Handle h_FmPcd, e_FmPcdExceptions exception, bool enable) { t_FmPcd *p_FmPcd = (t_FmPcd*)h_FmPcd; diff --git a/drivers/net/ethernet/freescale/fman/Peripherals/FM/Pcd/fm_plcr.c b/drivers/net/ethernet/freescale/fman/Peripherals/FM/Pcd/fm_plcr.c index a28b363..f0f1676 100644 --- a/drivers/net/ethernet/freescale/fman/Peripherals/FM/Pcd/fm_plcr.c +++ b/drivers/net/ethernet/freescale/fman/Peripherals/FM/Pcd/fm_plcr.c @@ -1532,52 +1532,6 @@ t_Error FM_PCD_SetPlcrStatistics(t_Handle h_FmPcd, bool enable) return E_OK; } -/* ... */ -#if (defined(DEBUG_ERRORS) && (DEBUG_ERRORS > 0)) -t_Error FM_PCD_PlcrDumpRegs(t_Handle h_FmPcd) -{ - t_FmPcd *p_FmPcd = (t_FmPcd*)h_FmPcd; - int i = 0; - - DECLARE_DUMP; - - SANITY_CHECK_RETURN_ERROR(p_FmPcd, E_INVALID_HANDLE); - SANITY_CHECK_RETURN_ERROR(p_FmPcd->p_FmPcdPlcr, E_INVALID_HANDLE); - SANITY_CHECK_RETURN_ERROR(!p_FmPcd->p_FmPcdDriverParam, E_INVALID_STATE); - SANITY_CHECK_RETURN_ERROR(((p_FmPcd->guestId == NCSW_MASTER_ID) || - p_FmPcd->p_FmPcdPlcr->p_FmPcdPlcrRegs), E_INVALID_OPERATION); - - DUMP_SUBTITLE(("\n")); - DUMP_TITLE(p_FmPcd->p_FmPcdPlcr->p_FmPcdPlcrRegs, ("FM-PCD policer regs")); - - DUMP_VAR(p_FmPcd->p_FmPcdPlcr->p_FmPcdPlcrRegs,fmpl_gcr); - DUMP_VAR(p_FmPcd->p_FmPcdPlcr->p_FmPcdPlcrRegs,fmpl_gsr); - DUMP_VAR(p_FmPcd->p_FmPcdPlcr->p_FmPcdPlcrRegs,fmpl_evr); - DUMP_VAR(p_FmPcd->p_FmPcdPlcr->p_FmPcdPlcrRegs,fmpl_ier); - DUMP_VAR(p_FmPcd->p_FmPcdPlcr->p_FmPcdPlcrRegs,fmpl_ifr); - DUMP_VAR(p_FmPcd->p_FmPcdPlcr->p_FmPcdPlcrRegs,fmpl_eevr); - DUMP_VAR(p_FmPcd->p_FmPcdPlcr->p_FmPcdPlcrRegs,fmpl_eier); - DUMP_VAR(p_FmPcd->p_FmPcdPlcr->p_FmPcdPlcrRegs,fmpl_eifr); - DUMP_VAR(p_FmPcd->p_FmPcdPlcr->p_FmPcdPlcrRegs,fmpl_rpcnt); - DUMP_VAR(p_FmPcd->p_FmPcdPlcr->p_FmPcdPlcrRegs,fmpl_ypcnt); - DUMP_VAR(p_FmPcd->p_FmPcdPlcr->p_FmPcdPlcrRegs,fmpl_rrpcnt); - DUMP_VAR(p_FmPcd->p_FmPcdPlcr->p_FmPcdPlcrRegs,fmpl_rypcnt); - DUMP_VAR(p_FmPcd->p_FmPcdPlcr->p_FmPcdPlcrRegs,fmpl_tpcnt); - DUMP_VAR(p_FmPcd->p_FmPcdPlcr->p_FmPcdPlcrRegs,fmpl_flmcnt); - DUMP_VAR(p_FmPcd->p_FmPcdPlcr->p_FmPcdPlcrRegs,fmpl_serc); - DUMP_VAR(p_FmPcd->p_FmPcdPlcr->p_FmPcdPlcrRegs,fmpl_upcr); - DUMP_VAR(p_FmPcd->p_FmPcdPlcr->p_FmPcdPlcrRegs,fmpl_dpmr); - - DUMP_TITLE(&p_FmPcd->p_FmPcdPlcr->p_FmPcdPlcrRegs->fmpl_pmr, ("fmpl_pmr")); - DUMP_SUBSTRUCT_ARRAY(i, 63) - { - DUMP_MEMORY(&p_FmPcd->p_FmPcdPlcr->p_FmPcdPlcrRegs->fmpl_pmr[i], sizeof(uint32_t)); - } - - return E_OK; -} -#endif /* (defined(DEBUG_ERRORS) && ... */ - t_Handle FM_PCD_PlcrProfileSet(t_Handle h_FmPcd, t_FmPcdPlcrProfileParams *p_ProfileParams) { @@ -1890,54 +1844,3 @@ t_Error FM_PCD_PlcrProfileSetCounter(t_Handle h_Profile, e_FmPcdPlcrProfileCount return E_OK; } - -#if (defined(DEBUG_ERRORS) && (DEBUG_ERRORS > 0)) -t_Error FM_PCD_PlcrProfileDumpRegs(t_Handle h_Profile) -{ - t_FmPcdPlcrProfile *p_Profile = (t_FmPcdPlcrProfile*)h_Profile; - t_FmPcd *p_FmPcd; - t_FmPcdPlcrProfileRegs *p_ProfilesRegs; - uint16_t profileIndx; - uint32_t tmpReg, intFlags; - - DECLARE_DUMP; - - SANITY_CHECK_RETURN_ERROR(p_Profile, E_INVALID_HANDLE); - p_FmPcd = p_Profile->h_FmPcd; - SANITY_CHECK_RETURN_ERROR(p_FmPcd, E_INVALID_HANDLE); - SANITY_CHECK_RETURN_ERROR(p_FmPcd->p_FmPcdPlcr, E_INVALID_HANDLE); - - profileIndx = p_Profile->absoluteProfileId; - - DUMP_SUBTITLE(("\n")); - DUMP_TITLE(p_FmPcd->p_FmPcdPlcr->p_FmPcdPlcrRegs, ("FM-PCD policer-profile regs")); - - p_ProfilesRegs = &p_FmPcd->p_FmPcdPlcr->p_FmPcdPlcrRegs->profileRegs; - - tmpReg = FmPcdPlcrBuildReadPlcrActionReg((uint16_t)profileIndx); - intFlags = PlcrHwLock(p_FmPcd->p_FmPcdPlcr); - WritePar(p_FmPcd, tmpReg); - - DUMP_TITLE(p_ProfilesRegs, ("Profile %d regs", profileIndx)); - - DUMP_VAR(p_ProfilesRegs, fmpl_pemode); - DUMP_VAR(p_ProfilesRegs, fmpl_pegnia); - DUMP_VAR(p_ProfilesRegs, fmpl_peynia); - DUMP_VAR(p_ProfilesRegs, fmpl_pernia); - DUMP_VAR(p_ProfilesRegs, fmpl_pecir); - DUMP_VAR(p_ProfilesRegs, fmpl_pecbs); - DUMP_VAR(p_ProfilesRegs, fmpl_pepepir_eir); - DUMP_VAR(p_ProfilesRegs, fmpl_pepbs_ebs); - DUMP_VAR(p_ProfilesRegs, fmpl_pelts); - DUMP_VAR(p_ProfilesRegs, fmpl_pects); - DUMP_VAR(p_ProfilesRegs, fmpl_pepts_ets); - DUMP_VAR(p_ProfilesRegs, fmpl_pegpc); - DUMP_VAR(p_ProfilesRegs, fmpl_peypc); - DUMP_VAR(p_ProfilesRegs, fmpl_perpc); - DUMP_VAR(p_ProfilesRegs, fmpl_perypc); - DUMP_VAR(p_ProfilesRegs, fmpl_perrpc); - PlcrHwUnlock(p_FmPcd->p_FmPcdPlcr, intFlags); - - return E_OK; -} -#endif /* (defined(DEBUG_ERRORS) && ... */ diff --git a/drivers/net/ethernet/freescale/fman/Peripherals/FM/Pcd/fm_prs.c b/drivers/net/ethernet/freescale/fman/Peripherals/FM/Pcd/fm_prs.c index e6ac6df..da2fccf 100644 --- a/drivers/net/ethernet/freescale/fman/Peripherals/FM/Pcd/fm_prs.c +++ b/drivers/net/ethernet/freescale/fman/Peripherals/FM/Pcd/fm_prs.c @@ -418,49 +418,3 @@ t_Error FM_PCD_ConfigPrsMaxCycleLimit(t_Handle h_FmPcd,uint16_t value) return E_OK; } - -#if (defined(DEBUG_ERRORS) && (DEBUG_ERRORS > 0)) -t_Error FM_PCD_PrsDumpRegs(t_Handle h_FmPcd) -{ - t_FmPcd *p_FmPcd = (t_FmPcd*)h_FmPcd; - - DECLARE_DUMP; - - SANITY_CHECK_RETURN_ERROR(p_FmPcd, E_INVALID_HANDLE); - SANITY_CHECK_RETURN_ERROR(p_FmPcd->p_FmPcdPrs, E_INVALID_HANDLE); - SANITY_CHECK_RETURN_ERROR(!p_FmPcd->p_FmPcdDriverParam, E_INVALID_STATE); - SANITY_CHECK_RETURN_ERROR(((p_FmPcd->guestId == NCSW_MASTER_ID) || - p_FmPcd->p_FmPcdPrs->p_FmPcdPrsRegs), E_INVALID_OPERATION); - - DUMP_SUBTITLE(("\n")); - DUMP_TITLE(p_FmPcd->p_FmPcdPrs->p_FmPcdPrsRegs, ("FM-PCD parser regs")); - - DUMP_VAR(p_FmPcd->p_FmPcdPrs->p_FmPcdPrsRegs,fmpr_rpclim); - DUMP_VAR(p_FmPcd->p_FmPcdPrs->p_FmPcdPrsRegs,fmpr_rpimac); - DUMP_VAR(p_FmPcd->p_FmPcdPrs->p_FmPcdPrsRegs,pmeec); - DUMP_VAR(p_FmPcd->p_FmPcdPrs->p_FmPcdPrsRegs,fmpr_pevr); - DUMP_VAR(p_FmPcd->p_FmPcdPrs->p_FmPcdPrsRegs,fmpr_pever); - DUMP_VAR(p_FmPcd->p_FmPcdPrs->p_FmPcdPrsRegs,fmpr_perr); - DUMP_VAR(p_FmPcd->p_FmPcdPrs->p_FmPcdPrsRegs,fmpr_perer); - DUMP_VAR(p_FmPcd->p_FmPcdPrs->p_FmPcdPrsRegs,fmpr_ppsc); - DUMP_VAR(p_FmPcd->p_FmPcdPrs->p_FmPcdPrsRegs,fmpr_pds); - DUMP_VAR(p_FmPcd->p_FmPcdPrs->p_FmPcdPrsRegs,fmpr_l2rrs); - DUMP_VAR(p_FmPcd->p_FmPcdPrs->p_FmPcdPrsRegs,fmpr_l3rrs); - DUMP_VAR(p_FmPcd->p_FmPcdPrs->p_FmPcdPrsRegs,fmpr_l4rrs); - DUMP_VAR(p_FmPcd->p_FmPcdPrs->p_FmPcdPrsRegs,fmpr_srrs); - DUMP_VAR(p_FmPcd->p_FmPcdPrs->p_FmPcdPrsRegs,fmpr_l2rres); - DUMP_VAR(p_FmPcd->p_FmPcdPrs->p_FmPcdPrsRegs,fmpr_l3rres); - DUMP_VAR(p_FmPcd->p_FmPcdPrs->p_FmPcdPrsRegs,fmpr_l4rres); - DUMP_VAR(p_FmPcd->p_FmPcdPrs->p_FmPcdPrsRegs,fmpr_srres); - DUMP_VAR(p_FmPcd->p_FmPcdPrs->p_FmPcdPrsRegs,fmpr_spcs); - DUMP_VAR(p_FmPcd->p_FmPcdPrs->p_FmPcdPrsRegs,fmpr_spscs); - DUMP_VAR(p_FmPcd->p_FmPcdPrs->p_FmPcdPrsRegs,fmpr_hxscs); - DUMP_VAR(p_FmPcd->p_FmPcdPrs->p_FmPcdPrsRegs,fmpr_mrcs); - DUMP_VAR(p_FmPcd->p_FmPcdPrs->p_FmPcdPrsRegs,fmpr_mwcs); - DUMP_VAR(p_FmPcd->p_FmPcdPrs->p_FmPcdPrsRegs,fmpr_mrscs); - DUMP_VAR(p_FmPcd->p_FmPcdPrs->p_FmPcdPrsRegs,fmpr_mwscs); - DUMP_VAR(p_FmPcd->p_FmPcdPrs->p_FmPcdPrsRegs,fmpr_fcscs); - - return E_OK; -} -#endif /* (defined(DEBUG_ERRORS) && ... */ diff --git a/drivers/net/ethernet/freescale/fman/Peripherals/FM/Port/fm_port.c b/drivers/net/ethernet/freescale/fman/Peripherals/FM/Port/fm_port.c index 56f9f80..379406e 100644 --- a/drivers/net/ethernet/freescale/fman/Peripherals/FM/Port/fm_port.c +++ b/drivers/net/ethernet/freescale/fman/Peripherals/FM/Port/fm_port.c @@ -5496,271 +5496,6 @@ t_Error FM_PORT_PcdPrsModifyStartOffset(t_Handle h_FmPort, return E_OK; } -#if (defined(DEBUG_ERRORS) && (DEBUG_ERRORS > 0)) -t_Error FM_PORT_DumpRegs(t_Handle h_FmPort) -{ - t_FmPort *p_FmPort = (t_FmPort*)h_FmPort; - t_Error err = E_OK; - char arr[20]; - uint8_t flag; - int i=0; - - DECLARE_DUMP; - - SANITY_CHECK_RETURN_ERROR(h_FmPort, E_INVALID_HANDLE); - SANITY_CHECK_RETURN_ERROR(!p_FmPort->p_FmPortDriverParam, E_INVALID_STATE); - SANITY_CHECK_RETURN_ERROR(p_FmPort->p_FmPortQmiRegs, E_INVALID_HANDLE); - SANITY_CHECK_RETURN_ERROR(p_FmPort->p_FmPortBmiRegs, E_INVALID_HANDLE); - - memset(arr, 0, sizeof(arr)); - switch (p_FmPort->portType) - { - case (e_FM_PORT_TYPE_OH_OFFLINE_PARSING): - strcpy(arr, "OFFLINE-PARSING"); - flag = 0; - break; - case (e_FM_PORT_TYPE_OH_HOST_COMMAND): - strcpy(arr, "HOST-COMMAND"); - flag = 0; - break; - case (e_FM_PORT_TYPE_RX): - strcpy(arr, "RX"); - flag = 1; - break; - case (e_FM_PORT_TYPE_RX_10G): - strcpy(arr, "RX-10G"); - flag = 1; - break; - case (e_FM_PORT_TYPE_TX): - strcpy(arr, "TX"); - flag = 2; - break; - case (e_FM_PORT_TYPE_TX_10G): - strcpy(arr, "TX-10G"); - flag = 2; - break; - default: - return ERROR_CODE(E_INVALID_VALUE); - } - - DUMP_TITLE(NULL, - ("FMan-Port (%s #%d) registers:", - arr, p_FmPort->portId)); - - err = FmDumpPortRegs(p_FmPort->h_Fm, p_FmPort->hardwarePortId); - if (err) - RETURN_ERROR(MAJOR, err, NO_MSG); - - DUMP_TITLE(p_FmPort->p_FmPortBmiRegs, ("Bmi Port Regs")); - - switch (flag) - { - case (0): - DUMP_SUBTITLE(("\n")); - DUMP_VAR(&p_FmPort->p_FmPortBmiRegs->ohPortBmiRegs,fmbm_ocfg); - DUMP_VAR(&p_FmPort->p_FmPortBmiRegs->ohPortBmiRegs,fmbm_ost); - DUMP_VAR(&p_FmPort->p_FmPortBmiRegs->ohPortBmiRegs,fmbm_oda); - DUMP_VAR(&p_FmPort->p_FmPortBmiRegs->ohPortBmiRegs,fmbm_oicp); - DUMP_VAR(&p_FmPort->p_FmPortBmiRegs->ohPortBmiRegs,fmbm_ofdne); - DUMP_VAR(&p_FmPort->p_FmPortBmiRegs->ohPortBmiRegs,fmbm_ofne); - DUMP_VAR(&p_FmPort->p_FmPortBmiRegs->ohPortBmiRegs,fmbm_ofca); - DUMP_VAR(&p_FmPort->p_FmPortBmiRegs->ohPortBmiRegs,fmbm_ofpne); - DUMP_VAR(&p_FmPort->p_FmPortBmiRegs->ohPortBmiRegs,fmbm_opso); - DUMP_VAR(&p_FmPort->p_FmPortBmiRegs->ohPortBmiRegs,fmbm_opp); - DUMP_VAR(&p_FmPort->p_FmPortBmiRegs->ohPortBmiRegs,fmbm_occb); - DUMP_VAR(&p_FmPort->p_FmPortBmiRegs->ohPortBmiRegs,fmbm_oim); - DUMP_VAR(&p_FmPort->p_FmPortBmiRegs->ohPortBmiRegs,fmbm_ofp); - DUMP_VAR(&p_FmPort->p_FmPortBmiRegs->ohPortBmiRegs,fmbm_ofed); - - DUMP_TITLE(&(p_FmPort->p_FmPortBmiRegs->ohPortBmiRegs.fmbm_oprai), ("fmbm_oprai")); - DUMP_SUBSTRUCT_ARRAY(i, FM_PORT_PRS_RESULT_NUM_OF_WORDS) - { - DUMP_MEMORY(&(p_FmPort->p_FmPortBmiRegs->ohPortBmiRegs.fmbm_oprai[i]), sizeof(uint32_t)); - } - DUMP_SUBTITLE(("\n")); - DUMP_VAR(&p_FmPort->p_FmPortBmiRegs->ohPortBmiRegs,fmbm_ofqid ); - DUMP_VAR(&p_FmPort->p_FmPortBmiRegs->ohPortBmiRegs,fmbm_oefqid); - DUMP_VAR(&p_FmPort->p_FmPortBmiRegs->ohPortBmiRegs,fmbm_ofsdm ); - DUMP_VAR(&p_FmPort->p_FmPortBmiRegs->ohPortBmiRegs,fmbm_ofsem ); - DUMP_VAR(&p_FmPort->p_FmPortBmiRegs->ohPortBmiRegs,fmbm_ofene ); - DUMP_VAR(&p_FmPort->p_FmPortBmiRegs->ohPortBmiRegs,fmbm_orlmts); - DUMP_VAR(&p_FmPort->p_FmPortBmiRegs->ohPortBmiRegs,fmbm_orlmt); - DUMP_VAR(&p_FmPort->p_FmPortBmiRegs->ohPortBmiRegs,fmbm_ocmne); - { - #ifndef FM_NO_OP_OBSERVED_POOLS - if (p_FmPort->fmRevInfo.majorRev == 4) - { - DUMP_TITLE(&p_FmPort->p_FmPortBmiRegs->ohPortBmiRegs.fmbm_oebmpi, ("fmbm_oebmpi")); - - DUMP_SUBSTRUCT_ARRAY(i, FM_PORT_MAX_NUM_OF_OBSERVED_EXT_POOLS) - { - DUMP_MEMORY(&p_FmPort->p_FmPortBmiRegs->ohPortBmiRegs.fmbm_oebmpi[i], sizeof(uint32_t)); - } - DUMP_VAR(&p_FmPort->p_FmPortBmiRegs->ohPortBmiRegs,fmbm_ocgm); - } - #endif /* !FM_NO_OP_OBSERVED_POOLS */ - } - - DUMP_VAR(&p_FmPort->p_FmPortBmiRegs->ohPortBmiRegs,fmbm_ostc); - DUMP_VAR(&p_FmPort->p_FmPortBmiRegs->ohPortBmiRegs,fmbm_ofrc ); - DUMP_VAR(&p_FmPort->p_FmPortBmiRegs->ohPortBmiRegs,fmbm_ofdc ); - DUMP_VAR(&p_FmPort->p_FmPortBmiRegs->ohPortBmiRegs,fmbm_ofledc); - DUMP_VAR(&p_FmPort->p_FmPortBmiRegs->ohPortBmiRegs,fmbm_ofufdc); - DUMP_VAR(&p_FmPort->p_FmPortBmiRegs->ohPortBmiRegs,fmbm_offc); - DUMP_VAR(&p_FmPort->p_FmPortBmiRegs->ohPortBmiRegs,fmbm_ofwdc); - DUMP_VAR(&p_FmPort->p_FmPortBmiRegs->ohPortBmiRegs,fmbm_ofldec); - DUMP_VAR(&p_FmPort->p_FmPortBmiRegs->ohPortBmiRegs,fmbm_obdc); - DUMP_VAR(&p_FmPort->p_FmPortBmiRegs->ohPortBmiRegs,fmbm_opc); - DUMP_VAR(&p_FmPort->p_FmPortBmiRegs->ohPortBmiRegs,fmbm_opcp); - DUMP_VAR(&p_FmPort->p_FmPortBmiRegs->ohPortBmiRegs,fmbm_occn); - DUMP_VAR(&p_FmPort->p_FmPortBmiRegs->ohPortBmiRegs,fmbm_otuc); - DUMP_VAR(&p_FmPort->p_FmPortBmiRegs->ohPortBmiRegs,fmbm_oduc); - DUMP_VAR(&p_FmPort->p_FmPortBmiRegs->ohPortBmiRegs,fmbm_ofuc); - DUMP_TITLE(&(p_FmPort->p_FmPortBmiRegs->ohPortBmiRegs.fmbm_odcfg), ("fmbm_odcfg")); - DUMP_SUBSTRUCT_ARRAY(i, 3) - { - DUMP_MEMORY(&(p_FmPort->p_FmPortBmiRegs->ohPortBmiRegs.fmbm_odcfg[i]), sizeof(uint32_t)); - } - DUMP_SUBTITLE(("\n")); - DUMP_VAR(&p_FmPort->p_FmPortBmiRegs->ohPortBmiRegs,fmbm_ogpr); - break; - - case (1): - DUMP_SUBTITLE(("\n")); - DUMP_VAR(&p_FmPort->p_FmPortBmiRegs->rxPortBmiRegs,fmbm_rcfg); - DUMP_VAR(&p_FmPort->p_FmPortBmiRegs->rxPortBmiRegs,fmbm_rst); - DUMP_VAR(&p_FmPort->p_FmPortBmiRegs->rxPortBmiRegs,fmbm_rda); - DUMP_VAR(&p_FmPort->p_FmPortBmiRegs->rxPortBmiRegs,fmbm_rfp); - DUMP_VAR(&p_FmPort->p_FmPortBmiRegs->rxPortBmiRegs,fmbm_reth); - DUMP_VAR(&p_FmPort->p_FmPortBmiRegs->rxPortBmiRegs,fmbm_rfed); - DUMP_VAR(&p_FmPort->p_FmPortBmiRegs->rxPortBmiRegs,fmbm_ricp); - DUMP_VAR(&p_FmPort->p_FmPortBmiRegs->rxPortBmiRegs,fmbm_rebm); - DUMP_VAR(&p_FmPort->p_FmPortBmiRegs->rxPortBmiRegs,fmbm_rfne); - DUMP_VAR(&p_FmPort->p_FmPortBmiRegs->rxPortBmiRegs,fmbm_rfca); - DUMP_VAR(&p_FmPort->p_FmPortBmiRegs->rxPortBmiRegs,fmbm_rfpne); - DUMP_VAR(&p_FmPort->p_FmPortBmiRegs->rxPortBmiRegs,fmbm_rpso); - DUMP_VAR(&p_FmPort->p_FmPortBmiRegs->rxPortBmiRegs,fmbm_rpp); - - DUMP_TITLE(&(p_FmPort->p_FmPortBmiRegs->rxPortBmiRegs.fmbm_rprai), ("fmbm_rprai")); - DUMP_SUBSTRUCT_ARRAY(i, FM_PORT_PRS_RESULT_NUM_OF_WORDS) - { - DUMP_MEMORY(&(p_FmPort->p_FmPortBmiRegs->rxPortBmiRegs.fmbm_rprai[i]), sizeof(uint32_t)); - } - DUMP_SUBTITLE(("\n")); - DUMP_VAR(&p_FmPort->p_FmPortBmiRegs->rxPortBmiRegs,fmbm_rfqid); - DUMP_VAR(&p_FmPort->p_FmPortBmiRegs->rxPortBmiRegs,fmbm_refqid); - DUMP_VAR(&p_FmPort->p_FmPortBmiRegs->rxPortBmiRegs,fmbm_rfsdm); - DUMP_VAR(&p_FmPort->p_FmPortBmiRegs->rxPortBmiRegs,fmbm_rfsem); - DUMP_VAR(&p_FmPort->p_FmPortBmiRegs->rxPortBmiRegs,fmbm_rfene); - DUMP_VAR(&p_FmPort->p_FmPortBmiRegs->rxPortBmiRegs,fmbm_rcmne); - DUMP_TITLE(&p_FmPort->p_FmPortBmiRegs->rxPortBmiRegs.fmbm_ebmpi, ("fmbm_ebmpi")); - DUMP_SUBSTRUCT_ARRAY(i, FM_PORT_MAX_NUM_OF_EXT_POOLS) - { - DUMP_MEMORY(&p_FmPort->p_FmPortBmiRegs->rxPortBmiRegs.fmbm_ebmpi[i], sizeof(uint32_t)); - } - DUMP_TITLE(&p_FmPort->p_FmPortBmiRegs->rxPortBmiRegs.fmbm_acnt, ("fmbm_acnt")); - DUMP_SUBSTRUCT_ARRAY(i, FM_PORT_MAX_NUM_OF_EXT_POOLS) - { - DUMP_MEMORY(&p_FmPort->p_FmPortBmiRegs->rxPortBmiRegs.fmbm_acnt[i], sizeof(uint32_t)); - } - DUMP_TITLE(&p_FmPort->p_FmPortBmiRegs->rxPortBmiRegs.fmbm_rcgm, ("fmbm_rcgm")); - DUMP_SUBSTRUCT_ARRAY(i, FM_PORT_NUM_OF_CONGESTION_GRPS/32) - { - DUMP_MEMORY(&p_FmPort->p_FmPortBmiRegs->rxPortBmiRegs.fmbm_rcgm[i], sizeof(uint32_t)); - } - DUMP_SUBTITLE(("\n")); - DUMP_VAR(&p_FmPort->p_FmPortBmiRegs->rxPortBmiRegs,fmbm_rmpd); - DUMP_VAR(&p_FmPort->p_FmPortBmiRegs->rxPortBmiRegs,fmbm_rstc); - DUMP_VAR(&p_FmPort->p_FmPortBmiRegs->rxPortBmiRegs,fmbm_rfrc); - DUMP_VAR(&p_FmPort->p_FmPortBmiRegs->rxPortBmiRegs,fmbm_rfbc); - DUMP_VAR(&p_FmPort->p_FmPortBmiRegs->rxPortBmiRegs,fmbm_rlfc); - DUMP_VAR(&p_FmPort->p_FmPortBmiRegs->rxPortBmiRegs,fmbm_rffc); - DUMP_VAR(&p_FmPort->p_FmPortBmiRegs->rxPortBmiRegs,fmbm_rfcd); - DUMP_VAR(&p_FmPort->p_FmPortBmiRegs->rxPortBmiRegs,fmbm_rfldec); - DUMP_VAR(&p_FmPort->p_FmPortBmiRegs->rxPortBmiRegs,fmbm_rodc); - DUMP_VAR(&p_FmPort->p_FmPortBmiRegs->rxPortBmiRegs,fmbm_rpc); - DUMP_VAR(&p_FmPort->p_FmPortBmiRegs->rxPortBmiRegs,fmbm_rpcp); - DUMP_VAR(&p_FmPort->p_FmPortBmiRegs->rxPortBmiRegs,fmbm_rccn); - DUMP_VAR(&p_FmPort->p_FmPortBmiRegs->rxPortBmiRegs,fmbm_rtuc); - DUMP_VAR(&p_FmPort->p_FmPortBmiRegs->rxPortBmiRegs,fmbm_rrquc); - DUMP_VAR(&p_FmPort->p_FmPortBmiRegs->rxPortBmiRegs,fmbm_rduc); - DUMP_VAR(&p_FmPort->p_FmPortBmiRegs->rxPortBmiRegs,fmbm_rfuc); - DUMP_VAR(&p_FmPort->p_FmPortBmiRegs->rxPortBmiRegs,fmbm_rpac); - DUMP_TITLE(&(p_FmPort->p_FmPortBmiRegs->rxPortBmiRegs.fmbm_rdcfg), ("fmbm_rdcfg")); - DUMP_SUBSTRUCT_ARRAY(i, 3) - { - DUMP_MEMORY(&(p_FmPort->p_FmPortBmiRegs->rxPortBmiRegs.fmbm_rdcfg[i]), sizeof(uint32_t)); - } - DUMP_SUBTITLE(("\n")); - DUMP_VAR(&p_FmPort->p_FmPortBmiRegs->rxPortBmiRegs,fmbm_rgpr); - break; - - case (2): - DUMP_SUBTITLE(("\n")); - DUMP_VAR(&p_FmPort->p_FmPortBmiRegs->txPortBmiRegs,fmbm_tcfg); - DUMP_VAR(&p_FmPort->p_FmPortBmiRegs->txPortBmiRegs,fmbm_tst); - DUMP_VAR(&p_FmPort->p_FmPortBmiRegs->txPortBmiRegs,fmbm_tda); - DUMP_VAR(&p_FmPort->p_FmPortBmiRegs->txPortBmiRegs,fmbm_tfp); - DUMP_VAR(&p_FmPort->p_FmPortBmiRegs->txPortBmiRegs,fmbm_tfed); - DUMP_VAR(&p_FmPort->p_FmPortBmiRegs->txPortBmiRegs,fmbm_ticp); - DUMP_VAR(&p_FmPort->p_FmPortBmiRegs->txPortBmiRegs,fmbm_tfdne); - DUMP_VAR(&p_FmPort->p_FmPortBmiRegs->txPortBmiRegs,fmbm_tfca); - DUMP_VAR(&p_FmPort->p_FmPortBmiRegs->txPortBmiRegs,fmbm_tcfqid); - DUMP_VAR(&p_FmPort->p_FmPortBmiRegs->txPortBmiRegs,fmbm_tfeqid); - DUMP_VAR(&p_FmPort->p_FmPortBmiRegs->txPortBmiRegs,fmbm_tfene); - #if (DPAA_VERSION >= 11) - DUMP_VAR(&p_FmPort->p_FmPortBmiRegs->txPortBmiRegs,fmbm_tfne); - DUMP_VAR(&p_FmPort->p_FmPortBmiRegs->txPortBmiRegs,fmbm_tcmne); - #endif /* (DPAA_VERSION >= 11) */ - DUMP_VAR(&p_FmPort->p_FmPortBmiRegs->txPortBmiRegs,fmbm_trlmts); - DUMP_VAR(&p_FmPort->p_FmPortBmiRegs->txPortBmiRegs,fmbm_trlmt); - DUMP_VAR(&p_FmPort->p_FmPortBmiRegs->txPortBmiRegs,fmbm_tstc); - DUMP_VAR(&p_FmPort->p_FmPortBmiRegs->txPortBmiRegs,fmbm_tfrc); - DUMP_VAR(&p_FmPort->p_FmPortBmiRegs->txPortBmiRegs,fmbm_tfdc); - DUMP_VAR(&p_FmPort->p_FmPortBmiRegs->txPortBmiRegs,fmbm_tfledc); - DUMP_VAR(&p_FmPort->p_FmPortBmiRegs->txPortBmiRegs,fmbm_tfufdc); - DUMP_VAR(&p_FmPort->p_FmPortBmiRegs->txPortBmiRegs,fmbm_tbdc); - DUMP_VAR(&p_FmPort->p_FmPortBmiRegs->txPortBmiRegs,fmbm_tpc); - DUMP_VAR(&p_FmPort->p_FmPortBmiRegs->txPortBmiRegs,fmbm_tpcp); - DUMP_VAR(&p_FmPort->p_FmPortBmiRegs->txPortBmiRegs,fmbm_tccn); - DUMP_VAR(&p_FmPort->p_FmPortBmiRegs->txPortBmiRegs,fmbm_ttuc); - DUMP_VAR(&p_FmPort->p_FmPortBmiRegs->txPortBmiRegs,fmbm_ttcquc); - DUMP_VAR(&p_FmPort->p_FmPortBmiRegs->txPortBmiRegs,fmbm_tduc); - DUMP_VAR(&p_FmPort->p_FmPortBmiRegs->txPortBmiRegs,fmbm_tfuc); - DUMP_TITLE(&(p_FmPort->p_FmPortBmiRegs->txPortBmiRegs.fmbm_tdcfg), ("fmbm_tdcfg")); - DUMP_SUBSTRUCT_ARRAY(i, 3) - { - DUMP_MEMORY(&(p_FmPort->p_FmPortBmiRegs->txPortBmiRegs.fmbm_tdcfg[i]), sizeof(uint32_t)); - } - DUMP_SUBTITLE(("\n")); - DUMP_VAR(&p_FmPort->p_FmPortBmiRegs->txPortBmiRegs,fmbm_tgpr); - break; - - default: - RETURN_ERROR(MAJOR, E_INVALID_STATE, ("Invalid flag")); - } - - DUMP_TITLE(p_FmPort->p_FmPortQmiRegs, ("Qmi Port Regs")); - - DUMP_VAR(p_FmPort->p_FmPortQmiRegs,fmqm_pnc); - DUMP_VAR(p_FmPort->p_FmPortQmiRegs,fmqm_pns); - DUMP_VAR(p_FmPort->p_FmPortQmiRegs,fmqm_pnts); - DUMP_VAR(p_FmPort->p_FmPortQmiRegs,fmqm_pnen); - DUMP_VAR(p_FmPort->p_FmPortQmiRegs,fmqm_pnetfc); - - if (flag !=1) - { - DUMP_VAR(&p_FmPort->p_FmPortQmiRegs->nonRxQmiRegs,fmqm_pndn); - DUMP_VAR(&p_FmPort->p_FmPortQmiRegs->nonRxQmiRegs,fmqm_pndc); - DUMP_VAR(&p_FmPort->p_FmPortQmiRegs->nonRxQmiRegs,fmqm_pndtfc); - DUMP_VAR(&p_FmPort->p_FmPortQmiRegs->nonRxQmiRegs,fmqm_pndfdc); - DUMP_VAR(&p_FmPort->p_FmPortQmiRegs->nonRxQmiRegs,fmqm_pndcc); - } - - return E_OK; -} -#endif /* (defined(DEBUG_ERRORS) && ... */ - t_Error FM_PORT_AddCongestionGrps(t_Handle h_FmPort, t_FmPortCongestionGrps *p_CongestionGrps) { diff --git a/drivers/net/ethernet/freescale/fman/Peripherals/FM/Rtc/fm_rtc.c b/drivers/net/ethernet/freescale/fman/Peripherals/FM/Rtc/fm_rtc.c index b0bcf26..727d5c8 100644 --- a/drivers/net/ethernet/freescale/fman/Peripherals/FM/Rtc/fm_rtc.c +++ b/drivers/net/ethernet/freescale/fman/Peripherals/FM/Rtc/fm_rtc.c @@ -690,52 +690,3 @@ t_Error FM_RTC_DisableInterrupt(t_Handle h_FmRtc, uint32_t events) return E_OK; } #endif - -/*****************************************************************************/ -#if (defined(DEBUG_ERRORS) && (DEBUG_ERRORS > 0)) -t_Error FM_RTC_DumpRegs(t_Handle h_FmRtc) -{ - t_FmRtc *p_Rtc = (t_FmRtc *)h_FmRtc; - struct rtc_regs *p_MemMap = p_Rtc->p_MemMap; - int i = 0; - - DECLARE_DUMP; - - if (p_MemMap) - { - - DUMP_TITLE(p_MemMap, ("RTC:")); - DUMP_VAR(p_MemMap, tmr_id); - DUMP_VAR(p_MemMap, tmr_id2); - DUMP_VAR(p_MemMap, tmr_ctrl); - DUMP_VAR(p_MemMap, tmr_tevent); - DUMP_VAR(p_MemMap, tmr_temask); - DUMP_VAR(p_MemMap, tmr_cnt_h); - DUMP_VAR(p_MemMap, tmr_cnt_l); - DUMP_VAR(p_MemMap, tmr_ctrl); - DUMP_VAR(p_MemMap, tmr_add); - DUMP_VAR(p_MemMap, tmr_acc); - DUMP_VAR(p_MemMap, tmr_prsc); - DUMP_VAR(p_MemMap, tmr_off_h); - DUMP_VAR(p_MemMap, tmr_off_l); - - DUMP_SUBSTRUCT_ARRAY(i, 2) - { - DUMP_VAR(p_MemMap, tmr_alarm[i].tmr_alarm_h); - DUMP_VAR(p_MemMap, tmr_alarm[i].tmr_alarm_l); - } - DUMP_SUBSTRUCT_ARRAY(i, 2) - { - DUMP_VAR(p_MemMap, tmr_fiper[i]); - DUMP_VAR(p_MemMap, tmr_fiper[i]); - } - DUMP_SUBSTRUCT_ARRAY(i, 2) - { - DUMP_VAR(p_MemMap, tmr_etts[i].tmr_etts_l); - DUMP_VAR(p_MemMap, tmr_etts[i].tmr_etts_l); - } - } - - return E_OK; -} -#endif /* (defined(DEBUG_ERRORS) && ... */ diff --git a/drivers/net/ethernet/freescale/fman/Peripherals/FM/fm.c b/drivers/net/ethernet/freescale/fman/Peripherals/FM/fm.c index 16dd8aa..a1083a0 100644 --- a/drivers/net/ethernet/freescale/fman/Peripherals/FM/fm.c +++ b/drivers/net/ethernet/freescale/fman/Peripherals/FM/fm.c @@ -153,7 +153,7 @@ static t_Error CheckFmParameters(t_Fm *p_Fm) if (!p_Fm->p_FmStateStruct->totalFifoSize || (p_Fm->p_FmStateStruct->totalFifoSize > BMI_MAX_FIFO_SIZE)) RETURN_ERROR(MAJOR, E_INVALID_VALUE, - ("totalFifoSize (curr - %d) has to be in the range 256 - %d", + ("totalFifoSize (currently defined as %d) has to be in the range of 256 to %d", p_Fm->p_FmStateStruct->totalFifoSize, BMI_MAX_FIFO_SIZE)); if (!p_Fm->p_FmStateStruct->totalNumOfTasks || @@ -2637,8 +2637,15 @@ t_Error FmSetSizeOfFifo(t_Handle h_Fm, /* check that there are enough uncommitted fifo size */ if ((p_Fm->p_FmStateStruct->accumulatedFifoSize - currentVal + sizeOfFifo) > - (p_Fm->p_FmStateStruct->totalFifoSize - p_Fm->p_FmStateStruct->extraFifoPoolSize)) - RETURN_ERROR(MAJOR, E_NOT_AVAILABLE, ("Requested fifo size and extra size exceed total FIFO size.")); + (p_Fm->p_FmStateStruct->totalFifoSize - p_Fm->p_FmStateStruct->extraFifoPoolSize)){ + REPORT_ERROR(MAJOR, E_INVALID_VALUE, + ("Port request fifo size + accumulated size > total FIFO size:")); + RETURN_ERROR(MAJOR, E_INVALID_VALUE, + ("port 0x%x requested %d bytes, extra size = %d, accumulated size = %d total size = %d", + hardwarePortId, sizeOfFifo, p_Fm->p_FmStateStruct->extraFifoPoolSize, + p_Fm->p_FmStateStruct->accumulatedFifoSize, + p_Fm->p_FmStateStruct->totalFifoSize)); + } else { /* update accumulated */ @@ -5077,139 +5084,6 @@ t_Error FM_CtrlMonGetCounters(t_Handle h_Fm, uint8_t fmCtrlIndex, t_FmCtrlMon *p return E_OK; } -#if (defined(DEBUG_ERRORS) && (DEBUG_ERRORS > 0)) -t_Error FM_DumpRegs(t_Handle h_Fm) -{ - t_Fm *p_Fm = (t_Fm *)h_Fm; - uint8_t i,j = 0; - DECLARE_DUMP; - SANITY_CHECK_RETURN_ERROR(p_Fm, E_INVALID_HANDLE); - SANITY_CHECK_RETURN_ERROR(!p_Fm->p_FmDriverParam, E_INVALID_STATE); - SANITY_CHECK_RETURN_ERROR(((p_Fm->guestId == NCSW_MASTER_ID) || - p_Fm->baseAddr), E_INVALID_OPERATION); - - DUMP_SUBTITLE(("\n")); - - DUMP_TITLE(p_Fm->p_FmFpmRegs, ("FM-FPM Regs")); - - DUMP_VAR(p_Fm->p_FmFpmRegs,fmfp_tnc); - DUMP_VAR(p_Fm->p_FmFpmRegs,fmfp_prc); - DUMP_VAR(p_Fm->p_FmFpmRegs,fmfp_brkc); - DUMP_VAR(p_Fm->p_FmFpmRegs,fmfp_mxd); - DUMP_VAR(p_Fm->p_FmFpmRegs,fmfp_dist1); - DUMP_VAR(p_Fm->p_FmFpmRegs,fmfp_dist2); - DUMP_VAR(p_Fm->p_FmFpmRegs,fm_epi); - DUMP_VAR(p_Fm->p_FmFpmRegs,fm_rie); - - DUMP_TITLE(&p_Fm->p_FmFpmRegs->fmfp_fcev, ("fmfp_fcev")); - DUMP_SUBSTRUCT_ARRAY(i, 4) - { - DUMP_MEMORY(&p_Fm->p_FmFpmRegs->fmfp_fcev[i], sizeof(uint32_t)); - } - - DUMP_TITLE(&p_Fm->p_FmFpmRegs->fmfp_cee, ("fmfp_cee")); - DUMP_SUBSTRUCT_ARRAY(i, 4) - { - DUMP_MEMORY(&p_Fm->p_FmFpmRegs->fmfp_cee[i], sizeof(uint32_t)); - } - - DUMP_SUBTITLE(("\n")); - DUMP_VAR(p_Fm->p_FmFpmRegs,fmfp_tsc1); - DUMP_VAR(p_Fm->p_FmFpmRegs,fmfp_tsc2); - DUMP_VAR(p_Fm->p_FmFpmRegs,fmfp_tsp); - DUMP_VAR(p_Fm->p_FmFpmRegs,fmfp_tsf); - DUMP_VAR(p_Fm->p_FmFpmRegs,fm_rcr); - DUMP_VAR(p_Fm->p_FmFpmRegs,fmfp_extc); - DUMP_VAR(p_Fm->p_FmFpmRegs,fmfp_ext1); - DUMP_VAR(p_Fm->p_FmFpmRegs,fmfp_ext2); - - DUMP_SUBTITLE(("\n")); - WRITE_UINT32(p_Fm->p_FmFpmRegs->fmfp_dra, 0); - CORE_MemoryBarrier(); - for (j=0; j<128; j++) - { - DUMP_TITLE(j, ("fmfp_dra")); - DUMP_SUBSTRUCT_ARRAY(i, 4) - { - DUMP_MEMORY(&p_Fm->p_FmFpmRegs->fmfp_drd[i], sizeof(uint32_t)); - } - DUMP_TITLE(j, ("fmfp_ts")); - DUMP_MEMORY(&p_Fm->p_FmFpmRegs->fmfp_ts[j], sizeof(uint32_t)); - } - - DUMP_SUBTITLE(("\n")); - DUMP_VAR(p_Fm->p_FmFpmRegs,fm_ip_rev_1); - DUMP_VAR(p_Fm->p_FmFpmRegs,fm_ip_rev_2); - DUMP_VAR(p_Fm->p_FmFpmRegs,fm_rstc); - DUMP_VAR(p_Fm->p_FmFpmRegs,fm_cld); - DUMP_VAR(p_Fm->p_FmFpmRegs,fm_npi); - DUMP_VAR(p_Fm->p_FmFpmRegs,fmfp_ee); - - DUMP_TITLE(&p_Fm->p_FmFpmRegs->fmfp_cev, ("fmfp_cev")); - DUMP_SUBSTRUCT_ARRAY(i, 4) - { - DUMP_MEMORY(&p_Fm->p_FmFpmRegs->fmfp_cev[i], sizeof(uint32_t)); - } - - DUMP_TITLE(&p_Fm->p_FmFpmRegs->fmfp_ps, ("fmfp_ps")); - DUMP_SUBSTRUCT_ARRAY(i, 64) - { - DUMP_MEMORY(&p_Fm->p_FmFpmRegs->fmfp_ps[i], sizeof(uint32_t)); - } - - DUMP_TITLE(p_Fm->p_FmDmaRegs, ("FM-DMA Regs")); - DUMP_VAR(p_Fm->p_FmDmaRegs,fmdmsr); - DUMP_VAR(p_Fm->p_FmDmaRegs,fmdmemsr); - DUMP_VAR(p_Fm->p_FmDmaRegs,fmdmmr); - DUMP_VAR(p_Fm->p_FmDmaRegs,fmdmtr); - DUMP_VAR(p_Fm->p_FmDmaRegs,fmdmhy); - DUMP_VAR(p_Fm->p_FmDmaRegs,fmdmsetr); - DUMP_VAR(p_Fm->p_FmDmaRegs,fmdmtah); - DUMP_VAR(p_Fm->p_FmDmaRegs,fmdmtal); - DUMP_VAR(p_Fm->p_FmDmaRegs,fmdmtcid); - DUMP_VAR(p_Fm->p_FmDmaRegs,fmdmra); - DUMP_VAR(p_Fm->p_FmDmaRegs,fmdmrd); - DUMP_VAR(p_Fm->p_FmDmaRegs,fmdmwcr); - DUMP_VAR(p_Fm->p_FmDmaRegs,fmdmebcr); - DUMP_VAR(p_Fm->p_FmDmaRegs,fmdmdcr); - - DUMP_TITLE(&p_Fm->p_FmDmaRegs->fmdmplr, ("fmdmplr")); - - DUMP_SUBSTRUCT_ARRAY(i, FM_MAX_NUM_OF_HW_PORT_IDS/2) - { - DUMP_MEMORY(&p_Fm->p_FmDmaRegs->fmdmplr[i], sizeof(uint32_t)); - } - - DUMP_TITLE(p_Fm->p_FmBmiRegs, ("FM-BMI COMMON Regs")); - DUMP_VAR(p_Fm->p_FmBmiRegs,fmbm_init); - DUMP_VAR(p_Fm->p_FmBmiRegs,fmbm_cfg1); - DUMP_VAR(p_Fm->p_FmBmiRegs,fmbm_cfg2); - DUMP_VAR(p_Fm->p_FmBmiRegs,fmbm_ievr); - DUMP_VAR(p_Fm->p_FmBmiRegs,fmbm_ier); - - DUMP_TITLE(&p_Fm->p_FmBmiRegs->fmbm_arb, ("fmbm_arb")); - DUMP_SUBSTRUCT_ARRAY(i, 8) - { - DUMP_MEMORY(&p_Fm->p_FmBmiRegs->fmbm_arb[i], sizeof(uint32_t)); - } - - DUMP_TITLE(p_Fm->p_FmQmiRegs, ("FM-QMI COMMON Regs")); - DUMP_VAR(p_Fm->p_FmQmiRegs,fmqm_gc); - DUMP_VAR(p_Fm->p_FmQmiRegs,fmqm_eie); - DUMP_VAR(p_Fm->p_FmQmiRegs,fmqm_eien); - DUMP_VAR(p_Fm->p_FmQmiRegs,fmqm_eif); - DUMP_VAR(p_Fm->p_FmQmiRegs,fmqm_ie); - DUMP_VAR(p_Fm->p_FmQmiRegs,fmqm_ien); - DUMP_VAR(p_Fm->p_FmQmiRegs,fmqm_if); - DUMP_VAR(p_Fm->p_FmQmiRegs,fmqm_gs); - DUMP_VAR(p_Fm->p_FmQmiRegs,fmqm_etfc); - DUMP_VAR(p_Fm->p_FmQmiRegs,fmqm_tapc); - - return E_OK; -} -#endif /* (defined(DEBUG_ERRORS) && ... */ - - /****************************************************/ /* Hidden-DEBUG Only API */ diff --git a/drivers/net/ethernet/freescale/fman/inc/ctype_ext.h b/drivers/net/ethernet/freescale/fman/inc/ctype_ext.h deleted file mode 100644 index e3d5d8d..0000000 --- a/drivers/net/ethernet/freescale/fman/inc/ctype_ext.h +++ /dev/null @@ -1,94 +0,0 @@ -/* - * Copyright 2008-2012 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 __CTYPE_EXT_H -#define __CTYPE_EXT_H - - -#if defined(NCSW_LINUX) && defined(__KERNEL__) -/* - * NOTE! This ctype does not handle EOF like the standard C - * library is required to. - */ - -#define _U 0x01 /* upper */ -#define _L 0x02 /* lower */ -#define _D 0x04 /* digit */ -#define _C 0x08 /* cntrl */ -#define _P 0x10 /* punct */ -#define _S 0x20 /* white space (space/lf/tab) */ -#define _X 0x40 /* hex digit */ -#define _SP 0x80 /* hard space (0x20) */ - -extern unsigned char _ctype[]; - -#define __ismask(x) (_ctype[(int)(unsigned char)(x)]) - -#define isalnum(c) ((__ismask(c)&(_U|_L|_D)) != 0) -#define isalpha(c) ((__ismask(c)&(_U|_L)) != 0) -#define iscntrl(c) ((__ismask(c)&(_C)) != 0) -#define isdigit(c) ((__ismask(c)&(_D)) != 0) -#define isgraph(c) ((__ismask(c)&(_P|_U|_L|_D)) != 0) -#define islower(c) ((__ismask(c)&(_L)) != 0) -#define isprint(c) ((__ismask(c)&(_P|_U|_L|_D|_SP)) != 0) -#define ispunct(c) ((__ismask(c)&(_P)) != 0) -#define isspace(c) ((__ismask(c)&(_S)) != 0) -#define isupper(c) ((__ismask(c)&(_U)) != 0) -#define isxdigit(c) ((__ismask(c)&(_D|_X)) != 0) - -#define isascii(c) (((unsigned char)(c))<=0x7f) -#define toascii(c) (((unsigned char)(c))&0x7f) - -static __inline__ unsigned char __tolower(unsigned char c) -{ - if (isupper(c)) - c -= 'A'-'a'; - return c; -} - -static __inline__ unsigned char __toupper(unsigned char c) -{ - if (islower(c)) - c -= 'a'-'A'; - return c; -} - -#define tolower(c) __tolower(c) -#define toupper(c) __toupper(c) - -#else -#include <ctype.h> -#endif /* defined(NCSW_LINUX) && defined(__KERNEL__) */ - - -#endif /* __CTYPE_EXT_H */ diff --git a/drivers/net/ethernet/freescale/fman/src/wrapper/lnxwrp_ioctls_fm.c b/drivers/net/ethernet/freescale/fman/src/wrapper/lnxwrp_ioctls_fm.c index 109dd36..b4ab295 100644 --- a/drivers/net/ethernet/freescale/fman/src/wrapper/lnxwrp_ioctls_fm.c +++ b/drivers/net/ethernet/freescale/fman/src/wrapper/lnxwrp_ioctls_fm.c @@ -1456,7 +1456,7 @@ Status: feature not supported } goto invalid_port_id; - case (e_FM_PORT_TYPE_OH_OFFLINE_PARSING): + case (e_IOC_FM_PORT_TYPE_OH_OFFLINE_PARSING): if (port_params->port_id && port_params->port_id < FM_MAX_NUM_OF_OH_PORTS) { h_Port = p_LnxWrpFmDev->opPorts[port_params->port_id - 1].h_Dev; break; @@ -3523,7 +3523,7 @@ t_Error LnxwrpFmIOCTL(t_LnxWrpFmDev *p_LnxWrpFmDev, unsigned int cmd, unsigned l else #endif { - if (copy_from_user(¶m, (void *)arg, sizeof(ioc_fm_counters_params_t))) + if (copy_from_user(¶m, (void *)arg, sizeof(ioc_fm_ctrl_mon_counters_params_t))) RETURN_ERROR(MINOR, E_WRITE_FAILED, NO_MSG); } diff --git a/drivers/net/ethernet/freescale/fman/src/wrapper/lnxwrp_ioctls_fm_compat.c b/drivers/net/ethernet/freescale/fman/src/wrapper/lnxwrp_ioctls_fm_compat.c index b5ffe5c..ea0885a 100644 --- a/drivers/net/ethernet/freescale/fman/src/wrapper/lnxwrp_ioctls_fm_compat.c +++ b/drivers/net/ethernet/freescale/fman/src/wrapper/lnxwrp_ioctls_fm_compat.c @@ -310,12 +310,18 @@ static inline void compat_copy_fm_pcd_cc_next_kg( { param->new_fqid = compat_param->new_fqid; param->override_fqid = compat_param->override_fqid; +#if DPAA_VERSION >= 11 + param->new_relative_storage_profile_id = compat_param->new_relative_storage_profile_id; +#endif param->p_direct_scheme = compat_pcd_id2ptr(compat_param->p_direct_scheme); } else { compat_param->new_fqid = param->new_fqid; compat_param->override_fqid = param->override_fqid; +#if DPAA_VERSION >= 11 + compat_param->new_relative_storage_profile_id = param->new_relative_storage_profile_id; +#endif compat_param->p_direct_scheme = compat_pcd_ptr2id(param->p_direct_scheme); } diff --git a/drivers/net/ethernet/freescale/fman/src/wrapper/lnxwrp_sysfs_fm_port.c b/drivers/net/ethernet/freescale/fman/src/wrapper/lnxwrp_sysfs_fm_port.c index 0cdf6a8..bd62011 100644 --- a/drivers/net/ethernet/freescale/fman/src/wrapper/lnxwrp_sysfs_fm_port.c +++ b/drivers/net/ethernet/freescale/fman/src/wrapper/lnxwrp_sysfs_fm_port.c @@ -380,7 +380,7 @@ static int fm_port_dsar_dump_regs(void *h_dev, char *buf, int nn) FM_DMP_LN(buf, n, "control bits 0x%04x\n", ArpDescriptor->control); if (ArpDescriptor->numOfBindings) { - char ip_str[20]; + char ip_str[100]; t_DsarArpBindingEntry* bindings = ioremap( ioread32be(&ArpDescriptor->p_Bindings) + p_FmPort->fmMuramPhysBaseAddr, @@ -390,8 +390,11 @@ static int fm_port_dsar_dump_regs(void *h_dev, char *buf, int nn) FM_DMP_LN(buf, n, " ip vlan id\n"); for (i = 0; i < ArpDescriptor->numOfBindings; i++) { - n += sprintf(ip_str, "%d:%d:%d:%d", ip_addr[0], ip_addr[1], ip_addr[2], ip_addr[3]); - FM_DMP_LN(buf, n, "%-15s 0x%x\n", ip_str, bindings->vlanId); + n += snprintf(ip_str, 100, "%d.%d.%d.%d", + ip_addr[0], ip_addr[1], + ip_addr[2], ip_addr[3]); + FM_DMP_LN(buf, n, "%-15s 0x%x\n", + ip_str, bindings->vlanId); } iounmap(bindings); } @@ -427,7 +430,7 @@ static int fm_port_dsar_dump_regs(void *h_dev, char *buf, int nn) FM_DMP_LN(buf, n, "control bits 0x%04x\n", ICMPV4Descriptor->control); if (ICMPV4Descriptor->numOfBindings) { - char ip_str[20]; + char ip_str[100]; t_DsarArpBindingEntry* bindings = ioremap( ioread32be(&ICMPV4Descriptor->p_Bindings) + p_FmPort->fmMuramPhysBaseAddr, @@ -437,8 +440,11 @@ static int fm_port_dsar_dump_regs(void *h_dev, char *buf, int nn) FM_DMP_LN(buf, n, " ip vlan id\n"); for (i = 0; i < ICMPV4Descriptor->numOfBindings; i++) { - n += sprintf(ip_str, "%d:%d:%d:%d", ip_addr[0], ip_addr[1], ip_addr[2], ip_addr[3]); - FM_DMP_LN(buf, n, "%-15s 0x%x\n", ip_str, bindings->vlanId); + n += snprintf(ip_str, 100, "%d.%d.%d.%d", + ip_addr[0], ip_addr[1], + ip_addr[2], ip_addr[3]); + FM_DMP_LN(buf, n, "%-15s 0x%x\n", + ip_str, bindings->vlanId); } iounmap(bindings); } @@ -470,7 +476,7 @@ static int fm_port_dsar_dump_regs(void *h_dev, char *buf, int nn) FM_DMP_LN(buf, n, "solicited address 0x%08x\n", NDDescriptor->solicitedAddr); if (NDDescriptor->numOfBindings) { - char ip_str[20]; + char ip_str[100]; t_DsarIcmpV6BindingEntry* bindings = ioremap( ioread32be(&NDDescriptor->p_Bindings) + p_FmPort->fmMuramPhysBaseAddr, @@ -480,7 +486,8 @@ static int fm_port_dsar_dump_regs(void *h_dev, char *buf, int nn) FM_DMP_LN(buf, n, " ip vlan id\n"); for (i = 0; i < NDDescriptor->numOfBindings; i++) { - n += sprintf(ip_str, "%04x:%04x:%04x:%04x:%04x:%04x:%04x:%04x", + n += snprintf(ip_str, 100, + "%04x:%04x:%04x:%04x:%04x:%04x:%04x:%04x", ip_addr[0], ip_addr[1], ip_addr[2], ip_addr[3], ip_addr[4], ip_addr[5], ip_addr[6], ip_addr[7]); FM_DMP_LN(buf, n, "%s 0x%x\n", ip_str, bindings->vlanId); @@ -516,7 +523,7 @@ static int fm_port_dsar_dump_regs(void *h_dev, char *buf, int nn) FM_DMP_LN(buf, n, "control bits 0x%04x\n", ICMPV6Descriptor->control); if (ICMPV6Descriptor->numOfBindings) { - char ip_str[20]; + char ip_str[100]; t_DsarIcmpV6BindingEntry* bindings = ioremap( ioread32be(&ICMPV6Descriptor->p_Bindings) + p_FmPort->fmMuramPhysBaseAddr, @@ -526,7 +533,8 @@ static int fm_port_dsar_dump_regs(void *h_dev, char *buf, int nn) FM_DMP_LN(buf, n, " ip vlan id\n"); for (i = 0; i < ICMPV6Descriptor->numOfBindings; i++) { - n += sprintf(ip_str, "%04x:%04x:%04x:%04x:%04x:%04x:%04x:%04x", + n += snprintf(ip_str, 100, + "%04x:%04x:%04x:%04x:%04x:%04x:%04x:%04x", ip_addr[0], ip_addr[1], ip_addr[2], ip_addr[3], ip_addr[4], ip_addr[5], ip_addr[6], ip_addr[7]); FM_DMP_LN(buf, n, "%s 0x%x\n", ip_str, bindings->vlanId); @@ -560,7 +568,7 @@ static int fm_port_dsar_dump_regs(void *h_dev, char *buf, int nn) FM_DMP_LN(buf, n, "max message length 0x%04x\n", SnmpDescriptor->maxSnmpMsgLength); if (SnmpDescriptor->numOfIpv4Addresses) { - char ip_str[20]; + char ip_str[100]; t_DsarSnmpIpv4AddrTblEntry* addrs = ioremap( ioread32be(&SnmpDescriptor->p_Ipv4AddrTbl) + p_FmPort->fmMuramPhysBaseAddr, @@ -570,7 +578,9 @@ static int fm_port_dsar_dump_regs(void *h_dev, char *buf, int nn) FM_DMP_LN(buf, n, " ip vlan id\n"); for (i = 0; i < SnmpDescriptor->numOfIpv4Addresses; i++) { - n += sprintf(ip_str, "%d:%d:%d:%d", ip_addr[0], ip_addr[1], ip_addr[2], ip_addr[3]); + n += snprintf(ip_str, 100, "%d.%d.%d.%d", + ip_addr[0], ip_addr[1], + ip_addr[2], ip_addr[3]); FM_DMP_LN(buf, n, "%-15s 0x%x\n", ip_str, addrs->vlanId); } iounmap(addrs); diff --git a/drivers/net/ethernet/freescale/fman/src/xx/Makefile b/drivers/net/ethernet/freescale/fman/src/xx/Makefile index 7199b57..3d832a4 100644 --- a/drivers/net/ethernet/freescale/fman/src/xx/Makefile +++ b/drivers/net/ethernet/freescale/fman/src/xx/Makefile @@ -8,5 +8,5 @@ include $(srctree)/drivers/net/ethernet/freescale/fman/ncsw_config.mk obj-y += fsl-ncsw-xx.o -fsl-ncsw-xx-objs := xx_linux.o stdlib.o \ +fsl-ncsw-xx-objs := xx_linux.o \ module_strings.o diff --git a/drivers/net/ethernet/freescale/fman/src/xx/stdlib.c b/drivers/net/ethernet/freescale/fman/src/xx/stdlib.c deleted file mode 100644 index 851bcf1..0000000 --- a/drivers/net/ethernet/freescale/fman/src/xx/stdlib.c +++ /dev/null @@ -1,264 +0,0 @@ -/* - * Copyright 2008-2012 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. - */ - -/*------------------------------------------------------*/ -/* */ -/* File: stdlib.c */ -/* */ -/* Description: */ -/* Standard library routines (externals) */ -/* */ -/* Modifications: */ -/* ============== */ -/* */ -/*------------------------------------------------------*/ -#include "stdlib_ext.h" -#include "stdarg_ext.h" -#include "ctype_ext.h" -#include "string_ext.h" -#include "std_ext.h" -#include "xx_ext.h" - - -#ifdef MODULE -/** - * strtoul - convert a string to an uint32_t - * @cp: The start of the string - * @endp: A pointer to the end of the parsed string will be placed here - * @base: The number base to use - */ -uint32_t strtoul(const char *cp,char **endp,uint32_t base) -{ - uint32_t result = 0,value; - - if (!base) { - base = 10; - if (*cp == '0') { - base = 8; - cp++; - if ((*cp == 'x') && isxdigit(cp[1])) { - cp++; - base = 16; - } - } - } - while (isxdigit(*cp) && - (value = (uint32_t)(isdigit(*cp) ? *cp-'0' : toupper((uint8_t)(*cp))-'A'+10)) < base) { - result = result*base + value; - cp++; - } - if (endp) - *endp = (char *)cp; - return result; -} - -/** - * strtol - convert a string to a int32_t - * @cp: The start of the string - * @endp: A pointer to the end of the parsed string will be placed here - * @base: The number base to use - */ -long strtol(const char *cp,char **endp,uint32_t base) -{ - if(*cp=='-') - return (long)(-strtoul(cp+1,endp,base)); - return (long)strtoul(cp,endp,base); -} - -/** - * strtoull - convert a string to an uint64_t - * @cp: The start of the string - * @endp: A pointer to the end of the parsed string will be placed here - * @base: The number base to use - */ -uint64_t strtoull(const char *cp,char **endp,uint32_t base) -{ - uint64_t result = 0,value; - - if (!base) { - base = 10; - if (*cp == '0') { - base = 8; - cp++; - if ((*cp == 'x') && isxdigit(cp[1])) { - cp++; - base = 16; - } - } - } - while (isxdigit(*cp) && (value = isdigit(*cp) ? *cp-'0' : (islower(*cp) - ? toupper((uint8_t)(*cp)) : *cp)-'A'+10) < base) { - result = result*base + value; - cp++; - } - if (endp) - *endp = (char *)cp; - return result; -} - -/** - * strtoll - convert a string to a int64 - * @cp: The start of the string - * @endp: A pointer to the end of the parsed string will be placed here - * @base: The number base to use - */ -long long strtoll(const char *cp,char **endp,uint32_t base) -{ - if(*cp=='-') - return (long long)(-strtoull(cp+1,endp,base)); - return (long long)(strtoull(cp,endp,base)); -} - -/** - * atoi - convert a string to a int - * @s: The start of the string - */ -int atoi(const char *s) -{ - int i=0; - const char **tmp_s = &s; - - while (isdigit(**tmp_s)) - i = i*10 + *((*tmp_s)++) - '0'; - return i; -} - -/** - * strlen - Find the length of a string - * @s: The string to be sized - */ -size_t strlen(const char * s) -{ - const char *sc; - - for (sc = s; *sc != '\0'; ++sc) - /* nothing */; - - return sc - s; -} - -/** - * strnlen - Find the length of a length-limited string - * @s: The string to be sized - * @count: The maximum number of bytes to search - */ -size_t strnlen(const char * s, size_t count) -{ - const char *sc; - - for (sc = s; count-- && *sc != '\0'; ++sc) - /* nothing */; - - return sc - s; -} - -/** - * strcpy - Copy a %NUL terminated string - * @dest: Where to copy the string to - * @src: Where to copy the string from - */ -char * strcpy(char * dest,const char *src) -{ - char *tmp = dest; - - while ((*dest++ = *src++) != '\0') - /* nothing */; - - return tmp; -} -#endif /* MODULE */ - -/** - * strtok - Split a string into tokens - * @s: The string to be searched - * @ct: The characters to search for - * - * WARNING: strtok is deprecated, use strsep instead. - */ -char *___strtok; - -char * strtok(char * s,const char * ct) -{ - char *sbegin, *send; - - sbegin = s ? s : ___strtok; - if (!sbegin) { - return NULL; - } - sbegin += strspn(sbegin,ct); - if (*sbegin == '\0') { - ___strtok = NULL; - return( NULL ); - } - send = strpbrk( sbegin, ct); - if (send && *send != '\0') - *send++ = '\0'; - ___strtok = send; - return (sbegin); -} - - -#ifdef MODULE -/** - * strncpy - Copy a length-limited, %NUL-terminated string - * @dest: Where to copy the string to - * @src: Where to copy the string from - * @count: The maximum number of bytes to copy - * - * Note that unlike userspace strncpy, this does not %NUL-pad the buffer. - * However, the result is not %NUL-terminated if the source exceeds - * @count bytes. - */ -char * strncpy(char * dest,const char *src,size_t count) -{ - char *tmp = dest; - - while (count-- && (*dest++ = *src++) != '\0') - /* nothing */; - - return tmp; -} - -/** - * vsprintf - Format a string and place it in a buffer - * @buf: The buffer to place the result into - * @fmt: The format string to use - * @args: Arguments for the format string - * - * Call this function if you are already dealing with a va_list. - * You probably want sprintf instead. - */ -int vsprintf(char *buf, const char *fmt, va_list args) -{ - return vsnprintf(buf, INT32_MAX, fmt, args); -} -#endif /* MODULE */ diff --git a/drivers/net/ethernet/freescale/xgmac_mdio.c b/drivers/net/ethernet/freescale/xgmac_mdio.c index 5eef8ce..b2d060c 100644 --- a/drivers/net/ethernet/freescale/xgmac_mdio.c +++ b/drivers/net/ethernet/freescale/xgmac_mdio.c @@ -19,9 +19,6 @@ #include <linux/mdio.h> #include <linux/of_platform.h> #include <linux/of_mdio.h> -#ifdef CONFIG_FMAN_V3L -#include <asm/mpc85xx.h> -#endif /* Number of microseconds to wait for a register to respond */ #define TIMEOUT 1000 @@ -183,12 +180,6 @@ static int xgmac_mdio_read(struct mii_bus *bus, int phy_id, int regnum) return ret; } -#ifdef CONFIG_FMAN_V3L - /* Fixup for RTL8211F MDIO timing delay on T1023RDB */ - if (SVR_SOC_VER(mfspr(SPRN_SVR)) == SVR_T1023) - udelay(100); -#endif - /* Initiate the read */ out_be32(®s->mdio_ctl, mdio_ctl | MDIO_CTL_READ); diff --git a/drivers/staging/fsl_dce/dce_sys.c b/drivers/staging/fsl_dce/dce_sys.c index 29ad636..d865d90 100644 --- a/drivers/staging/fsl_dce/dce_sys.c +++ b/drivers/staging/fsl_dce/dce_sys.c @@ -87,7 +87,7 @@ static int dce_sys_init(void) slab_scr_128b = kmem_cache_create("fsl_dce_scr_128b", sizeof(struct scf_128b), /* 128 byte size */ DCE_SCR_ALIGN, SLAB_HWCACHE_ALIGN, NULL); - if (!slab_scr_64b) + if (!slab_scr_128b) goto end; slab_compress_history = kmem_cache_create("fsl_dce_compress_history", DCE_COMP_HISTORY_SIZE, diff --git a/drivers/staging/fsl_dpa_offload/dpa_ipsec.c b/drivers/staging/fsl_dpa_offload/dpa_ipsec.c index 5b3fc91..23b0521 100644 --- a/drivers/staging/fsl_dpa_offload/dpa_ipsec.c +++ b/drivers/staging/fsl_dpa_offload/dpa_ipsec.c @@ -3680,8 +3680,6 @@ int dpa_ipsec_free(int dpa_ipsec_id) free_resources(dpa_ipsec_id); - mark_unused_gbl_dpa_ipsec(instance->id); - return 0; } EXPORT_SYMBOL(dpa_ipsec_free); diff --git a/drivers/staging/fsl_dpa_offload/dts/b4860qds-usdpaa-nf-offload.dts b/drivers/staging/fsl_dpa_offload/dts/b4860qds-usdpaa-nf-offload.dts new file mode 100644 index 0000000..daaed81 --- /dev/null +++ b/drivers/staging/fsl_dpa_offload/dts/b4860qds-usdpaa-nf-offload.dts @@ -0,0 +1,181 @@ +/* + * B4860QDS Device Tree Source + * + * Copyright 2013 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. + */ + +/include/ "b4860qds.dts" + +/ { + /* NB: "bpool-ethernet-seeds" is not set to avoid buffer seeding, + * because apps seed these pools with buffers allocated at + * run-time. + * HOWEVER, the kernel driver requires the buffer-size so + * "fsl,bpool-ethernet-cfg" is set. It also mis-interprets + * things if the base-address is zero (hence the 0xdeadbeef + * values). + */ + bp7: buffer-pool@7 { + compatible = "fsl,b4860-bpool", "fsl,bpool"; + fsl,bpid = <7>; + fsl,bpool-ethernet-cfg = <0 0 0 192 0 0xdeadbeef>; + fsl,bpool-thresholds = <0x400 0xc00 0x0 0x0>; + }; + bp8: buffer-pool@8 { + compatible = "fsl,b4860-bpool", "fsl,bpool"; + fsl,bpid = <8>; + fsl,bpool-ethernet-cfg = <0 0 0 576 0 0xabbaf00d>; + fsl,bpool-thresholds = <0x100 0x300 0x0 0x0>; + }; + bp9: buffer-pool@9 { + compatible = "fsl,b4860-bpool", "fsl,bpool"; + fsl,bpid = <9>; + fsl,bpool-ethernet-cfg = <0 0 0 1728 0 0xfeedabba>; + fsl,bpool-thresholds = <0x100 0x300 0x0 0x0>; + }; + + bp10: buffer-pool@10 { + compatible = "fsl,b4860-bpool", "fsl,bpool"; + fsl,bpid = <10>; + fsl,bpool-thresholds = <0x10 0x30 0x0 0x0>; + }; + bp11: buffer-pool@11 { + compatible = "fsl,b4860-bpool", "fsl,bpool"; + fsl,bpid = <11>; + fsl,bpool-thresholds = <0x100 0x300 0x0 0x0>; + }; + bp12: buffer-pool@12 { + compatible = "fsl,b4860-bpool", "fsl,bpool"; + fsl,bpid = <12>; + fsl,bpool-thresholds = <0x100 0x300 0x0 0x0>; + }; + + bp16: buffer-pool@16 { + compatible = "fsl,b4860-bpool", "fsl,bpool"; + fsl,bpid = <16>; + fsl,bpool-ethernet-cfg = <0 2048 0 1728 0 0>; + fsl,bpool-thresholds = <0x100 0x300 0x0 0x0>; + }; + bp17: buffer-pool@17 { + compatible = "fsl,b4860-bpool", "fsl,bpool"; + fsl,bpid = <17>; + fsl,bpool-ethernet-cfg = <0 2048 0 1728 0 0>; + fsl,bpool-thresholds = <0x100 0x300 0x0 0x0>; + fsl,bpool-ethernet-seeds; + }; + + + fsl,dpaa { + ethernet@0 { + compatible = "fsl,b4860-dpa-ethernet-init", "fsl,dpa-ethernet-init"; + fsl,bman-buffer-pools = <&bp16>; + fsl,qman-frame-queues-rx = <0x50 1 0x51 1>; + fsl,qman-frame-queues-tx = <0x70 1 0x71 1>; + }; + ethernet@1 { + compatible = "fsl,b4860-dpa-ethernet-init", "fsl,dpa-ethernet-init"; + fsl,bman-buffer-pools = <&bp16>; + fsl,qman-frame-queues-rx = <0x52 1 0x53 1>; + fsl,qman-frame-queues-tx = <0x72 1 0x73 1>; + }; + ethernet@2 { + compatible = "fsl,b4860-dpa-ethernet-init", "fsl,dpa-ethernet-init"; + fsl,bman-buffer-pools = <&bp16>; + fsl,qman-frame-queues-rx = <0x54 1 0x55 1>; + fsl,qman-frame-queues-tx = <0x74 1 0x75 1>; + }; + ethernet@3 { + compatible = "fsl,b4860-dpa-ethernet-init", "fsl,dpa-ethernet-init"; + fsl,bman-buffer-pools = <&bp16>; + fsl,qman-frame-queues-rx = <0x56 1 0x57 1>; + fsl,qman-frame-queues-tx = <0x76 1 0x77 1>; + }; + ethernet@4 { + compatible = "fsl,b4860-dpa-ethernet-shared", "fsl,dpa-ethernet-shared"; + fsl,bman-buffer-pools = <&bp16>; + fsl,qman-frame-queues-rx = <0x58 1 0x59 1 0x1000 2>; + fsl,qman-frame-queues-tx = <0x78 1 0x79 1 0x2000 8>; + }; + ethernet@5 { + compatible = "fsl,b4860-dpa-ethernet-shared", "fsl,dpa-ethernet-shared"; + fsl,bman-buffer-pools = <&bp16>; + fsl,qman-frame-queues-rx = <0x5a 1 0x5b 1 0x1002 2>; + fsl,qman-frame-queues-tx = <0x7a 1 0x7b 1 0x2008 8>; + }; + ethernet@8 { + compatible = "fsl,b4860-dpa-ethernet-init", "fsl,dpa-ethernet-init"; + fsl,bman-buffer-pools = <&bp16>; + fsl,qman-frame-queues-rx = <0x5c 1 0x5d 1>; + fsl,qman-frame-queues-tx = <0x7c 1 0x7d 1>; + }; + + /* ethernet@16 declared as MAC-less interface with no "fsl,fman-mac" property. + * USDPAA will seed buffers to this buffer pool and initialize 8 TX Frame + * queues. The ethernet driver will initialize 8 RX default Frame queues. + * On receiving frame at this interface, the ethernet driver will do + * kmap_atomic/kunmap_atomic for that frame. */ + ethernet@16 { + compatible = "fsl,b4860-dpa-ethernet-macless", "fsl,dpa-ethernet-macless"; + fsl,bman-buffer-pools = <&bp16>; + fsl,qman-frame-queues-rx = <4000 8>; + fsl,qman-frame-queues-tx = <4008 8>; + local-mac-address = [00 11 22 33 44 55]; + }; + ethernet@17 { + compatible = "fsl,b4860-dpa-ethernet-macless", "fsl,dpa-ethernet-macless"; + fsl,bman-buffer-pools = <&bp16>; + fsl,qman-frame-queues-rx = <5000 8>; + fsl,qman-frame-queues-tx = <5008 8>; + local-mac-address = [00 11 22 33 44 66]; + }; + + dpa-fman0-oh@2 { + compatible = "fsl,dpa-oh"; + /* Define frame queues for the OH port*/ + /* <OH Rx error, OH Rx default> */ + fsl,qman-frame-queues-oh = <0x6e 1 0x6f 1>; + fsl,bman-buffer-pools = <&bp16>; + fsl,fman-oh-port = <&fman0_oh2>; + }; + dpa_fman0_oh3: dpa-fman0-oh@3 { + compatible = "fsl,dpa-oh"; + fsl,qman-frame-queues-oh = <0x68 1 0x69 1>; + fsl,bman-buffer-pools = <&bp9>; + fsl,fman-oh-port = <&fman0_oh3>; + }; + dpa_fman0_oh4: dpa-fman0-oh@4 { + compatible = "fsl,dpa-oh"; + fsl,qman-frame-queues-oh = <0x70 1 0x71 1>; + fsl,bman-buffer-pools = <&bp9>; + fsl,fman-oh-port = <&fman0_oh4>; + }; + }; +}; diff --git a/drivers/staging/fsl_dpa_offload/dts/b4860qds-usdpaa-shared-interfaces.dts b/drivers/staging/fsl_dpa_offload/dts/b4860qds-usdpaa-shared-interfaces.dts index fe64763..151979b 100644 --- a/drivers/staging/fsl_dpa_offload/dts/b4860qds-usdpaa-shared-interfaces.dts +++ b/drivers/staging/fsl_dpa_offload/dts/b4860qds-usdpaa-shared-interfaces.dts @@ -89,6 +89,7 @@ fsl,bpid = <17>; fsl,bpool-ethernet-cfg = <0 2048 0 1728 0 0>; fsl,bpool-thresholds = <0x100 0x300 0x0 0x0>; + fsl,bpool-ethernet-seeds; }; @@ -118,22 +119,16 @@ fsl,qman-frame-queues-tx = <0x76 1 0x77 1>; }; ethernet@4 { - compatible = "fsl,b4860-dpa-ethernet-shared", "fsl,dpa-ethernet-shared"; + compatible = "fsl,b4860-dpa-ethernet-init", "fsl,dpa-ethernet-init"; fsl,bman-buffer-pools = <&bp16>; - fsl,qman-frame-queues-rx = <0x58 1 0x59 1 0x1000 2>; - fsl,qman-frame-queues-tx = <0x78 1 0x79 1 0x2000 8>; + fsl,qman-frame-queues-rx = <0x58 1 0x59 1>; + fsl,qman-frame-queues-tx = <0x78 1 0x79 1>; }; ethernet@5 { - compatible = "fsl,b4860-dpa-ethernet-shared", "fsl,dpa-ethernet-shared"; - fsl,bman-buffer-pools = <&bp16>; - fsl,qman-frame-queues-rx = <0x5a 1 0x5b 1 0x1002 2>; - fsl,qman-frame-queues-tx = <0x7a 1 0x7b 1 0x2008 8>; - }; - ethernet@8 { compatible = "fsl,b4860-dpa-ethernet-init", "fsl,dpa-ethernet-init"; fsl,bman-buffer-pools = <&bp16>; - fsl,qman-frame-queues-rx = <0x5c 1 0x5d 1>; - fsl,qman-frame-queues-tx = <0x7c 1 0x7d 1>; + fsl,qman-frame-queues-rx = <0x5a 1 0x5b 1>; + fsl,qman-frame-queues-tx = <0x7a 1 0x7b 1>; }; /* ethernet@16 declared as MAC-less interface with no "fsl,fman-mac" property. @@ -176,7 +171,7 @@ /* Define frame queues for the OH port*/ /* <OH Rx error, OH Rx default> */ fsl,qman-frame-queues-oh = <0x6e 1 0x6f 1>; - fsl,bman-buffer-pools = <&bp16>; + fsl,bman-buffer-pools = <&bp17>; fsl,fman-oh-port = <&fman0_oh2>; }; oh3: dpa_fman0_oh3: dpa-fman0-oh@3 { diff --git a/drivers/staging/fsl_pme2/pme2_high.c b/drivers/staging/fsl_pme2/pme2_high.c index 094ee9d..12ab7a1 100644 --- a/drivers/staging/fsl_pme2/pme2_high.c +++ b/drivers/staging/fsl_pme2/pme2_high.c @@ -727,6 +727,9 @@ static inline int __update_flow(struct pme_ctx *ctx, u32 flags, BUG_ON(ctx->flags & PME_CTX_FLAG_DIRECT); if (!hw_res) return -ENOMEM; + /* Direct mode is not enabled. Therefore the call back token must not + * be NULL */ + BUG_ON(!token); token->internal_flow_ptr = pme_hw_flow_new(); if (!token->internal_flow_ptr) { pme_hw_residue_free(hw_res); diff --git a/drivers/staging/fsl_qbman/bman_test_high.c b/drivers/staging/fsl_qbman/bman_test_high.c index 7bdd181..4676fb0 100644 --- a/drivers/staging/fsl_qbman/bman_test_high.c +++ b/drivers/staging/fsl_qbman/bman_test_high.c @@ -165,7 +165,9 @@ do_loop: BUG_ON(tmp != num); i -= num; } - i = bman_acquire(pool, NULL, 1, 0); + + struct bm_buffer tmp_buf; + i = bman_acquire(pool, &tmp_buf, 1, 0); BUG_ON(i > 0); bufs_confirm(); diff --git a/drivers/staging/fsl_qbman/fsl_usdpaa.c b/drivers/staging/fsl_qbman/fsl_usdpaa.c index dfef598..e2e3308 100644 --- a/drivers/staging/fsl_qbman/fsl_usdpaa.c +++ b/drivers/staging/fsl_qbman/fsl_usdpaa.c @@ -195,9 +195,9 @@ static u32 largest_page_size(u32 size) /* Determine if value is power of 4 */ static inline bool is_power_of_4(u64 x) { - if (!is_power_of_2(x)) + if (x == 0 || ((x & (x - 1)) != 0)) return false; - return !!(x & 0x5555555555555555ul); + return !!(x & 0x5555555555555555ull); } /* Helper for ioctl_dma_map() when we have a larger fragment than we need. This diff --git a/drivers/staging/fsl_qbman/qman_high.c b/drivers/staging/fsl_qbman/qman_high.c index 565de9e..b94bfb4 100644 --- a/drivers/staging/fsl_qbman/qman_high.c +++ b/drivers/staging/fsl_qbman/qman_high.c @@ -3504,11 +3504,6 @@ int qman_ceetm_lni_enable_shaper(struct qm_ceetm_lni *lni, int coupled, { struct qm_mcc_ceetm_mapping_shaper_tcfc_config config_opts; - if (lni->shaper_enable) { - pr_err("The shaper has already been enabled\n"); - return -EINVAL; - } - lni->shaper_enable = 1; lni->shaper_couple = coupled; lni->oal = oal; @@ -3550,6 +3545,12 @@ int qman_ceetm_lni_disable_shaper(struct qm_ceetm_lni *lni) } EXPORT_SYMBOL(qman_ceetm_lni_disable_shaper); +int qman_ceetm_lni_is_shaper_enabled(struct qm_ceetm_lni *lni) +{ + return lni->shaper_enable; +} +EXPORT_SYMBOL(qman_ceetm_lni_is_shaper_enabled); + int qman_ceetm_lni_set_commit_rate(struct qm_ceetm_lni *lni, const struct qm_ceetm_rate *token_rate, u16 token_limit) @@ -3559,34 +3560,52 @@ int qman_ceetm_lni_set_commit_rate(struct qm_ceetm_lni *lni, struct qm_mcr_ceetm_mapping_shaper_tcfc_query query_result; int ret; - if (!lni->shaper_enable) { - pr_err("The LNI#%d is unshaped, cannot set CR rate\n", - lni->idx); - return -EINVAL; + lni->cr_token_rate.whole = token_rate->whole; + lni->cr_token_rate.fraction = token_rate->fraction; + lni->cr_token_bucket_limit = token_limit; + if (lni->shaper_enable) { + query_opts.cid = CEETM_COMMAND_LNI_SHAPER | lni->idx; + query_opts.dcpid = lni->dcp_idx; + ret = qman_ceetm_query_mapping_shaper_tcfc(&query_opts, + &query_result); + if (ret) { + pr_err("Fail to get current LNI shaper setting\n"); + return -EINVAL; + } + + config_opts.cid = CEETM_COMMAND_LNI_SHAPER | lni->idx; + config_opts.dcpid = lni->dcp_idx; + config_opts.shaper_config.crtcr = (token_rate->whole << 13) | + (token_rate->fraction); + config_opts.shaper_config.crtbl = token_limit; + config_opts.shaper_config.cpl = query_result.shaper_query.cpl; + config_opts.shaper_config.ertcr = + query_result.shaper_query.ertcr; + config_opts.shaper_config.ertbl = + query_result.shaper_query.ertbl; + return qman_ceetm_configure_mapping_shaper_tcfc(&config_opts); + } else { + return 0; } +} +EXPORT_SYMBOL(qman_ceetm_lni_set_commit_rate); - query_opts.cid = CEETM_COMMAND_LNI_SHAPER | lni->idx; - query_opts.dcpid = lni->dcp_idx; - ret = qman_ceetm_query_mapping_shaper_tcfc(&query_opts, &query_result); +int qman_ceetm_lni_set_commit_rate_bps(struct qm_ceetm_lni *lni, + u64 bps, + u16 token_limit) +{ + struct qm_ceetm_rate token_rate; + int ret; + + ret = qman_ceetm_bps2tokenrate(bps, &token_rate, 0); if (ret) { - pr_err("Fail to get current LNI shaper setting\n"); + pr_err("Can not convert bps to token rate\n"); return -EINVAL; } - lni->cr_token_rate.whole = token_rate->whole; - lni->cr_token_rate.fraction = token_rate->fraction; - lni->cr_token_bucket_limit = token_limit; - config_opts.cid = CEETM_COMMAND_LNI_SHAPER | lni->idx; - config_opts.dcpid = lni->dcp_idx; - config_opts.shaper_config.crtcr = (token_rate->whole << 13) | - (token_rate->fraction); - config_opts.shaper_config.crtbl = token_limit; - config_opts.shaper_config.cpl = query_result.shaper_query.cpl; - config_opts.shaper_config.ertcr = query_result.shaper_query.ertcr; - config_opts.shaper_config.ertbl = query_result.shaper_query.ertbl; - return qman_ceetm_configure_mapping_shaper_tcfc(&config_opts); + return qman_ceetm_lni_set_commit_rate(lni, &token_rate, token_limit); } -EXPORT_SYMBOL(qman_ceetm_lni_set_commit_rate); +EXPORT_SYMBOL(qman_ceetm_lni_set_commit_rate_bps); int qman_ceetm_lni_get_commit_rate(struct qm_ceetm_lni *lni, struct qm_ceetm_rate *token_rate, @@ -3611,6 +3630,22 @@ int qman_ceetm_lni_get_commit_rate(struct qm_ceetm_lni *lni, } EXPORT_SYMBOL(qman_ceetm_lni_get_commit_rate); +int qman_ceetm_lni_get_commit_rate_bps(struct qm_ceetm_lni *lni, + u64 *bps, u16 *token_limit) +{ + struct qm_ceetm_rate token_rate; + int ret; + + ret = qman_ceetm_lni_get_commit_rate(lni, &token_rate, token_limit); + if (ret) { + pr_err("The LNI CR rate or limit is not available\n"); + return -EINVAL; + } + + return qman_ceetm_tokenrate2bps(&token_rate, bps, 0); +} +EXPORT_SYMBOL(qman_ceetm_lni_get_commit_rate_bps); + int qman_ceetm_lni_set_excess_rate(struct qm_ceetm_lni *lni, const struct qm_ceetm_rate *token_rate, u16 token_limit) @@ -3620,35 +3655,53 @@ int qman_ceetm_lni_set_excess_rate(struct qm_ceetm_lni *lni, struct qm_mcr_ceetm_mapping_shaper_tcfc_query query_result; int ret; - if (!lni->shaper_enable) { - pr_err("The LIN#%d is unshaped, cannot set ER rate\n", - lni->idx); - return -EINVAL; + lni->er_token_rate.whole = token_rate->whole; + lni->er_token_rate.fraction = token_rate->fraction; + lni->er_token_bucket_limit = token_limit; + if (lni->shaper_enable) { + query_opts.cid = CEETM_COMMAND_LNI_SHAPER | lni->idx; + query_opts.dcpid = lni->dcp_idx; + ret = qman_ceetm_query_mapping_shaper_tcfc(&query_opts, + &query_result); + if (ret) { + pr_err("Fail to get current LNI shaper setting\n"); + return -EINVAL; + } + + config_opts.cid = CEETM_COMMAND_LNI_SHAPER | lni->idx; + config_opts.dcpid = lni->dcp_idx; + config_opts.shaper_config.ertcr = + (token_rate->whole << 13) | (token_rate->fraction); + config_opts.shaper_config.ertbl = token_limit; + config_opts.shaper_config.cpl = query_result.shaper_query.cpl; + config_opts.shaper_config.crtcr = + query_result.shaper_query.crtcr; + config_opts.shaper_config.crtbl = + query_result.shaper_query.crtbl; + + return qman_ceetm_configure_mapping_shaper_tcfc(&config_opts); + } else { + return 0; } +} +EXPORT_SYMBOL(qman_ceetm_lni_set_excess_rate); - query_opts.cid = CEETM_COMMAND_LNI_SHAPER | lni->idx; - query_opts.dcpid = lni->dcp_idx; - ret = qman_ceetm_query_mapping_shaper_tcfc(&query_opts, &query_result); +int qman_ceetm_lni_set_excess_rate_bps(struct qm_ceetm_lni *lni, + u64 bps, + u16 token_limit) +{ + struct qm_ceetm_rate token_rate; + int ret; + + ret = qman_ceetm_bps2tokenrate(bps, &token_rate, 0); if (ret) { - pr_err("Fail to get current LNI shaper setting\n"); + pr_err("Can not convert bps to token rate\n"); return -EINVAL; } - lni->er_token_rate.whole = token_rate->whole; - lni->er_token_rate.fraction = token_rate->fraction; - lni->er_token_bucket_limit = token_limit; - config_opts.cid = CEETM_COMMAND_LNI_SHAPER | lni->idx; - config_opts.dcpid = lni->dcp_idx; - config_opts.shaper_config.ertcr = - (token_rate->whole << 13) | (token_rate->fraction); - config_opts.shaper_config.ertbl = token_limit; - config_opts.shaper_config.cpl = query_result.shaper_query.cpl; - config_opts.shaper_config.crtcr = query_result.shaper_query.crtcr; - config_opts.shaper_config.crtbl = query_result.shaper_query.crtbl; - - return qman_ceetm_configure_mapping_shaper_tcfc(&config_opts); + return qman_ceetm_lni_set_excess_rate(lni, &token_rate, token_limit); } -EXPORT_SYMBOL(qman_ceetm_lni_set_excess_rate); +EXPORT_SYMBOL(qman_ceetm_lni_set_excess_rate_bps); int qman_ceetm_lni_get_excess_rate(struct qm_ceetm_lni *lni, struct qm_ceetm_rate *token_rate, @@ -3672,6 +3725,22 @@ int qman_ceetm_lni_get_excess_rate(struct qm_ceetm_lni *lni, } EXPORT_SYMBOL(qman_ceetm_lni_get_excess_rate); +int qman_ceetm_lni_get_excess_rate_bps(struct qm_ceetm_lni *lni, + u64 *bps, u16 *token_limit) +{ + struct qm_ceetm_rate token_rate; + int ret; + + ret = qman_ceetm_lni_get_excess_rate(lni, &token_rate, token_limit); + if (ret) { + pr_err("The LNI ER rate or limit is not available\n"); + return -EINVAL; + } + + return qman_ceetm_tokenrate2bps(&token_rate, bps, 0); +} +EXPORT_SYMBOL(qman_ceetm_lni_get_excess_rate_bps); + #define QMAN_CEETM_LNITCFCC_CQ_LEVEL_SHIFT(n) ((15 - n) * 4) #define QMAN_CEETM_LNITCFCC_ENABLE 0x8 int qman_ceetm_lni_set_tcfcc(struct qm_ceetm_lni *lni, @@ -3893,11 +3962,6 @@ int qman_ceetm_channel_disable_shaper(struct qm_ceetm_channel *channel) struct qm_mcc_ceetm_mapping_shaper_tcfc_config config_opts; u8 map; - if (channel->shaper_enable == 0) { - pr_err("This channel shaper has been disabled\n"); - return -EINVAL; - } - query_opts.cid = CEETM_COMMAND_CHANNEL_MAPPING | channel->idx; query_opts.dcpid = channel->dcp_idx; @@ -3916,6 +3980,25 @@ int qman_ceetm_channel_disable_shaper(struct qm_ceetm_channel *channel) } EXPORT_SYMBOL(qman_ceetm_channel_disable_shaper); +int qman_ceetm_channel_is_shaper_enabled(struct qm_ceetm_channel *channel) +{ + struct qm_mcc_ceetm_mapping_shaper_tcfc_query query_opts; + struct qm_mcr_ceetm_mapping_shaper_tcfc_query query_result; + u8 map; + + query_opts.cid = CEETM_COMMAND_CHANNEL_MAPPING | channel->idx; + query_opts.dcpid = channel->dcp_idx; + + if (qman_ceetm_query_mapping_shaper_tcfc(&query_opts, &query_result)) { + pr_err("Can't query channel mapping\n"); + return -EINVAL; + } + + map = query_result.channel_mapping_query.map; + return (map & QMAN_CEETM_ENABLE_CHANNEL_SHAPER) ? 1 : 0; +} +EXPORT_SYMBOL(qman_ceetm_channel_is_shaper_enabled); + int qman_ceetm_channel_set_commit_rate(struct qm_ceetm_channel *channel, const struct qm_ceetm_rate *token_rate, u16 token_limit) @@ -3925,11 +4008,6 @@ int qman_ceetm_channel_set_commit_rate(struct qm_ceetm_channel *channel, struct qm_mcr_ceetm_mapping_shaper_tcfc_query query_result; int ret; - if (!channel->shaper_enable) { - pr_err("This channel is unshaped\n"); - return -EINVAL; - } - query_opts.cid = CEETM_COMMAND_CHANNEL_SHAPER | channel->idx; query_opts.dcpid = channel->dcp_idx; @@ -3954,6 +4032,22 @@ int qman_ceetm_channel_set_commit_rate(struct qm_ceetm_channel *channel, } EXPORT_SYMBOL(qman_ceetm_channel_set_commit_rate); +int qman_ceetm_channel_set_commit_rate_bps(struct qm_ceetm_channel *channel, + u64 bps, u16 token_limit) +{ + struct qm_ceetm_rate token_rate; + int ret; + + ret = qman_ceetm_bps2tokenrate(bps, &token_rate, 0); + if (ret) { + pr_err("Can not convert bps to token rate\n"); + return -EINVAL; + } + return qman_ceetm_channel_set_commit_rate(channel, &token_rate, + token_limit); +} +EXPORT_SYMBOL(qman_ceetm_channel_set_commit_rate_bps); + int qman_ceetm_channel_get_commit_rate(struct qm_ceetm_channel *channel, struct qm_ceetm_rate *token_rate, u16 *token_limit) @@ -3978,6 +4072,23 @@ int qman_ceetm_channel_get_commit_rate(struct qm_ceetm_channel *channel, } EXPORT_SYMBOL(qman_ceetm_channel_get_commit_rate); +int qman_ceetm_channel_get_commit_rate_bps(struct qm_ceetm_channel *channel, + u64 *bps, u16 *token_limit) +{ + struct qm_ceetm_rate token_rate; + int ret; + + ret = qman_ceetm_channel_get_commit_rate(channel, &token_rate, + token_limit); + if (ret) { + pr_err("The channel CR rate or limit is not available\n"); + return -EINVAL; + } + + return qman_ceetm_tokenrate2bps(&token_rate, bps, 0); +} +EXPORT_SYMBOL(qman_ceetm_channel_get_commit_rate_bps); + int qman_ceetm_channel_set_excess_rate(struct qm_ceetm_channel *channel, const struct qm_ceetm_rate *token_rate, u16 token_limit) @@ -3987,11 +4098,6 @@ int qman_ceetm_channel_set_excess_rate(struct qm_ceetm_channel *channel, struct qm_mcr_ceetm_mapping_shaper_tcfc_query query_result; int ret; - if (!channel->shaper_enable) { - pr_err("This channel is unshaped\n"); - return -EINVAL; - } - query_opts.cid = CEETM_COMMAND_CHANNEL_SHAPER | channel->idx; query_opts.dcpid = channel->dcp_idx; ret = qman_ceetm_query_mapping_shaper_tcfc(&query_opts, &query_result); @@ -4015,6 +4121,22 @@ int qman_ceetm_channel_set_excess_rate(struct qm_ceetm_channel *channel, } EXPORT_SYMBOL(qman_ceetm_channel_set_excess_rate); +int qman_ceetm_channel_set_excess_rate_bps(struct qm_ceetm_channel *channel, + u64 bps, u16 token_limit) +{ + struct qm_ceetm_rate token_rate; + int ret; + + ret = qman_ceetm_bps2tokenrate(bps, &token_rate, 0); + if (ret) { + pr_err("Can not convert bps to token rate\n"); + return -EINVAL; + } + return qman_ceetm_channel_set_excess_rate(channel, &token_rate, + token_limit); +} +EXPORT_SYMBOL(qman_ceetm_channel_set_excess_rate_bps); + int qman_ceetm_channel_get_excess_rate(struct qm_ceetm_channel *channel, struct qm_ceetm_rate *token_rate, u16 *token_limit) @@ -4038,6 +4160,23 @@ int qman_ceetm_channel_get_excess_rate(struct qm_ceetm_channel *channel, } EXPORT_SYMBOL(qman_ceetm_channel_get_excess_rate); +int qman_ceetm_channel_get_excess_rate_bps(struct qm_ceetm_channel *channel, + u64 *bps, u16 *token_limit) +{ + struct qm_ceetm_rate token_rate; + int ret; + + ret = qman_ceetm_channel_get_excess_rate(channel, &token_rate, + token_limit); + if (ret) { + pr_err("The channel ER rate or limit is not available\n"); + return -EINVAL; + } + + return qman_ceetm_tokenrate2bps(&token_rate, bps, 0); +} +EXPORT_SYMBOL(qman_ceetm_channel_get_excess_rate_bps); + int qman_ceetm_channel_set_weight(struct qm_ceetm_channel *channel, u16 token_limit) { @@ -4416,6 +4555,7 @@ int qman_ceetm_cq_release(struct qm_ceetm_cq *cq) return -EBUSY; } list_del(&cq->node); + qman_ceetm_drain_cq(cq); kfree(cq); return 0; } @@ -4549,6 +4689,38 @@ int qman_ceetm_ratio2wbfs(u32 numerator, } EXPORT_SYMBOL(qman_ceetm_ratio2wbfs); +int qman_ceetm_set_queue_weight_in_ratio(struct qm_ceetm_cq *cq, u32 ratio) +{ + struct qm_ceetm_weight_code weight_code; + + if (qman_ceetm_ratio2wbfs(ratio, 100, &weight_code, 0)) { + pr_err("Cannot get wbfs code for cq %x\n", cq->idx); + return -EINVAL; + } + return qman_ceetm_set_queue_weight(cq, &weight_code); +} +EXPORT_SYMBOL(qman_ceetm_set_queue_weight_in_ratio); + +int qman_ceetm_get_queue_weight_in_ratio(struct qm_ceetm_cq *cq, u32 *ratio) +{ + struct qm_ceetm_weight_code weight_code; + u32 n, d; + + if (qman_ceetm_get_queue_weight(cq, &weight_code)) { + pr_err("Cannot query the weight code for cq%x\n", cq->idx); + return -EINVAL; + } + + if (qman_ceetm_wbfs2ratio(&weight_code, &n, &d)) { + pr_err("Cannot get the ratio with wbfs code\n"); + return -EINVAL; + } + + *ratio = (n * (u32)100) / d; + return 0; +} +EXPORT_SYMBOL(qman_ceetm_get_queue_weight_in_ratio); + int qman_ceetm_cq_get_dequeue_statistics(struct qm_ceetm_cq *cq, u32 flags, u64 *frame_count, u64 *byte_count) { @@ -4576,6 +4748,23 @@ int qman_ceetm_cq_get_dequeue_statistics(struct qm_ceetm_cq *cq, u32 flags, } EXPORT_SYMBOL(qman_ceetm_cq_get_dequeue_statistics); +int qman_ceetm_drain_cq(struct qm_ceetm_cq *cq) +{ + struct qm_mcr_ceetm_cq_peek_pop_xsfdrread ppxr; + int ret; + + do { + ret = qman_ceetm_cq_peek_pop_xsfdrread(cq, 1, 0, &ppxr); + if (ret) { + pr_err("Failed to pop frame from CQ\n"); + return -EINVAL; + } + } while (!(ppxr.stat & 0x2)); + + return 0; +} +EXPORT_SYMBOL(qman_ceetm_drain_cq); + #define CEETM_LFQMT_LFQID_MSB 0xF00000 #define CEETM_LFQMT_LFQID_LSB 0x000FFF int qman_ceetm_lfq_claim(struct qm_ceetm_lfq **lfq, @@ -4963,7 +5152,7 @@ int qman_ceetm_cscn_dcp_get(struct qm_ceetm_ccg *ccg, *vcgid = query_result.cm_query.cdv; *cscn_enabled = (query_result.cm_query.cscn_targ_dcp >> - (7 - dcp_idx)) & 0x1; + dcp_idx) & 0x1; return 0; } EXPORT_SYMBOL(qman_ceetm_cscn_dcp_get); diff --git a/drivers/usb/gadget/fsl_udc_core.c b/drivers/usb/gadget/fsl_udc_core.c index 12dc799..638a345 100644 --- a/drivers/usb/gadget/fsl_udc_core.c +++ b/drivers/usb/gadget/fsl_udc_core.c @@ -1594,14 +1594,13 @@ static int process_ep_req(struct fsl_udc *udc, int pipe, struct fsl_req *curr_req) { struct ep_td_struct *curr_td; - int td_complete, actual, remaining_length, j, tmp; + int actual, remaining_length, j, tmp; int status = 0; int errors = 0; struct ep_queue_head *curr_qh = &udc->ep_qh[pipe]; int direction = pipe % 2; curr_td = curr_req->head; - td_complete = 0; actual = curr_req->req.length; for (j = 0; j < curr_req->dtd_count; j++) { @@ -1646,11 +1645,9 @@ static int process_ep_req(struct fsl_udc *udc, int pipe, status = -EPROTO; break; } else { - td_complete++; break; } } else { - td_complete++; VDBG("dTD transmitted successful"); } @@ -1693,7 +1690,7 @@ static void dtd_complete_irq(struct fsl_udc *udc) curr_ep = get_ep_by_pipe(udc, i); /* If the ep is configured */ - if (curr_ep->name == NULL) { + if (strncmp(curr_ep->name, "ep", 2)) { WARNING("Invalid EP?"); continue; } @@ -2404,10 +2401,12 @@ static int __init fsl_udc_probe(struct platform_device *pdev) usb_sys_regs = (void *)dr_regs + USB_DR_SYS_OFFSET; #endif +#ifdef CONFIG_ARCH_MXC /* Initialize USB clocks */ ret = fsl_udc_clk_init(pdev); if (ret < 0) goto err_iounmap_noclk; +#endif /* Read Device Controller Capability Parameters register */ dccparams = fsl_readl(&dr_regs->dccparams); @@ -2447,9 +2446,11 @@ static int __init fsl_udc_probe(struct platform_device *pdev) dr_controller_setup(udc_controller); } +#ifdef CONFIG_ARCH_MXC ret = fsl_udc_clk_finalize(pdev); if (ret) goto err_free_irq; +#endif /* Setup gadget structure */ udc_controller->gadget.ops = &fsl_gadget_ops; @@ -2513,7 +2514,9 @@ err_free_irq: err_iounmap: if (pdata->exit) pdata->exit(pdev); +#ifdef CONFIG_ARCH_MXC fsl_udc_clk_release(); +#endif err_iounmap_noclk: iounmap(dr_regs); err_release_mem_region: @@ -2541,8 +2544,9 @@ static int __exit fsl_udc_remove(struct platform_device *pdev) udc_controller->done = &done; usb_del_gadget_udc(&udc_controller->gadget); +#ifdef CONFIG_ARCH_MXC fsl_udc_clk_release(); - +#endif /* DR has been stopped in usb_gadget_unregister_driver() */ remove_proc_file(); @@ -2554,7 +2558,7 @@ static int __exit fsl_udc_remove(struct platform_device *pdev) dma_pool_destroy(udc_controller->td_pool); free_irq(udc_controller->irq, udc_controller); iounmap(dr_regs); - if (pdata->operating_mode == FSL_USB2_DR_DEVICE) + if (res && (pdata->operating_mode == FSL_USB2_DR_DEVICE)) release_mem_region(res->start, resource_size(res)); /* free udc --wait for the release() finished */ diff --git a/drivers/usb/gadget/fsl_usb2_udc.h b/drivers/usb/gadget/fsl_usb2_udc.h index e4c4c01..0f120be 100644 --- a/drivers/usb/gadget/fsl_usb2_udc.h +++ b/drivers/usb/gadget/fsl_usb2_udc.h @@ -598,18 +598,6 @@ struct platform_device; int fsl_udc_clk_init(struct platform_device *pdev); int fsl_udc_clk_finalize(struct platform_device *pdev); void fsl_udc_clk_release(void); -#else -static inline int fsl_udc_clk_init(struct platform_device *pdev) -{ - return 0; -} -static inline int fsl_udc_clk_finalize(struct platform_device *pdev) -{ - return 0; -} -static inline void fsl_udc_clk_release(void) -{ -} #endif #endif |