Root/target/linux/generic/files/crypto/ocf/talitos/talitos_soft.h

1/*
2 * Freescale SEC data structures for integration with ocf-linux
3 *
4 * Copyright (c) 2006 Freescale Semiconductor, Inc.
5 *
6 * Redistribution and use in source and binary forms, with or without
7 * modification, are permitted provided that the following conditions
8 * are met:
9 *
10 * 1. Redistributions of source code must retain the above copyright
11 * notice, this list of conditions and the following disclaimer.
12 * 2. Redistributions in binary form must reproduce the above copyright
13 * notice, this list of conditions and the following disclaimer in the
14 * documentation and/or other materials provided with the distribution.
15 * 3. The name of the author may not be used to endorse or promote products
16 * derived from this software without specific prior written permission.
17 *
18 * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
19 * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
20 * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
21 * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
22 * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
23 * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
24 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
25 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
26 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
27 * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
28 */
29
30/*
31 * paired descriptor and associated crypto operation
32 */
33struct desc_cryptop_pair {
34    struct talitos_desc cf_desc; /* descriptor ptr */
35    struct cryptop *cf_crp; /* cryptop ptr */
36};
37
38/*
39 * Holds data specific to a single talitos device.
40 */
41struct talitos_softc {
42    softc_device_decl sc_cdev;
43    struct platform_device *sc_dev; /* device backpointer */
44    ocf_iomem_t sc_base_addr;
45    int sc_irq;
46    int sc_num; /* if we have multiple chips */
47    int32_t sc_cid; /* crypto tag */
48    u64 sc_chiprev; /* major/minor chip revision */
49    int sc_nsessions;
50    struct talitos_session *sc_sessions;
51    int sc_num_channels;/* number of crypto channels */
52    int sc_chfifo_len; /* channel fetch fifo len */
53    int sc_exec_units; /* execution units mask */
54    int sc_desc_types; /* descriptor types mask */
55    /*
56     * mutual exclusion for intra-channel resources, e.g. fetch fifos
57     * the last entry is a meta-channel lock used by the channel scheduler
58     */
59    spinlock_t *sc_chnfifolock;
60    /* sc_chnlastalgo contains last algorithm for that channel */
61    int *sc_chnlastalg;
62    /* sc_chnfifo holds pending descriptor--crypto operation pairs */
63    struct desc_cryptop_pair **sc_chnfifo;
64};
65
66struct talitos_session {
67    u_int32_t ses_used;
68    u_int32_t ses_klen; /* key length in bits */
69    u_int32_t ses_key[8]; /* DES/3DES/AES key */
70    u_int32_t ses_hmac[5]; /* hmac inner state */
71    u_int32_t ses_hmac_len; /* hmac length */
72    u_int32_t ses_mlen; /* desired hash result len (12=ipsec or 16) */
73};
74
75#define TALITOS_SESSION(sid) ((sid) & 0x0fffffff)
76#define TALITOS_SID(crd, sesn) (((crd) << 28) | ((sesn) & 0x0fffffff))
77

Archive Download this file



interactive