/*
 * Copyright (c) 2019 The Linux Foundation. All rights reserved.
 *
 * Permission to use, copy, modify, and/or distribute this software for
 * any purpose with or without fee is hereby granted, provided that the
 * above copyright notice and this permission notice appear in all
 * copies.
 *
 * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL
 * WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED
 * WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE
 * AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL
 * DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR
 * PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
 * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
 * PERFORMANCE OF THIS SOFTWARE.
 */

//
// DO NOT EDIT!  This file is automatically generated
//               These definitions are tied to a particular hardware layout


#ifndef _REO_UNBLOCK_CACHE_STATUS_H_
#define _REO_UNBLOCK_CACHE_STATUS_H_
#if !defined(__ASSEMBLER__)
#endif

#include "uniform_reo_status_header.h"

// ################ START SUMMARY #################
//
//	Dword	Fields
//	0-1	struct uniform_reo_status_header status_header;
//	2	error_detected[0], unblock_type[1], reserved_2a[31:2]
//	3	reserved_3a[31:0]
//	4	reserved_4a[31:0]
//	5	reserved_5a[31:0]
//	6	reserved_6a[31:0]
//	7	reserved_7a[31:0]
//	8	reserved_8a[31:0]
//	9	reserved_9a[31:0]
//	10	reserved_10a[31:0]
//	11	reserved_11a[31:0]
//	12	reserved_12a[31:0]
//	13	reserved_13a[31:0]
//	14	reserved_14a[31:0]
//	15	reserved_15a[31:0]
//	16	reserved_16a[31:0]
//	17	reserved_17a[31:0]
//	18	reserved_18a[31:0]
//	19	reserved_19a[31:0]
//	20	reserved_20a[31:0]
//	21	reserved_21a[31:0]
//	22	reserved_22a[31:0]
//	23	reserved_23a[31:0]
//	24	reserved_24a[27:0], looping_count[31:28]
//
// ################ END SUMMARY #################

#define NUM_OF_DWORDS_REO_UNBLOCK_CACHE_STATUS 25

struct reo_unblock_cache_status {
    struct            uniform_reo_status_header                       status_header;
             uint32_t error_detected                  :  1, //[0]
                      unblock_type                    :  1, //[1]
                      reserved_2a                     : 30; //[31:2]
             uint32_t reserved_3a                     : 32; //[31:0]
             uint32_t reserved_4a                     : 32; //[31:0]
             uint32_t reserved_5a                     : 32; //[31:0]
             uint32_t reserved_6a                     : 32; //[31:0]
             uint32_t reserved_7a                     : 32; //[31:0]
             uint32_t reserved_8a                     : 32; //[31:0]
             uint32_t reserved_9a                     : 32; //[31:0]
             uint32_t reserved_10a                    : 32; //[31:0]
             uint32_t reserved_11a                    : 32; //[31:0]
             uint32_t reserved_12a                    : 32; //[31:0]
             uint32_t reserved_13a                    : 32; //[31:0]
             uint32_t reserved_14a                    : 32; //[31:0]
             uint32_t reserved_15a                    : 32; //[31:0]
             uint32_t reserved_16a                    : 32; //[31:0]
             uint32_t reserved_17a                    : 32; //[31:0]
             uint32_t reserved_18a                    : 32; //[31:0]
             uint32_t reserved_19a                    : 32; //[31:0]
             uint32_t reserved_20a                    : 32; //[31:0]
             uint32_t reserved_21a                    : 32; //[31:0]
             uint32_t reserved_22a                    : 32; //[31:0]
             uint32_t reserved_23a                    : 32; //[31:0]
             uint32_t reserved_24a                    : 28, //[27:0]
                      looping_count                   :  4; //[31:28]
};

/*

struct uniform_reo_status_header status_header

			Consumer: SW

			Producer: REO



			Details that can link this status with the original
			command. It also contains info on how long REO took to
			execute this command.

error_detected

			Status for blocking resource handling



			0: No error has been detected while executing this
			command

			1: The blocking resource was not in use, and therefor it
			could not be 'unblocked'

unblock_type

			Reference to the type of Unblock command type...



			<enum 0 unblock_resource_index> Unblock a blocking
			resource



			<enum 1 unblock_cache> The entire cache usage is
			unblock.



			<legal all>

reserved_2a

			<legal 0>

reserved_3a

			<legal 0>

reserved_4a

			<legal 0>

reserved_5a

			<legal 0>

reserved_6a

			<legal 0>

reserved_7a

			<legal 0>

reserved_8a

			<legal 0>

reserved_9a

			<legal 0>

reserved_10a

			<legal 0>

reserved_11a

			<legal 0>

reserved_12a

			<legal 0>

reserved_13a

			<legal 0>

reserved_14a

			<legal 0>

reserved_15a

			<legal 0>

reserved_16a

			<legal 0>

reserved_17a

			<legal 0>

reserved_18a

			<legal 0>

reserved_19a

			<legal 0>

reserved_20a

			<legal 0>

reserved_21a

			<legal 0>

reserved_22a

			<legal 0>

reserved_23a

			<legal 0>

reserved_24a

			<legal 0>

looping_count

			A count value that indicates the number of times the
			producer of entries into this Ring has looped around the
			ring.

			At initialization time, this value is set to 0. On the
			first loop, this value is set to 1. After the max value is
			reached allowed by the number of bits for this field, the
			count value continues with 0 again.



			In case SW is the consumer of the ring entries, it can
			use this field to figure out up to where the producer of
			entries has created new entries. This eliminates the need to
			check where the head pointer' of the ring is located once
			the SW starts processing an interrupt indicating that new
			entries have been put into this ring...



			Also note that SW if it wants only needs to look at the
			LSB bit of this count value.

			<legal all>
*/


 /* EXTERNAL REFERENCE : struct uniform_reo_status_header status_header */


/* Description		REO_UNBLOCK_CACHE_STATUS_0_STATUS_HEADER_REO_STATUS_NUMBER

			Consumer: SW , DEBUG

			Producer: REO



			The value in this field is equal to value of the
			'REO_CMD_Number' field the REO command



			This field helps to correlate the statuses with the REO
			commands.



			<legal all>
*/
#define REO_UNBLOCK_CACHE_STATUS_0_STATUS_HEADER_REO_STATUS_NUMBER_OFFSET 0x00000000
#define REO_UNBLOCK_CACHE_STATUS_0_STATUS_HEADER_REO_STATUS_NUMBER_LSB 0
#define REO_UNBLOCK_CACHE_STATUS_0_STATUS_HEADER_REO_STATUS_NUMBER_MASK 0x0000ffff

/* Description		REO_UNBLOCK_CACHE_STATUS_0_STATUS_HEADER_CMD_EXECUTION_TIME

			Consumer: DEBUG

			Producer: REO



			The amount of time REO took to excecute the command.
			Note that this time does not include the duration of the
			command waiting in the command ring, before the execution
			started.



			In us.



			<legal all>
*/
#define REO_UNBLOCK_CACHE_STATUS_0_STATUS_HEADER_CMD_EXECUTION_TIME_OFFSET 0x00000000
#define REO_UNBLOCK_CACHE_STATUS_0_STATUS_HEADER_CMD_EXECUTION_TIME_LSB 16
#define REO_UNBLOCK_CACHE_STATUS_0_STATUS_HEADER_CMD_EXECUTION_TIME_MASK 0x03ff0000

/* Description		REO_UNBLOCK_CACHE_STATUS_0_STATUS_HEADER_REO_CMD_EXECUTION_STATUS

			Consumer: DEBUG

			Producer: REO



			Execution status of the command.



			<enum 0 reo_successful_execution> Command has
			successfully be executed

			<enum 1 reo_blocked_execution> Command could not be
			executed as the queue or cache was blocked

			<enum 2 reo_failed_execution> Command has encountered
			problems when executing, like the queue descriptor not being
			valid. None of the status fields in the entire STATUS TLV
			are valid.

			<enum 3 reo_resource_blocked> Command is NOT  executed
			because one or more descriptors were blocked. This is SW
			programming mistake.

			None of the status fields in the entire STATUS TLV are
			valid.



			<legal  0-3>
*/
#define REO_UNBLOCK_CACHE_STATUS_0_STATUS_HEADER_REO_CMD_EXECUTION_STATUS_OFFSET 0x00000000
#define REO_UNBLOCK_CACHE_STATUS_0_STATUS_HEADER_REO_CMD_EXECUTION_STATUS_LSB 26
#define REO_UNBLOCK_CACHE_STATUS_0_STATUS_HEADER_REO_CMD_EXECUTION_STATUS_MASK 0x0c000000

/* Description		REO_UNBLOCK_CACHE_STATUS_0_STATUS_HEADER_RESERVED_0A

			<legal 0>
*/
#define REO_UNBLOCK_CACHE_STATUS_0_STATUS_HEADER_RESERVED_0A_OFFSET  0x00000000
#define REO_UNBLOCK_CACHE_STATUS_0_STATUS_HEADER_RESERVED_0A_LSB     28
#define REO_UNBLOCK_CACHE_STATUS_0_STATUS_HEADER_RESERVED_0A_MASK    0xf0000000

/* Description		REO_UNBLOCK_CACHE_STATUS_1_STATUS_HEADER_TIMESTAMP

			Timestamp at the moment that this status report is
			written.



			<legal all>
*/
#define REO_UNBLOCK_CACHE_STATUS_1_STATUS_HEADER_TIMESTAMP_OFFSET    0x00000004
#define REO_UNBLOCK_CACHE_STATUS_1_STATUS_HEADER_TIMESTAMP_LSB       0
#define REO_UNBLOCK_CACHE_STATUS_1_STATUS_HEADER_TIMESTAMP_MASK      0xffffffff

/* Description		REO_UNBLOCK_CACHE_STATUS_2_ERROR_DETECTED

			Status for blocking resource handling



			0: No error has been detected while executing this
			command

			1: The blocking resource was not in use, and therefor it
			could not be 'unblocked'
*/
#define REO_UNBLOCK_CACHE_STATUS_2_ERROR_DETECTED_OFFSET             0x00000008
#define REO_UNBLOCK_CACHE_STATUS_2_ERROR_DETECTED_LSB                0
#define REO_UNBLOCK_CACHE_STATUS_2_ERROR_DETECTED_MASK               0x00000001

/* Description		REO_UNBLOCK_CACHE_STATUS_2_UNBLOCK_TYPE

			Reference to the type of Unblock command type...



			<enum 0 unblock_resource_index> Unblock a blocking
			resource



			<enum 1 unblock_cache> The entire cache usage is
			unblock.



			<legal all>
*/
#define REO_UNBLOCK_CACHE_STATUS_2_UNBLOCK_TYPE_OFFSET               0x00000008
#define REO_UNBLOCK_CACHE_STATUS_2_UNBLOCK_TYPE_LSB                  1
#define REO_UNBLOCK_CACHE_STATUS_2_UNBLOCK_TYPE_MASK                 0x00000002

/* Description		REO_UNBLOCK_CACHE_STATUS_2_RESERVED_2A

			<legal 0>
*/
#define REO_UNBLOCK_CACHE_STATUS_2_RESERVED_2A_OFFSET                0x00000008
#define REO_UNBLOCK_CACHE_STATUS_2_RESERVED_2A_LSB                   2
#define REO_UNBLOCK_CACHE_STATUS_2_RESERVED_2A_MASK                  0xfffffffc

/* Description		REO_UNBLOCK_CACHE_STATUS_3_RESERVED_3A

			<legal 0>
*/
#define REO_UNBLOCK_CACHE_STATUS_3_RESERVED_3A_OFFSET                0x0000000c
#define REO_UNBLOCK_CACHE_STATUS_3_RESERVED_3A_LSB                   0
#define REO_UNBLOCK_CACHE_STATUS_3_RESERVED_3A_MASK                  0xffffffff

/* Description		REO_UNBLOCK_CACHE_STATUS_4_RESERVED_4A

			<legal 0>
*/
#define REO_UNBLOCK_CACHE_STATUS_4_RESERVED_4A_OFFSET                0x00000010
#define REO_UNBLOCK_CACHE_STATUS_4_RESERVED_4A_LSB                   0
#define REO_UNBLOCK_CACHE_STATUS_4_RESERVED_4A_MASK                  0xffffffff

/* Description		REO_UNBLOCK_CACHE_STATUS_5_RESERVED_5A

			<legal 0>
*/
#define REO_UNBLOCK_CACHE_STATUS_5_RESERVED_5A_OFFSET                0x00000014
#define REO_UNBLOCK_CACHE_STATUS_5_RESERVED_5A_LSB                   0
#define REO_UNBLOCK_CACHE_STATUS_5_RESERVED_5A_MASK                  0xffffffff

/* Description		REO_UNBLOCK_CACHE_STATUS_6_RESERVED_6A

			<legal 0>
*/
#define REO_UNBLOCK_CACHE_STATUS_6_RESERVED_6A_OFFSET                0x00000018
#define REO_UNBLOCK_CACHE_STATUS_6_RESERVED_6A_LSB                   0
#define REO_UNBLOCK_CACHE_STATUS_6_RESERVED_6A_MASK                  0xffffffff

/* Description		REO_UNBLOCK_CACHE_STATUS_7_RESERVED_7A

			<legal 0>
*/
#define REO_UNBLOCK_CACHE_STATUS_7_RESERVED_7A_OFFSET                0x0000001c
#define REO_UNBLOCK_CACHE_STATUS_7_RESERVED_7A_LSB                   0
#define REO_UNBLOCK_CACHE_STATUS_7_RESERVED_7A_MASK                  0xffffffff

/* Description		REO_UNBLOCK_CACHE_STATUS_8_RESERVED_8A

			<legal 0>
*/
#define REO_UNBLOCK_CACHE_STATUS_8_RESERVED_8A_OFFSET                0x00000020
#define REO_UNBLOCK_CACHE_STATUS_8_RESERVED_8A_LSB                   0
#define REO_UNBLOCK_CACHE_STATUS_8_RESERVED_8A_MASK                  0xffffffff

/* Description		REO_UNBLOCK_CACHE_STATUS_9_RESERVED_9A

			<legal 0>
*/
#define REO_UNBLOCK_CACHE_STATUS_9_RESERVED_9A_OFFSET                0x00000024
#define REO_UNBLOCK_CACHE_STATUS_9_RESERVED_9A_LSB                   0
#define REO_UNBLOCK_CACHE_STATUS_9_RESERVED_9A_MASK                  0xffffffff

/* Description		REO_UNBLOCK_CACHE_STATUS_10_RESERVED_10A

			<legal 0>
*/
#define REO_UNBLOCK_CACHE_STATUS_10_RESERVED_10A_OFFSET              0x00000028
#define REO_UNBLOCK_CACHE_STATUS_10_RESERVED_10A_LSB                 0
#define REO_UNBLOCK_CACHE_STATUS_10_RESERVED_10A_MASK                0xffffffff

/* Description		REO_UNBLOCK_CACHE_STATUS_11_RESERVED_11A

			<legal 0>
*/
#define REO_UNBLOCK_CACHE_STATUS_11_RESERVED_11A_OFFSET              0x0000002c
#define REO_UNBLOCK_CACHE_STATUS_11_RESERVED_11A_LSB                 0
#define REO_UNBLOCK_CACHE_STATUS_11_RESERVED_11A_MASK                0xffffffff

/* Description		REO_UNBLOCK_CACHE_STATUS_12_RESERVED_12A

			<legal 0>
*/
#define REO_UNBLOCK_CACHE_STATUS_12_RESERVED_12A_OFFSET              0x00000030
#define REO_UNBLOCK_CACHE_STATUS_12_RESERVED_12A_LSB                 0
#define REO_UNBLOCK_CACHE_STATUS_12_RESERVED_12A_MASK                0xffffffff

/* Description		REO_UNBLOCK_CACHE_STATUS_13_RESERVED_13A

			<legal 0>
*/
#define REO_UNBLOCK_CACHE_STATUS_13_RESERVED_13A_OFFSET              0x00000034
#define REO_UNBLOCK_CACHE_STATUS_13_RESERVED_13A_LSB                 0
#define REO_UNBLOCK_CACHE_STATUS_13_RESERVED_13A_MASK                0xffffffff

/* Description		REO_UNBLOCK_CACHE_STATUS_14_RESERVED_14A

			<legal 0>
*/
#define REO_UNBLOCK_CACHE_STATUS_14_RESERVED_14A_OFFSET              0x00000038
#define REO_UNBLOCK_CACHE_STATUS_14_RESERVED_14A_LSB                 0
#define REO_UNBLOCK_CACHE_STATUS_14_RESERVED_14A_MASK                0xffffffff

/* Description		REO_UNBLOCK_CACHE_STATUS_15_RESERVED_15A

			<legal 0>
*/
#define REO_UNBLOCK_CACHE_STATUS_15_RESERVED_15A_OFFSET              0x0000003c
#define REO_UNBLOCK_CACHE_STATUS_15_RESERVED_15A_LSB                 0
#define REO_UNBLOCK_CACHE_STATUS_15_RESERVED_15A_MASK                0xffffffff

/* Description		REO_UNBLOCK_CACHE_STATUS_16_RESERVED_16A

			<legal 0>
*/
#define REO_UNBLOCK_CACHE_STATUS_16_RESERVED_16A_OFFSET              0x00000040
#define REO_UNBLOCK_CACHE_STATUS_16_RESERVED_16A_LSB                 0
#define REO_UNBLOCK_CACHE_STATUS_16_RESERVED_16A_MASK                0xffffffff

/* Description		REO_UNBLOCK_CACHE_STATUS_17_RESERVED_17A

			<legal 0>
*/
#define REO_UNBLOCK_CACHE_STATUS_17_RESERVED_17A_OFFSET              0x00000044
#define REO_UNBLOCK_CACHE_STATUS_17_RESERVED_17A_LSB                 0
#define REO_UNBLOCK_CACHE_STATUS_17_RESERVED_17A_MASK                0xffffffff

/* Description		REO_UNBLOCK_CACHE_STATUS_18_RESERVED_18A

			<legal 0>
*/
#define REO_UNBLOCK_CACHE_STATUS_18_RESERVED_18A_OFFSET              0x00000048
#define REO_UNBLOCK_CACHE_STATUS_18_RESERVED_18A_LSB                 0
#define REO_UNBLOCK_CACHE_STATUS_18_RESERVED_18A_MASK                0xffffffff

/* Description		REO_UNBLOCK_CACHE_STATUS_19_RESERVED_19A

			<legal 0>
*/
#define REO_UNBLOCK_CACHE_STATUS_19_RESERVED_19A_OFFSET              0x0000004c
#define REO_UNBLOCK_CACHE_STATUS_19_RESERVED_19A_LSB                 0
#define REO_UNBLOCK_CACHE_STATUS_19_RESERVED_19A_MASK                0xffffffff

/* Description		REO_UNBLOCK_CACHE_STATUS_20_RESERVED_20A

			<legal 0>
*/
#define REO_UNBLOCK_CACHE_STATUS_20_RESERVED_20A_OFFSET              0x00000050
#define REO_UNBLOCK_CACHE_STATUS_20_RESERVED_20A_LSB                 0
#define REO_UNBLOCK_CACHE_STATUS_20_RESERVED_20A_MASK                0xffffffff

/* Description		REO_UNBLOCK_CACHE_STATUS_21_RESERVED_21A

			<legal 0>
*/
#define REO_UNBLOCK_CACHE_STATUS_21_RESERVED_21A_OFFSET              0x00000054
#define REO_UNBLOCK_CACHE_STATUS_21_RESERVED_21A_LSB                 0
#define REO_UNBLOCK_CACHE_STATUS_21_RESERVED_21A_MASK                0xffffffff

/* Description		REO_UNBLOCK_CACHE_STATUS_22_RESERVED_22A

			<legal 0>
*/
#define REO_UNBLOCK_CACHE_STATUS_22_RESERVED_22A_OFFSET              0x00000058
#define REO_UNBLOCK_CACHE_STATUS_22_RESERVED_22A_LSB                 0
#define REO_UNBLOCK_CACHE_STATUS_22_RESERVED_22A_MASK                0xffffffff

/* Description		REO_UNBLOCK_CACHE_STATUS_23_RESERVED_23A

			<legal 0>
*/
#define REO_UNBLOCK_CACHE_STATUS_23_RESERVED_23A_OFFSET              0x0000005c
#define REO_UNBLOCK_CACHE_STATUS_23_RESERVED_23A_LSB                 0
#define REO_UNBLOCK_CACHE_STATUS_23_RESERVED_23A_MASK                0xffffffff

/* Description		REO_UNBLOCK_CACHE_STATUS_24_RESERVED_24A

			<legal 0>
*/
#define REO_UNBLOCK_CACHE_STATUS_24_RESERVED_24A_OFFSET              0x00000060
#define REO_UNBLOCK_CACHE_STATUS_24_RESERVED_24A_LSB                 0
#define REO_UNBLOCK_CACHE_STATUS_24_RESERVED_24A_MASK                0x0fffffff

/* Description		REO_UNBLOCK_CACHE_STATUS_24_LOOPING_COUNT

			A count value that indicates the number of times the
			producer of entries into this Ring has looped around the
			ring.

			At initialization time, this value is set to 0. On the
			first loop, this value is set to 1. After the max value is
			reached allowed by the number of bits for this field, the
			count value continues with 0 again.



			In case SW is the consumer of the ring entries, it can
			use this field to figure out up to where the producer of
			entries has created new entries. This eliminates the need to
			check where the head pointer' of the ring is located once
			the SW starts processing an interrupt indicating that new
			entries have been put into this ring...



			Also note that SW if it wants only needs to look at the
			LSB bit of this count value.

			<legal all>
*/
#define REO_UNBLOCK_CACHE_STATUS_24_LOOPING_COUNT_OFFSET             0x00000060
#define REO_UNBLOCK_CACHE_STATUS_24_LOOPING_COUNT_LSB                28
#define REO_UNBLOCK_CACHE_STATUS_24_LOOPING_COUNT_MASK               0xf0000000


#endif // _REO_UNBLOCK_CACHE_STATUS_H_
