xref: /openbmc/linux/drivers/misc/genwqe/genwqe_driver.h (revision 26d8f6f15112b8b0fbff360c360e8c42bf2bc370)
112eb4683SFrank Haverkamp #ifndef __GENWQE_DRIVER_H__
212eb4683SFrank Haverkamp #define __GENWQE_DRIVER_H__
312eb4683SFrank Haverkamp 
412eb4683SFrank Haverkamp /**
512eb4683SFrank Haverkamp  * IBM Accelerator Family 'GenWQE'
612eb4683SFrank Haverkamp  *
712eb4683SFrank Haverkamp  * (C) Copyright IBM Corp. 2013
812eb4683SFrank Haverkamp  *
912eb4683SFrank Haverkamp  * Author: Frank Haverkamp <haver@linux.vnet.ibm.com>
1012eb4683SFrank Haverkamp  * Author: Joerg-Stephan Vogt <jsvogt@de.ibm.com>
11*26d8f6f1SFrank Haverkamp  * Author: Michael Jung <mijung@gmx.net>
1212eb4683SFrank Haverkamp  * Author: Michael Ruettger <michael@ibmra.de>
1312eb4683SFrank Haverkamp  *
1412eb4683SFrank Haverkamp  * This program is free software; you can redistribute it and/or modify
1512eb4683SFrank Haverkamp  * it under the terms of the GNU General Public License (version 2 only)
1612eb4683SFrank Haverkamp  * as published by the Free Software Foundation.
1712eb4683SFrank Haverkamp  *
1812eb4683SFrank Haverkamp  * This program is distributed in the hope that it will be useful,
1912eb4683SFrank Haverkamp  * but WITHOUT ANY WARRANTY; without even the implied warranty of
2012eb4683SFrank Haverkamp  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
2112eb4683SFrank Haverkamp  * GNU General Public License for more details.
2212eb4683SFrank Haverkamp  */
2312eb4683SFrank Haverkamp 
2412eb4683SFrank Haverkamp #include <linux/types.h>
2512eb4683SFrank Haverkamp #include <linux/stddef.h>
2612eb4683SFrank Haverkamp #include <linux/cdev.h>
2712eb4683SFrank Haverkamp #include <linux/list.h>
2812eb4683SFrank Haverkamp #include <linux/kthread.h>
2912eb4683SFrank Haverkamp #include <linux/scatterlist.h>
3012eb4683SFrank Haverkamp #include <linux/iommu.h>
3112eb4683SFrank Haverkamp #include <linux/spinlock.h>
3212eb4683SFrank Haverkamp #include <linux/mutex.h>
3312eb4683SFrank Haverkamp #include <linux/platform_device.h>
3465861ab4SFrank Haverkamp #include <linux/printk.h>
3512eb4683SFrank Haverkamp 
3658d66ce7SFrank Haverkamp #include <asm/byteorder.h>
3712eb4683SFrank Haverkamp #include <linux/genwqe/genwqe_card.h>
3812eb4683SFrank Haverkamp 
3964df2ec5SFrank Haverkamp #define DRV_VERSION		"2.0.25"
4012eb4683SFrank Haverkamp 
4112eb4683SFrank Haverkamp /*
4212eb4683SFrank Haverkamp  * Static minor number assignement, until we decide/implement
4312eb4683SFrank Haverkamp  * something dynamic.
4412eb4683SFrank Haverkamp  */
4512eb4683SFrank Haverkamp #define GENWQE_MAX_MINOR	128 /* up to 128 possible genwqe devices */
4612eb4683SFrank Haverkamp 
4712eb4683SFrank Haverkamp /**
4812eb4683SFrank Haverkamp  * genwqe_requ_alloc() - Allocate a new DDCB execution request
4912eb4683SFrank Haverkamp  *
5012eb4683SFrank Haverkamp  * This data structure contains the user visiable fields of the DDCB
5112eb4683SFrank Haverkamp  * to be executed.
5212eb4683SFrank Haverkamp  *
5312eb4683SFrank Haverkamp  * Return: ptr to genwqe_ddcb_cmd data structure
5412eb4683SFrank Haverkamp  */
5512eb4683SFrank Haverkamp struct genwqe_ddcb_cmd *ddcb_requ_alloc(void);
5612eb4683SFrank Haverkamp 
5712eb4683SFrank Haverkamp /**
5812eb4683SFrank Haverkamp  * ddcb_requ_free() - Free DDCB execution request.
5912eb4683SFrank Haverkamp  * @req:       ptr to genwqe_ddcb_cmd data structure.
6012eb4683SFrank Haverkamp  */
6112eb4683SFrank Haverkamp void ddcb_requ_free(struct genwqe_ddcb_cmd *req);
6212eb4683SFrank Haverkamp 
6312eb4683SFrank Haverkamp u32  genwqe_crc32(u8 *buff, size_t len, u32 init);
6412eb4683SFrank Haverkamp 
6512eb4683SFrank Haverkamp static inline void genwqe_hexdump(struct pci_dev *pci_dev,
6612eb4683SFrank Haverkamp 				  const void *buff, unsigned int size)
6712eb4683SFrank Haverkamp {
6812eb4683SFrank Haverkamp 	char prefix[32];
6912eb4683SFrank Haverkamp 
7012eb4683SFrank Haverkamp 	scnprintf(prefix, sizeof(prefix), "%s %s: ",
7112eb4683SFrank Haverkamp 		  GENWQE_DEVNAME, pci_name(pci_dev));
7265861ab4SFrank Haverkamp 
7365861ab4SFrank Haverkamp 	print_hex_dump_debug(prefix, DUMP_PREFIX_OFFSET, 16, 1, buff,
7465861ab4SFrank Haverkamp 			     size, true);
7512eb4683SFrank Haverkamp }
7612eb4683SFrank Haverkamp 
7712eb4683SFrank Haverkamp #endif	/* __GENWQE_DRIVER_H__ */
78