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