Program Listing for File sysinfo.h#
↰ Return to documentation for file (src/generated/structs/sysinfo.h
)
#pragma once
#include "../ifgen/common.h"
namespace RP2040
{
struct [[gnu::packed]] sysinfo
{
/* Constant attributes. */
static constexpr std::size_t size = 68;
/* Fields. */
const uint32_t CHIP_ID =
{};
const uint32_t PLATFORM =
{};
static constexpr std::size_t reserved_padding0_length = 14;
const uint32_t reserved_padding0[reserved_padding0_length] = {};
uint32_t GITREF_RP2040;
/* Methods. */
inline uint16_t get_CHIP_ID_MANUFACTURER() volatile
{
return (CHIP_ID >> 0u) & 0b111111111111u;
}
inline uint16_t get_CHIP_ID_PART() volatile
{
return (CHIP_ID >> 12u) & 0b1111111111111111u;
}
inline uint8_t get_CHIP_ID_REVISION() volatile
{
return (CHIP_ID >> 28u) & 0b1111u;
}
inline void get_CHIP_ID(uint16_t &MANUFACTURER, uint16_t &PART,
uint8_t &REVISION) volatile
{
uint32_t curr = CHIP_ID;
MANUFACTURER = (curr >> 0u) & 0b111111111111u;
PART = (curr >> 12u) & 0b1111111111111111u;
REVISION = (curr >> 28u) & 0b1111u;
}
inline bool get_PLATFORM_FPGA() volatile
{
return PLATFORM & (1u << 0u);
}
inline bool get_PLATFORM_ASIC() volatile
{
return PLATFORM & (1u << 1u);
}
inline void get_PLATFORM(bool &FPGA, bool &ASIC) volatile
{
uint32_t curr = PLATFORM;
FPGA = curr & (1u << 0u);
ASIC = curr & (1u << 1u);
}
};
static_assert(sizeof(sysinfo) == sysinfo::size);
static volatile sysinfo *const SYSINFO =
reinterpret_cast<sysinfo *>(0x40000000);
}; // namespace RP2040