[kernel] ocf: move all stuff into files, and fix build error on .25
[openwrt/svn-archive/archive.git] / target / linux / generic-2.6 / 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 */
33 struct 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 */
41 struct 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
66 struct 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_iv[4]; /* DES/3DES/AES iv */
73 u_int32_t ses_mlen; /* desired hash result len (12=ipsec or 16) */
74 };
75
76 #define TALITOS_SESSION(sid) ((sid) & 0x0fffffff)
77 #define TALITOS_SID(crd, sesn) (((crd) << 28) | ((sesn) & 0x0fffffff))