Anforderungen  |   Konzepte  |   Entwurf  |   Entwicklung  |   Qualitätssicherung  |   Lebenszyklus  |   Steuerung
 
 
 
 


Quelle  crypto4xx_reg_def.h   Sprache: C

 
/* SPDX-License-Identifier: GPL-2.0-or-later */
/*
 * AMCC SoC PPC4xx Crypto Driver
 *
 * Copyright (c) 2008 Applied Micro Circuits Corporation.
 * All rights reserved. James Hsiao <jhsiao@amcc.com>
 *
 * This filr defines the register set for Security Subsystem
 */


#ifndef __CRYPTO4XX_REG_DEF_H__
#define __CRYPTO4XX_REG_DEF_H__

/* CRYPTO4XX Register offset */
#define CRYPTO4XX_DESCRIPTOR   0x00000000
#define CRYPTO4XX_CTRL_STAT   0x00000000
#define CRYPTO4XX_SOURCE   0x00000004
#define CRYPTO4XX_DEST    0x00000008
#define CRYPTO4XX_SA    0x0000000C
#define CRYPTO4XX_SA_LENGTH   0x00000010
#define CRYPTO4XX_LENGTH   0x00000014

#define CRYPTO4XX_PE_DMA_CFG   0x00000040
#define CRYPTO4XX_PE_DMA_STAT   0x00000044
#define CRYPTO4XX_PDR_BASE   0x00000048
#define CRYPTO4XX_RDR_BASE   0x0000004c
#define CRYPTO4XX_RING_SIZE   0x00000050
#define CRYPTO4XX_RING_CTRL   0x00000054
#define CRYPTO4XX_INT_RING_STAT   0x00000058
#define CRYPTO4XX_EXT_RING_STAT   0x0000005c
#define CRYPTO4XX_IO_THRESHOLD   0x00000060
#define CRYPTO4XX_GATH_RING_BASE  0x00000064
#define CRYPTO4XX_SCAT_RING_BASE  0x00000068
#define CRYPTO4XX_PART_RING_SIZE  0x0000006c
#define CRYPTO4XX_PART_RING_CFG          0x00000070

#define CRYPTO4XX_PDR_BASE_UADDR  0x00000080
#define CRYPTO4XX_RDR_BASE_UADDR  0x00000084
#define CRYPTO4XX_PKT_SRC_UADDR   0x00000088
#define CRYPTO4XX_PKT_DEST_UADDR  0x0000008c
#define CRYPTO4XX_SA_UADDR   0x00000090
#define CRYPTO4XX_GATH_RING_BASE_UADDR  0x000000A0
#define CRYPTO4XX_SCAT_RING_BASE_UADDR  0x000000A4

#define CRYPTO4XX_SEQ_RD   0x00000408
#define CRYPTO4XX_SEQ_MASK_RD   0x0000040C

#define CRYPTO4XX_SA_CMD_0   0x00010600
#define CRYPTO4XX_SA_CMD_1   0x00010604

#define CRYPTO4XX_STATE_PTR   0x000106dc
#define CRYPTO4XX_STATE_IV   0x00010700
#define CRYPTO4XX_STATE_HASH_BYTE_CNT_0  0x00010710
#define CRYPTO4XX_STATE_HASH_BYTE_CNT_1  0x00010714

#define CRYPTO4XX_STATE_IDIGEST_0  0x00010718
#define CRYPTO4XX_STATE_IDIGEST_1  0x0001071c

#define CRYPTO4XX_DATA_IN   0x00018000
#define CRYPTO4XX_DATA_OUT   0x0001c000

#define CRYPTO4XX_INT_UNMASK_STAT  0x000500a0
#define CRYPTO4XX_INT_MASK_STAT   0x000500a4
#define CRYPTO4XX_INT_CLR   0x000500a4
#define CRYPTO4XX_INT_EN   0x000500a8

#define CRYPTO4XX_INT_PKA   0x00000002
#define CRYPTO4XX_INT_PDR_DONE   0x00008000
#define CRYPTO4XX_INT_MA_WR_ERR   0x00020000
#define CRYPTO4XX_INT_MA_RD_ERR   0x00010000
#define CRYPTO4XX_INT_PE_ERR   0x00000200
#define CRYPTO4XX_INT_USER_DMA_ERR  0x00000040
#define CRYPTO4XX_INT_SLAVE_ERR   0x00000010
#define CRYPTO4XX_INT_MASTER_ERR  0x00000008
#define CRYPTO4XX_INT_ERROR   0x00030258

#define CRYPTO4XX_INT_CFG   0x000500ac
#define CRYPTO4XX_INT_DESCR_RD   0x000500b0
#define CRYPTO4XX_INT_DESCR_CNT   0x000500b4
#define CRYPTO4XX_INT_TIMEOUT_CNT  0x000500b8

#define CRYPTO4XX_DEVICE_CTRL   0x00060080
#define CRYPTO4XX_DEVICE_ID   0x00060084
#define CRYPTO4XX_DEVICE_INFO   0x00060088
#define CRYPTO4XX_DMA_USER_SRC   0x00060094
#define CRYPTO4XX_DMA_USER_DEST   0x00060098
#define CRYPTO4XX_DMA_USER_CMD   0x0006009C

#define CRYPTO4XX_DMA_CFG          0x000600d4
#define CRYPTO4XX_BYTE_ORDER_CFG   0x000600d8
#define CRYPTO4XX_ENDIAN_CFG   0x000600d8

#define CRYPTO4XX_PRNG_STAT   0x00070000
#define CRYPTO4XX_PRNG_STAT_BUSY  0x1
#define CRYPTO4XX_PRNG_CTRL   0x00070004
#define CRYPTO4XX_PRNG_SEED_L   0x00070008
#define CRYPTO4XX_PRNG_SEED_H   0x0007000c

#define CRYPTO4XX_PRNG_RES_0   0x00070020
#define CRYPTO4XX_PRNG_RES_1   0x00070024
#define CRYPTO4XX_PRNG_RES_2   0x00070028
#define CRYPTO4XX_PRNG_RES_3   0x0007002C

#define CRYPTO4XX_PRNG_LFSR_L   0x00070030
#define CRYPTO4XX_PRNG_LFSR_H   0x00070034

/*
 * Initialize CRYPTO ENGINE registers, and memory bases.
 */

#define PPC4XX_PDR_POLL    0x3ff
#define PPC4XX_OUTPUT_THRESHOLD   2
#define PPC4XX_INPUT_THRESHOLD   2
#define PPC4XX_PD_SIZE    6
#define PPC4XX_CTX_DONE_INT   0x2000
#define PPC4XX_PD_DONE_INT   0x8000
#define PPC4XX_TMO_ERR_INT   0x40000
#define PPC4XX_BYTE_ORDER   0x22222
#define PPC4XX_INTERRUPT_CLR   0x3ffff
#define PPC4XX_PRNG_CTRL_AUTO_EN  0x3
#define PPC4XX_DC_3DES_EN   1
#define PPC4XX_TRNG_EN    0x00020000
#define PPC4XX_INT_DESCR_CNT   7
#define PPC4XX_INT_TIMEOUT_CNT   0
#define PPC4XX_INT_TIMEOUT_CNT_REVB  0x3FF
#define PPC4XX_INT_CFG    1
/*
 * all follow define are ad hoc
 */

#define PPC4XX_RING_RETRY   100
#define PPC4XX_RING_POLL   100
#define PPC4XX_SDR_SIZE    PPC4XX_NUM_SD
#define PPC4XX_GDR_SIZE    PPC4XX_NUM_GD

/*
  * Generic Security Association (SA) with all possible fields. These will
 * never likely used except for reference purpose. These structure format
 * can be not changed as the hardware expects them to be layout as defined.
 * Field can be removed or reduced but ordering can not be changed.
 */

#define CRYPTO4XX_DMA_CFG_OFFSET  0x40
union ce_pe_dma_cfg {
 struct {
  u32 rsv:7;
  u32 dir_host:1;
  u32 rsv1:2;
  u32 bo_td_en:1;
  u32 dis_pdr_upd:1;
  u32 bo_sgpd_en:1;
  u32 bo_data_en:1;
  u32 bo_sa_en:1;
  u32 bo_pd_en:1;
  u32 rsv2:4;
  u32 dynamic_sa_en:1;
  u32 pdr_mode:2;
  u32 pe_mode:1;
  u32 rsv3:5;
  u32 reset_sg:1;
  u32 reset_pdr:1;
  u32 reset_pe:1;
 } bf;
    u32 w;
} __attribute__((packed));

#define CRYPTO4XX_PDR_BASE_OFFSET  0x48
#define CRYPTO4XX_RDR_BASE_OFFSET  0x4c
#define CRYPTO4XX_RING_SIZE_OFFSET  0x50
union ce_ring_size {
 struct {
  u32 ring_offset:16;
  u32 rsv:6;
  u32 ring_size:10;
 } bf;
    u32 w;
} __attribute__((packed));

#define CRYPTO4XX_RING_CONTROL_OFFSET  0x54
union ce_ring_control {
 struct {
  u32 continuous:1;
  u32 rsv:5;
  u32 ring_retry_divisor:10;
  u32 rsv1:4;
  u32 ring_poll_divisor:10;
 } bf;
    u32 w;
} __attribute__((packed));

#define CRYPTO4XX_IO_THRESHOLD_OFFSET  0x60
union ce_io_threshold {
 struct {
  u32 rsv:6;
  u32 output_threshold:10;
  u32 rsv1:6;
  u32 input_threshold:10;
 } bf;
    u32 w;
} __attribute__((packed));

#define CRYPTO4XX_GATHER_RING_BASE_OFFSET 0x64
#define CRYPTO4XX_SCATTER_RING_BASE_OFFSET 0x68

union ce_part_ring_size  {
 struct {
  u32 sdr_size:16;
  u32 gdr_size:16;
 } bf;
    u32 w;
} __attribute__((packed));

#define MAX_BURST_SIZE_32   0
#define MAX_BURST_SIZE_64   1
#define MAX_BURST_SIZE_128   2
#define MAX_BURST_SIZE_256   3

/* gather descriptor control length */
struct gd_ctl_len {
 u32 len:16;
 u32 rsv:14;
 u32 done:1;
 u32 ready:1;
} __attribute__((packed));

struct ce_gd {
 u32 ptr;
 struct gd_ctl_len ctl_len;
} __attribute__((packed));

struct sd_ctl {
 u32 ctl:30;
 u32 done:1;
 u32 rdy:1;
} __attribute__((packed));

struct ce_sd {
    u32 ptr;
 struct sd_ctl ctl;
} __attribute__((packed));

#define PD_PAD_CTL_32 0x10
#define PD_PAD_CTL_64 0x20
#define PD_PAD_CTL_128 0x40
#define PD_PAD_CTL_256 0x80
union ce_pd_ctl {
 struct {
  u32 pd_pad_ctl:8;
  u32 status:8;
  u32 next_hdr:8;
  u32 rsv:2;
  u32 cached_sa:1;
  u32 hash_final:1;
  u32 init_arc4:1;
  u32 rsv1:1;
  u32 pe_done:1;
  u32 host_ready:1;
 } bf;
 u32 w;
} __attribute__((packed));
#define PD_CTL_HASH_FINAL BIT(4)
#define PD_CTL_PE_DONE  BIT(1)
#define PD_CTL_HOST_READY BIT(0)

union ce_pd_ctl_len {
 struct {
  u32 bypass:8;
  u32 pe_done:1;
  u32 host_ready:1;
  u32 rsv:2;
  u32 pkt_len:20;
 } bf;
 u32 w;
} __attribute__((packed));

struct ce_pd {
 union ce_pd_ctl   pd_ctl;
 u32 src;
 u32 dest;
 u32 sa;                 /* get from ctx->sa_dma_addr */
 u32 sa_len;             /* only if dynamic sa is used */
 union ce_pd_ctl_len pd_ctl_len;

} __attribute__((packed));
#endif

Messung V0.5
C=97 H=100 G=98

¤ Dauer der Verarbeitung: 0.11 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.






                                                                                                                                                                                                                                                                                                                                                                                                     


Neuigkeiten

     Aktuelles
     Motto des Tages

Software

     Produkte
     Quellcodebibliothek

Aktivitäten

     Artikel über Sicherheit
     Anleitung zur Aktivierung von SSL

Muße

     Gedichte
     Musik
     Bilder

Jenseits des Üblichen ....

Besucherstatistik

Besucherstatistik

Monitoring

Montastic status badge