^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1) /* SPDX-License-Identifier: GPL-2.0-or-later */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3) * Filename: rsXX_cfg.h
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4) *
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5) * Authors: Joshua Morris <josh.h.morris@us.ibm.com>
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 6) * Philip Kelleher <pjk1939@linux.vnet.ibm.com>
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 7) *
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 8) * (C) Copyright 2013 IBM Corporation
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 9) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 10)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 11) #ifndef __RSXX_CFG_H__
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 12) #define __RSXX_CFG_H__
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 13)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 14) /* NOTE: Config values will be saved in network byte order (i.e. Big endian) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 15) #include <linux/types.h>
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 16)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 17) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 18) * The card config version must match the driver's expected version. If it does
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 19) * not, the DMA interfaces will not be attached and the user will need to
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 20) * initialize/upgrade the card configuration using the card config utility.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 21) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 22) #define RSXX_CFG_VERSION 4
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 23)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 24) struct card_cfg_hdr {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 25) __u32 version;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 26) __u32 crc;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 27) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 28)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 29) struct card_cfg_data {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 30) __u32 block_size;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 31) __u32 stripe_size;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 32) __u32 vendor_id;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 33) __u32 cache_order;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 34) struct {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 35) __u32 mode; /* Disabled, manual, auto-tune... */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 36) __u32 count; /* Number of intr to coalesce */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 37) __u32 latency;/* Max wait time (in ns) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 38) } intr_coal;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 39) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 40)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 41) struct rsxx_card_cfg {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 42) struct card_cfg_hdr hdr;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 43) struct card_cfg_data data;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 44) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 45)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 46) /* Vendor ID Values */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 47) #define RSXX_VENDOR_ID_IBM 0
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 48) #define RSXX_VENDOR_ID_DSI 1
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 49) #define RSXX_VENDOR_COUNT 2
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 50)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 51) /* Interrupt Coalescing Values */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 52) #define RSXX_INTR_COAL_DISABLED 0
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 53) #define RSXX_INTR_COAL_EXPLICIT 1
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 54) #define RSXX_INTR_COAL_AUTO_TUNE 2
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 55)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 56)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 57) #endif /* __RSXX_CFG_H__ */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 58)