1 /* SPDX-License-Identifier: GPL-2.0 */ 2 /* 3 * Support for Intel Camera Imaging ISP subsystem. 4 * Copyright (c) 2015, Intel Corporation. 5 * 6 * This program is free software; you can redistribute it and/or modify it 7 * under the terms and conditions of the GNU General Public License, 8 * version 2, as published by the Free Software Foundation. 9 * 10 * This program is distributed in the hope it will be useful, but WITHOUT 11 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or 12 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for 13 * more details. 14 */ 15 16 #ifndef _HRT_HIVE_TYPES_H 17 #define _HRT_HIVE_TYPES_H 18 19 #include "version.h" 20 #include "defs.h" 21 22 #ifndef HRTCAT3 23 #define _HRTCAT3(m, n, o) m##n##o 24 #define HRTCAT3(m, n, o) _HRTCAT3(m, n, o) 25 #endif 26 27 #ifndef HRTCAT4 28 #define _HRTCAT4(m, n, o, p) m##n##o##p 29 #define HRTCAT4(m, n, o, p) _HRTCAT4(m, n, o, p) 30 #endif 31 32 #ifndef HRTMIN 33 #define HRTMIN(a, b) (((a) < (b)) ? (a) : (b)) 34 #endif 35 36 #ifndef HRTMAX 37 #define HRTMAX(a, b) (((a) > (b)) ? (a) : (b)) 38 #endif 39 40 /* boolean data type */ 41 typedef unsigned int hive_bool; 42 #define hive_false 0 43 #define hive_true 1 44 45 typedef signed char hive_int8; 46 typedef short hive_int16; 47 typedef int hive_int32; 48 typedef long long hive_int64; 49 50 typedef unsigned char hive_uint8; 51 typedef unsigned short hive_uint16; 52 typedef unsigned int hive_uint32; 53 typedef unsigned long long hive_uint64; 54 55 #define HRT_DATA_WIDTH 32 56 #define HRT_ADDRESS_WIDTH 64 57 #define HRT_DATA_BYTES (HRT_DATA_WIDTH / 8) 58 #define HRT_ADDRESS_BYTES (HRT_ADDRESS_WIDTH / 8) 59 #define SIZEOF_HRT_REG (HRT_DATA_WIDTH >> 3) 60 61 typedef hive_uint32 hrt_data; 62 typedef hive_uint64 hrt_address; 63 64 /* use 64 bit addresses in simulation, where possible */ 65 typedef hive_uint64 hive_sim_address; 66 67 /* below is for csim, not for hrt, rename and move this elsewhere */ 68 69 typedef unsigned int hive_uint; 70 typedef hive_uint32 hive_address; 71 typedef hive_address hive_slave_address; 72 typedef hive_address hive_mem_address; 73 74 /* MMIO devices */ 75 typedef hive_uint hive_mmio_id; 76 typedef hive_mmio_id hive_slave_id; 77 typedef hive_mmio_id hive_port_id; 78 typedef hive_mmio_id hive_master_id; 79 typedef hive_mmio_id hive_mem_id; 80 typedef hive_mmio_id hive_dev_id; 81 typedef hive_mmio_id hive_fifo_id; 82 83 typedef hive_uint hive_hier_id; 84 typedef hive_hier_id hive_device_id; 85 typedef hive_device_id hive_proc_id; 86 typedef hive_device_id hive_cell_id; 87 typedef hive_device_id hive_host_id; 88 typedef hive_device_id hive_bus_id; 89 typedef hive_device_id hive_bridge_id; 90 typedef hive_device_id hive_fifo_adapter_id; 91 typedef hive_device_id hive_custom_device_id; 92 93 typedef hive_uint hive_slot_id; 94 typedef hive_uint hive_fu_id; 95 typedef hive_uint hive_reg_file_id; 96 typedef hive_uint hive_reg_id; 97 98 /* Streaming devices */ 99 typedef hive_uint hive_outport_id; 100 typedef hive_uint hive_inport_id; 101 102 typedef hive_uint hive_msink_id; 103 104 /* HRT specific */ 105 typedef char *hive_program; 106 typedef char *hive_function; 107 108 #endif /* _HRT_HIVE_TYPES_H */ 109