#ifndef TARG_ATTRIBUTESTRUCTS_H #define TARG_ATTRIBUTESTRUCTS_H /** * @file attributestructs.H * * @brief Complex attribute types * * This header file contains definitions for complex attribute types. Note: * in the future this file may be autogenerated */ //****************************************************************************** // Includes //****************************************************************************** // STD #include #include // This component #include //****************************************************************************** // Complex Types //****************************************************************************** namespace TARGETING { /** * @brief Structure which defines a target's primary capabilities * * Structure which defines a target's primary capabilities. A target can only * support at most FSI SCOM and one of the other two SCOM types. Applicable * for all targets. Structure is read-only. */ struct PrimaryCapabilities { uint8_t supportsFsiScom : 1; ///< 0b0: Target does not support FSI SCOM ///< 0b1: Target supports FSI SCOM uint8_t supportsXscom : 1; ///< 0b0: Target does not support XSCOM ///< 0b1: Target supports FSI XSCOM uint8_t supportsInbandScom : 1; ///< 0b0: Target does not support inband ///< SCOM ///< 0b1: Target supports inband SCOM uint8_t reserved : 5; } PACKED; /** * @brief Structure which defines which SCOM method to use at a point in time * * Structure which defines which SCOM to use at a point in time. Only * applicable if target supports one or more SCOM types. Only one bit (of the * first three) can ever be set at any one time. Structure is read-writeable. */ struct ScomSwitches { uint8_t useFsiScom : 1; ///< 0b0: Do not use FSI SCOM at this time ///< 0b1: Use FSI SCOM at this time uint8_t useXscom : 1; ///< 0b0: Do not use XSCOM at this time ///< 0b1: Use XSCOM at this time uint8_t useInbandScom : 1; ///< 0b0: Do not use inband SCOM at this time ///< 0b1: Use inband SCOM at this time uint8_t reserved : 5; ///< Reserved bits } PACKED; /** * @brief Structure which defines chip info necessary for XSCOM * * Structure which defines chip info necessary for XSCOM. Only * applicable for chip targets which support XSCOM. Structure is read-only. */ struct XscomChipInfo { uint8_t nodeId; // Unique ID of node containing the chip uint8_t chipId; // Unique ID of chip, relative to node } PACKED; /** * @brief Structure which defines chip info necessary for I2C operations * * Structure which defines info necessary for I2C. Only applicable for * chip targets which support I2C. Structure is read-only. */ struct I2cChipInfo { uint32_t busSpeed; // Slave Device bus speed uint16_t deviceAddr; // Slave Device address uint8_t devicePort; // Slave Device Port location uint8_t deviceMasterEng; // Master I2C engine slave is hung off of } PACKED; } // End namespace TARGETING #endif // TARG_ATTRIBUTESTRUCTS_H