cregit-Linux how code gets into the kernel

Release 4.10 drivers/crypto/bfin_crc.h

Directory: drivers/crypto
/*
 * bfin_crc.h - interface to Blackfin CRC controllers
 *
 * Copyright 2012 Analog Devices Inc.
 *
 * Licensed under the GPL-2 or later.
 */

#ifndef __BFIN_CRC_H__

#define __BFIN_CRC_H__

/* Function driver which use hardware crc must initialize the structure */

struct crc_info {
	/* Input data address */
	
unsigned char *in_addr;
	/* Output data address */
	
unsigned char *out_addr;
	/* Input or output bytes */
	
unsigned long datasize;
	union {
	/* CRC to compare with that of input buffer */
	
unsigned long crc_compare;
	/* Value to compare with input data */
	
unsigned long val_verify;
	/* Value to fill */
	
unsigned long val_fill;
	};
	/* Value to program the 32b CRC Polynomial */
	
unsigned long crc_poly;
	union {
	/* CRC calculated from the input data */
	
unsigned long crc_result;
	/* First failed position to verify input data */
	
unsigned long pos_verify;
	};
	/* CRC mirror flags */
	
unsigned int bitmirr:1;
	
unsigned int bytmirr:1;
	
unsigned int w16swp:1;
	
unsigned int fdsel:1;
	
unsigned int rsltmirr:1;
	
unsigned int polymirr:1;
	
unsigned int cmpmirr:1;
};

/* Userspace interface */

#define CRC_IOC_MAGIC		'C'

#define CRC_IOC_CALC_CRC	_IOWR('C', 0x01, unsigned int)

#define CRC_IOC_MEMCPY_CRC	_IOWR('C', 0x02, unsigned int)

#define CRC_IOC_VERIFY_VAL	_IOWR('C', 0x03, unsigned int)

#define CRC_IOC_FILL_VAL	_IOWR('C', 0x04, unsigned int)


#ifdef __KERNEL__

#include <linux/types.h>
#include <linux/spinlock.h>
#include <linux/miscdevice.h>


struct crc_register {
	
u32 control;
	
u32 datacnt;
	
u32 datacntrld;
	
u32 __pad_1[2];
	
u32 compare;
	
u32 fillval;
	
u32 datafifo;
	
u32 intren;
	
u32 intrenset;
	
u32 intrenclr;
	
u32 poly;
	
u32 __pad_2[4];
	
u32 status;
	
u32 datacntcap;
	
u32 __pad_3;
	
u32 result;
	
u32 curresult;
	
u32 __pad_4[3];
	
u32 revid;
};

/* CRC_STATUS Masks */

#define CMPERR			0x00000002	
/* Compare error */

#define DCNTEXP			0x00000010	
/* datacnt register expired */

#define IBR			0x00010000	
/* Input buffer ready */

#define OBR			0x00020000	
/* Output buffer ready */

#define IRR			0x00040000	
/* Immediate result readt */

#define LUTDONE			0x00080000	
/* Look-up table generation done */

#define FSTAT			0x00700000	
/* FIFO status */

#define MAX_FIFO		4		
/* Max fifo size */

/* CRC_CONTROL Masks */

#define BLKEN			0x00000001	
/* Block enable */

#define OPMODE			0x000000F0	
/* Operation mode */

#define OPMODE_OFFSET		4		
/* Operation mode mask offset*/

#define MODE_DMACPY_CRC		1		
/* MTM CRC compute and compare */

#define MODE_DATA_FILL		2		
/* MTM data fill */

#define MODE_CALC_CRC		3		
/* MSM CRC compute and compare */

#define MODE_DATA_VERIFY	4		
/* MSM data verify */

#define AUTOCLRZ		0x00000100	
/* Auto clear to zero */

#define AUTOCLRF		0x00000200	
/* Auto clear to one */

#define OBRSTALL		0x00001000	
/* Stall on output buffer ready */

#define IRRSTALL		0x00002000	
/* Stall on immediate result ready */

#define BITMIRR			0x00010000	
/* Mirror bits within each byte of 32-bit input data */

#define BITMIRR_OFFSET		16		
/* Mirror bits offset */

#define BYTMIRR			0x00020000	
/* Mirror bytes of 32-bit input data */

#define BYTMIRR_OFFSET		17		
/* Mirror bytes offset */

#define W16SWP			0x00040000	
/* Mirror uppper and lower 16-bit word of 32-bit input data */

#define W16SWP_OFFSET		18		
/* Mirror 16-bit word offset */

#define FDSEL			0x00080000	
/* FIFO is written after input data is mirrored */

#define FDSEL_OFFSET		19		
/* Mirror FIFO offset */

#define RSLTMIRR		0x00100000	
/* CRC result registers are mirrored. */

#define RSLTMIRR_OFFSET		20		
/* Mirror CRC result offset. */

#define POLYMIRR		0x00200000	
/* CRC poly register is mirrored. */

#define POLYMIRR_OFFSET		21		
/* Mirror CRC poly offset. */

#define CMPMIRR			0x00400000	
/* CRC compare register is mirrored. */

#define CMPMIRR_OFFSET		22		
/* Mirror CRC compare offset. */

/* CRC_INTREN Masks */

#define CMPERRI 		0x02		
/* CRC_ERROR_INTR */

#define DCNTEXPI 		0x10		
/* CRC_STATUS_INTR */

#endif

#endif

Overall Contributors

PersonTokensPropCommitsCommitProp
sonic zhangsonic zhang397100.00%1100.00%
Total397100.00%1100.00%
Directory: drivers/crypto
Information contained on this website is for historical information purposes only and does not indicate or represent copyright ownership.