1 /* SPDX-License-Identifier: GPL-2.0-only */ 2 #ifndef NDTEST_H 3 #define NDTEST_H 4 5 #include <linux/platform_device.h> 6 #include <linux/libnvdimm.h> 7 8 struct ndtest_config; 9 10 struct ndtest_priv { 11 struct platform_device pdev; 12 struct device_node *dn; 13 struct list_head resources; 14 struct nvdimm_bus_descriptor bus_desc; 15 struct nvdimm_bus *bus; 16 struct ndtest_config *config; 17 18 dma_addr_t *dcr_dma; 19 dma_addr_t *label_dma; 20 dma_addr_t *dimm_dma; 21 }; 22 23 struct ndtest_blk_mmio { 24 void __iomem *base; 25 u64 size; 26 u64 base_offset; 27 u32 line_size; 28 u32 num_lines; 29 u32 table_size; 30 }; 31 32 struct ndtest_dimm { 33 struct device *dev; 34 struct nvdimm *nvdimm; 35 struct ndtest_blk_mmio *mmio; 36 struct nd_region *blk_region; 37 38 dma_addr_t address; 39 unsigned long long flags; 40 unsigned long config_size; 41 void *label_area; 42 char *uuid_str; 43 44 unsigned int size; 45 unsigned int handle; 46 unsigned int fail_cmd; 47 unsigned int physical_id; 48 unsigned int num_formats; 49 int id; 50 int fail_cmd_code; 51 u8 no_alias; 52 }; 53 54 struct ndtest_mapping { 55 u64 start; 56 u64 size; 57 u8 position; 58 u8 dimm; 59 }; 60 61 struct ndtest_region { 62 struct nd_region *region; 63 struct ndtest_mapping *mapping; 64 u64 size; 65 u8 type; 66 u8 num_mappings; 67 u8 range_index; 68 }; 69 70 struct ndtest_config { 71 struct ndtest_dimm *dimms; 72 struct ndtest_region *regions; 73 unsigned int dimm_count; 74 unsigned int dimm_start; 75 u8 num_regions; 76 }; 77 78 #endif /* NDTEST_H */ 79