rename target/linux/generic-2.6 to generic
[15.05/openwrt.git] / target / linux / generic / files / crypto / ocf / talitos / talitos_soft.h
diff --git a/target/linux/generic/files/crypto/ocf/talitos/talitos_soft.h b/target/linux/generic/files/crypto/ocf/talitos/talitos_soft.h
new file mode 100644 (file)
index 0000000..79efdbd
--- /dev/null
@@ -0,0 +1,77 @@
+/*
+ * Freescale SEC data structures for integration with ocf-linux
+ *
+ * Copyright (c) 2006 Freescale Semiconductor, Inc.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. 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.
+ * 3. The name of the author may not be used to endorse or promote products
+ *    derived from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``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 THE AUTHOR 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.
+ */
+
+/*
+ * paired descriptor and associated crypto operation
+ */
+struct desc_cryptop_pair {
+       struct talitos_desc     cf_desc;        /* descriptor ptr */
+       struct cryptop          *cf_crp;        /* cryptop ptr */
+};
+
+/*
+ * Holds data specific to a single talitos device.
+ */
+struct talitos_softc {
+       softc_device_decl       sc_cdev;
+       struct platform_device  *sc_dev;        /* device backpointer */
+       ocf_iomem_t             sc_base_addr;
+       int                     sc_irq;
+       int                     sc_num;         /* if we have multiple chips */
+       int32_t                 sc_cid;         /* crypto tag */
+       u64                     sc_chiprev;     /* major/minor chip revision */
+       int                     sc_nsessions;
+       struct talitos_session  *sc_sessions;
+       int                     sc_num_channels;/* number of crypto channels */
+       int                     sc_chfifo_len;  /* channel fetch fifo len */
+       int                     sc_exec_units;  /* execution units mask */
+       int                     sc_desc_types;  /* descriptor types mask */
+       /*
+        * mutual exclusion for intra-channel resources, e.g. fetch fifos
+        * the last entry is a meta-channel lock used by the channel scheduler
+        */
+       spinlock_t              *sc_chnfifolock;
+       /* sc_chnlastalgo contains last algorithm for that channel */
+       int                     *sc_chnlastalg;
+       /* sc_chnfifo holds pending descriptor--crypto operation pairs */
+       struct desc_cryptop_pair        **sc_chnfifo;
+};
+
+struct talitos_session {
+       u_int32_t       ses_used;
+       u_int32_t       ses_klen;               /* key length in bits */
+       u_int32_t       ses_key[8];             /* DES/3DES/AES key */
+       u_int32_t       ses_hmac[5];            /* hmac inner state */
+       u_int32_t       ses_hmac_len;           /* hmac length */
+       u_int32_t       ses_iv[4];              /* DES/3DES/AES iv */
+       u_int32_t       ses_mlen;               /* desired hash result len (12=ipsec or 16) */
+};
+
+#define        TALITOS_SESSION(sid)    ((sid) & 0x0fffffff)
+#define        TALITOS_SID(crd, sesn)  (((crd) << 28) | ((sesn) & 0x0fffffff))