Quellcodebibliothek Statistik Leitseite products/Sources/formale Sprachen/C/Linux/drivers/crypto/caam/   (Open Source Betriebssystem Version 6.17.9©)  Datei vom 24.10.2025 mit Größe 2 kB image not shown  

Quelle  sg_sw_sec4.h   Sprache: C

 
/* SPDX-License-Identifier: GPL-2.0 */
/*
 * CAAM/SEC 4.x functions for using scatterlists in caam driver
 *
 * Copyright 2008-2011 Freescale Semiconductor, Inc.
 *
 */


#ifndef _SG_SW_SEC4_H_
#define _SG_SW_SEC4_H_

#include "ctrl.h"
#include "regs.h"
#include "sg_sw_qm2.h"
#include <soc/fsl/dpaa2-fd.h>

struct sec4_sg_entry {
 u64 ptr;
 u32 len;
 u32 bpid_offset;
};

/*
 * convert single dma address to h/w link table format
 */

static inline void dma_to_sec4_sg_one(struct sec4_sg_entry *sec4_sg_ptr,
          dma_addr_t dma, u32 len, u16 offset)
{
 if (caam_dpaa2) {
  dma_to_qm_sg_one((struct dpaa2_sg_entry *)sec4_sg_ptr, dma, len,
     offset);
 } else {
  sec4_sg_ptr->ptr = cpu_to_caam_dma64(dma);
  sec4_sg_ptr->len = cpu_to_caam32(len);
  sec4_sg_ptr->bpid_offset = cpu_to_caam32(offset &
        SEC4_SG_OFFSET_MASK);
 }

 print_hex_dump_debug("sec4_sg_ptr@: ", DUMP_PREFIX_ADDRESS, 16, 4,
        sec4_sg_ptr, sizeof(struct sec4_sg_entry), 1);
}

/*
 * convert scatterlist to h/w link table format
 * but does not have final bit; instead, returns last entry
 */

static inline struct sec4_sg_entry *
sg_to_sec4_sg(struct scatterlist *sg, int len,
       struct sec4_sg_entry *sec4_sg_ptr, u16 offset)
{
 int ent_len;

 while (len) {
  ent_len = min_t(int, sg_dma_len(sg), len);

  dma_to_sec4_sg_one(sec4_sg_ptr, sg_dma_address(sg), ent_len,
       offset);
  sec4_sg_ptr++;
  sg = sg_next(sg);
  len -= ent_len;
 }
 return sec4_sg_ptr - 1;
}

static inline void sg_to_sec4_set_last(struct sec4_sg_entry *sec4_sg_ptr)
{
 if (caam_dpaa2)
  dpaa2_sg_set_final((struct dpaa2_sg_entry *)sec4_sg_ptr, true);
 else
  sec4_sg_ptr->len |= cpu_to_caam32(SEC4_SG_LEN_FIN);
}

/*
 * convert scatterlist to h/w link table format
 * scatterlist must have been previously dma mapped
 */

static inline void sg_to_sec4_sg_last(struct scatterlist *sg, int len,
          struct sec4_sg_entry *sec4_sg_ptr,
          u16 offset)
{
 sec4_sg_ptr = sg_to_sec4_sg(sg, len, sec4_sg_ptr, offset);
 sg_to_sec4_set_last(sec4_sg_ptr);
}

#endif /* _SG_SW_SEC4_H_ */

Messung V0.5
C=94 H=95 G=94

¤ Dauer der Verarbeitung: 0.18 Sekunden  (vorverarbeitet)  ¤

*© Formatika GbR, Deutschland






Wurzel

Suchen

Beweissystem der NASA

Beweissystem Isabelle

NIST Cobol Testsuite

Cephes Mathematical Library

Wiener Entwicklungsmethode

Haftungshinweis

Die Informationen auf dieser Webseite wurden nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit, noch Qualität der bereit gestellten Informationen zugesichert.

Bemerkung:

Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.