xref: /openbmc/linux/drivers/misc/genwqe/genwqe_driver.h (revision 75bf465f0bc33e9b776a46d6a1b9b990f5fb7c37)
1*eb3ae0aaSThomas Gleixner /* SPDX-License-Identifier: GPL-2.0-only */
212eb4683SFrank Haverkamp #ifndef __GENWQE_DRIVER_H__
312eb4683SFrank Haverkamp #define __GENWQE_DRIVER_H__
412eb4683SFrank Haverkamp 
512eb4683SFrank Haverkamp /**
612eb4683SFrank Haverkamp  * IBM Accelerator Family 'GenWQE'
712eb4683SFrank Haverkamp  *
812eb4683SFrank Haverkamp  * (C) Copyright IBM Corp. 2013
912eb4683SFrank Haverkamp  *
1012eb4683SFrank Haverkamp  * Author: Frank Haverkamp <haver@linux.vnet.ibm.com>
1112eb4683SFrank Haverkamp  * Author: Joerg-Stephan Vogt <jsvogt@de.ibm.com>
1226d8f6f1SFrank Haverkamp  * Author: Michael Jung <mijung@gmx.net>
1312eb4683SFrank Haverkamp  * Author: Michael Ruettger <michael@ibmra.de>
1412eb4683SFrank Haverkamp  */
1512eb4683SFrank Haverkamp 
1612eb4683SFrank Haverkamp #include <linux/types.h>
1712eb4683SFrank Haverkamp #include <linux/stddef.h>
1812eb4683SFrank Haverkamp #include <linux/cdev.h>
1912eb4683SFrank Haverkamp #include <linux/list.h>
2012eb4683SFrank Haverkamp #include <linux/kthread.h>
2112eb4683SFrank Haverkamp #include <linux/scatterlist.h>
2212eb4683SFrank Haverkamp #include <linux/iommu.h>
2312eb4683SFrank Haverkamp #include <linux/spinlock.h>
2412eb4683SFrank Haverkamp #include <linux/mutex.h>
2512eb4683SFrank Haverkamp #include <linux/platform_device.h>
2665861ab4SFrank Haverkamp #include <linux/printk.h>
2712eb4683SFrank Haverkamp 
2858d66ce7SFrank Haverkamp #include <asm/byteorder.h>
2912eb4683SFrank Haverkamp #include <linux/genwqe/genwqe_card.h>
3012eb4683SFrank Haverkamp 
3164df2ec5SFrank Haverkamp #define DRV_VERSION		"2.0.25"
3212eb4683SFrank Haverkamp 
3312eb4683SFrank Haverkamp /*
3412eb4683SFrank Haverkamp  * Static minor number assignement, until we decide/implement
3512eb4683SFrank Haverkamp  * something dynamic.
3612eb4683SFrank Haverkamp  */
3712eb4683SFrank Haverkamp #define GENWQE_MAX_MINOR	128 /* up to 128 possible genwqe devices */
3812eb4683SFrank Haverkamp 
3912eb4683SFrank Haverkamp /**
4012eb4683SFrank Haverkamp  * genwqe_requ_alloc() - Allocate a new DDCB execution request
4112eb4683SFrank Haverkamp  *
4212eb4683SFrank Haverkamp  * This data structure contains the user visiable fields of the DDCB
4312eb4683SFrank Haverkamp  * to be executed.
4412eb4683SFrank Haverkamp  *
4512eb4683SFrank Haverkamp  * Return: ptr to genwqe_ddcb_cmd data structure
4612eb4683SFrank Haverkamp  */
4712eb4683SFrank Haverkamp struct genwqe_ddcb_cmd *ddcb_requ_alloc(void);
4812eb4683SFrank Haverkamp 
4912eb4683SFrank Haverkamp /**
5012eb4683SFrank Haverkamp  * ddcb_requ_free() - Free DDCB execution request.
5112eb4683SFrank Haverkamp  * @req:       ptr to genwqe_ddcb_cmd data structure.
5212eb4683SFrank Haverkamp  */
5312eb4683SFrank Haverkamp void ddcb_requ_free(struct genwqe_ddcb_cmd *req);
5412eb4683SFrank Haverkamp 
5512eb4683SFrank Haverkamp u32  genwqe_crc32(u8 *buff, size_t len, u32 init);
5612eb4683SFrank Haverkamp 
genwqe_hexdump(struct pci_dev * pci_dev,const void * buff,unsigned int size)5712eb4683SFrank Haverkamp static inline void genwqe_hexdump(struct pci_dev *pci_dev,
5812eb4683SFrank Haverkamp 				  const void *buff, unsigned int size)
5912eb4683SFrank Haverkamp {
6012eb4683SFrank Haverkamp 	char prefix[32];
6112eb4683SFrank Haverkamp 
6212eb4683SFrank Haverkamp 	scnprintf(prefix, sizeof(prefix), "%s %s: ",
6312eb4683SFrank Haverkamp 		  GENWQE_DEVNAME, pci_name(pci_dev));
6465861ab4SFrank Haverkamp 
6565861ab4SFrank Haverkamp 	print_hex_dump_debug(prefix, DUMP_PREFIX_OFFSET, 16, 1, buff,
6665861ab4SFrank Haverkamp 			     size, true);
6712eb4683SFrank Haverkamp }
6812eb4683SFrank Haverkamp 
6912eb4683SFrank Haverkamp #endif	/* __GENWQE_DRIVER_H__ */
70