// THIS HEADER FILE IS AUTOMATICALLY GENERATED -- DO NOT EDIT/** * Copyright (c) 2024 Raspberry Pi Ltd. * * SPDX-License-Identifier: BSD-3-Clause *//* ... */// =============================================================================// Register block : ROSC// Version : 1// Bus type : apb// =============================================================================#ifndef_HARDWARE_REGS_ROSC_H#define_HARDWARE_REGS_ROSC_H// =============================================================================// Register : ROSC_CTRL// Description : Ring Oscillator control#defineROSC_CTRL_OFFSET_u(0x00000000)#defineROSC_CTRL_BITS_u(0x00ffffff)#defineROSC_CTRL_RESET_u(0x00000aa0)// -----------------------------------------------------------------------------// Field : ROSC_CTRL_ENABLE// Description : On power-up this field is initialised to ENABLE// The system clock must be switched to another source before// setting this field to DISABLE otherwise the chip will lock up// The 12-bit code is intended to give some protection against// accidental writes. An invalid setting will enable the// oscillator.// 0xd1e -> DISABLE// 0xfab -> ENABLE#defineROSC_CTRL_ENABLE_RESET"-"#defineROSC_CTRL_ENABLE_BITS_u(0x00fff000)#defineROSC_CTRL_ENABLE_MSB_u(23)#defineROSC_CTRL_ENABLE_LSB_u(12)#defineROSC_CTRL_ENABLE_ACCESS"RW"#defineROSC_CTRL_ENABLE_VALUE_DISABLE_u(0xd1e)#defineROSC_CTRL_ENABLE_VALUE_ENABLE_u(0xfab)// -----------------------------------------------------------------------------// Field : ROSC_CTRL_FREQ_RANGE// Description : Controls the number of delay stages in the ROSC ring// LOW uses stages 0 to 7// MEDIUM uses stages 2 to 7// HIGH uses stages 4 to 7// TOOHIGH uses stages 6 to 7 and should not be used because its// frequency exceeds design specifications// The clock output will not glitch when changing the range up one// step at a time// The clock output will glitch when changing the range down// Note: the values here are gray coded which is why HIGH comes// before TOOHIGH// 0xfa4 -> LOW// 0xfa5 -> MEDIUM// 0xfa7 -> HIGH// 0xfa6 -> TOOHIGH#defineROSC_CTRL_FREQ_RANGE_RESET_u(0xaa0)#defineROSC_CTRL_FREQ_RANGE_BITS_u(0x00000fff)#defineROSC_CTRL_FREQ_RANGE_MSB_u(11)#defineROSC_CTRL_FREQ_RANGE_LSB_u(0)#defineROSC_CTRL_FREQ_RANGE_ACCESS"RW"#defineROSC_CTRL_FREQ_RANGE_VALUE_LOW_u(0xfa4)#defineROSC_CTRL_FREQ_RANGE_VALUE_MEDIUM_u(0xfa5)#defineROSC_CTRL_FREQ_RANGE_VALUE_HIGH_u(0xfa7)#defineROSC_CTRL_FREQ_RANGE_VALUE_TOOHIGH_u(0xfa6)// =============================================================================// Register : ROSC_FREQA// Description : The FREQA & FREQB registers control the frequency by// controlling the drive strength of each stage// The drive strength has 4 levels determined by the number of// bits set// Increasing the number of bits set increases the drive strength// and increases the oscillation frequency// 0 bits set is the default drive strength// 1 bit set doubles the drive strength// 2 bits set triples drive strength// 3 bits set quadruples drive strength// For frequency randomisation set both DS0_RANDOM=1 &// DS1_RANDOM=1#defineROSC_FREQA_OFFSET_u(0x00000004)#defineROSC_FREQA_BITS_u(0xffff77ff)#defineROSC_FREQA_RESET_u(0x00000000)// -----------------------------------------------------------------------------// Field : ROSC_FREQA_PASSWD// Description : Set to 0x9696 to apply the settings// Any other value in this field will set all drive strengths to 0// 0x9696 -> PASS#defineROSC_FREQA_PASSWD_RESET_u(0x0000)#defineROSC_FREQA_PASSWD_BITS_u(0xffff0000)#defineROSC_FREQA_PASSWD_MSB_u(31)#defineROSC_FREQA_PASSWD_LSB_u(16)#defineROSC_FREQA_PASSWD_ACCESS"RW"#defineROSC_FREQA_PASSWD_VALUE_PASS_u(0x9696)// -----------------------------------------------------------------------------// Field : ROSC_FREQA_DS3// Description : Stage 3 drive strength#defineROSC_FREQA_DS3_RESET_u(0x0)#defineROSC_FREQA_DS3_BITS_u(0x00007000)#defineROSC_FREQA_DS3_MSB_u(14)#defineROSC_FREQA_DS3_LSB_u(12)#defineROSC_FREQA_DS3_ACCESS"RW"// -----------------------------------------------------------------------------// Field : ROSC_FREQA_DS2// Description : Stage 2 drive strength#defineROSC_FREQA_DS2_RESET_u(0x0)#defineROSC_FREQA_DS2_BITS_u(0x00000700)#defineROSC_FREQA_DS2_MSB_u(10)#defineROSC_FREQA_DS2_LSB_u(8)#defineROSC_FREQA_DS2_ACCESS"RW"// -----------------------------------------------------------------------------// Field : ROSC_FREQA_DS1_RANDOM// Description : Randomises the stage 1 drive strength#defineROSC_FREQA_DS1_RANDOM_RESET_u(0x0)#defineROSC_FREQA_DS1_RANDOM_BITS_u(0x00000080)#defineROSC_FREQA_DS1_RANDOM_MSB_u(7)#defineROSC_FREQA_DS1_RANDOM_LSB_u(7)#defineROSC_FREQA_DS1_RANDOM_ACCESS"RW"// -----------------------------------------------------------------------------// Field : ROSC_FREQA_DS1// Description : Stage 1 drive strength#defineROSC_FREQA_DS1_RESET_u(0x0)#defineROSC_FREQA_DS1_BITS_u(0x00000070)#defineROSC_FREQA_DS1_MSB_u(6)#defineROSC_FREQA_DS1_LSB_u(4)#defineROSC_FREQA_DS1_ACCESS"RW"// -----------------------------------------------------------------------------// Field : ROSC_FREQA_DS0_RANDOM// Description : Randomises the stage 0 drive strength#defineROSC_FREQA_DS0_RANDOM_RESET_u(0x0)#defineROSC_FREQA_DS0_RANDOM_BITS_u(0x00000008)#defineROSC_FREQA_DS0_RANDOM_MSB_u(3)#defineROSC_FREQA_DS0_RANDOM_LSB_u(3)#defineROSC_FREQA_DS0_RANDOM_ACCESS"RW"// -----------------------------------------------------------------------------// Field : ROSC_FREQA_DS0// Description : Stage 0 drive strength#defineROSC_FREQA_DS0_RESET_u(0x0)#defineROSC_FREQA_DS0_BITS_u(0x00000007)#defineROSC_FREQA_DS0_MSB_u(2)#defineROSC_FREQA_DS0_LSB_u(0)#defineROSC_FREQA_DS0_ACCESS"RW"// =============================================================================// Register : ROSC_FREQB// Description : For a detailed description see freqa register#defineROSC_FREQB_OFFSET_u(0x00000008)#defineROSC_FREQB_BITS_u(0xffff7777)#defineROSC_FREQB_RESET_u(0x00000000)// -----------------------------------------------------------------------------// Field : ROSC_FREQB_PASSWD// Description : Set to 0x9696 to apply the settings// Any other value in this field will set all drive strengths to 0// 0x9696 -> PASS#defineROSC_FREQB_PASSWD_RESET_u(0x0000)#defineROSC_FREQB_PASSWD_BITS_u(0xffff0000)#defineROSC_FREQB_PASSWD_MSB_u(31)#defineROSC_FREQB_PASSWD_LSB_u(16)#defineROSC_FREQB_PASSWD_ACCESS"RW"#defineROSC_FREQB_PASSWD_VALUE_PASS_u(0x9696)// -----------------------------------------------------------------------------// Field : ROSC_FREQB_DS7// Description : Stage 7 drive strength#defineROSC_FREQB_DS7_RESET_u(0x0)#defineROSC_FREQB_DS7_BITS_u(0x00007000)#defineROSC_FREQB_DS7_MSB_u(14)#defineROSC_FREQB_DS7_LSB_u(12)#defineROSC_FREQB_DS7_ACCESS"RW"// -----------------------------------------------------------------------------// Field : ROSC_FREQB_DS6// Description : Stage 6 drive strength#defineROSC_FREQB_DS6_RESET_u(0x0)#defineROSC_FREQB_DS6_BITS_u(0x00000700)#defineROSC_FREQB_DS6_MSB_u(10)#defineROSC_FREQB_DS6_LSB_u(8)#defineROSC_FREQB_DS6_ACCESS"RW"// -----------------------------------------------------------------------------// Field : ROSC_FREQB_DS5// Description : Stage 5 drive strength#defineROSC_FREQB_DS5_RESET_u(0x0)#defineROSC_FREQB_DS5_BITS_u(0x00000070)#defineROSC_FREQB_DS5_MSB_u(6)#defineROSC_FREQB_DS5_LSB_u(4)#defineROSC_FREQB_DS5_ACCESS"RW"// -----------------------------------------------------------------------------// Field : ROSC_FREQB_DS4// Description : Stage 4 drive strength#defineROSC_FREQB_DS4_RESET_u(0x0)#defineROSC_FREQB_DS4_BITS_u(0x00000007)#defineROSC_FREQB_DS4_MSB_u(2)#defineROSC_FREQB_DS4_LSB_u(0)#defineROSC_FREQB_DS4_ACCESS"RW"// =============================================================================// Register : ROSC_RANDOM// Description : Loads a value to the LFSR randomiser#defineROSC_RANDOM_OFFSET_u(0x0000000c)#defineROSC_RANDOM_BITS_u(0xffffffff)#defineROSC_RANDOM_RESET_u(0x3f04b16d)// -----------------------------------------------------------------------------// Field : ROSC_RANDOM_SEED#defineROSC_RANDOM_SEED_RESET_u(0x3f04b16d)#defineROSC_RANDOM_SEED_BITS_u(0xffffffff)#defineROSC_RANDOM_SEED_MSB_u(31)#defineROSC_RANDOM_SEED_LSB_u(0)#defineROSC_RANDOM_SEED_ACCESS"RW"// =============================================================================// Register : ROSC_DORMANT// Description : Ring Oscillator pause control// This is used to save power by pausing the ROSC// On power-up this field is initialised to WAKE// An invalid write will also select WAKE// Warning: setup the irq before selecting dormant mode// 0x636f6d61 -> dormant// 0x77616b65 -> WAKE#defineROSC_DORMANT_OFFSET_u(0x00000010)#defineROSC_DORMANT_BITS_u(0xffffffff)#defineROSC_DORMANT_RESET"-"#defineROSC_DORMANT_MSB_u(31)#defineROSC_DORMANT_LSB_u(0)#defineROSC_DORMANT_ACCESS"RW"#defineROSC_DORMANT_VALUE_DORMANT_u(0x636f6d61)#defineROSC_DORMANT_VALUE_WAKE_u(0x77616b65)// =============================================================================// Register : ROSC_DIV// Description : Controls the output divider// set to 0xaa00 + div where// div = 0 divides by 128// div = 1-127 divides by div// any other value sets div=128// this register resets to div=32// 0xaa00 -> PASS#defineROSC_DIV_OFFSET_u(0x00000014)#defineROSC_DIV_BITS_u(0x0000ffff)#defineROSC_DIV_RESET"-"#defineROSC_DIV_MSB_u(15)#defineROSC_DIV_LSB_u(0)#defineROSC_DIV_ACCESS"RW"#defineROSC_DIV_VALUE_PASS_u(0xaa00)// =============================================================================// Register : ROSC_PHASE// Description : Controls the phase shifted output#defineROSC_PHASE_OFFSET_u(0x00000018)#defineROSC_PHASE_BITS_u(0x00000fff)#defineROSC_PHASE_RESET_u(0x00000008)// -----------------------------------------------------------------------------// Field : ROSC_PHASE_PASSWD// Description : set to 0xaa// any other value enables the output with shift=0#defineROSC_PHASE_PASSWD_RESET_u(0x00)#defineROSC_PHASE_PASSWD_BITS_u(0x00000ff0)#defineROSC_PHASE_PASSWD_MSB_u(11)#defineROSC_PHASE_PASSWD_LSB_u(4)#defineROSC_PHASE_PASSWD_ACCESS"RW"// -----------------------------------------------------------------------------// Field : ROSC_PHASE_ENABLE// Description : enable the phase-shifted output// this can be changed on-the-fly#defineROSC_PHASE_ENABLE_RESET_u(0x1)#defineROSC_PHASE_ENABLE_BITS_u(0x00000008)#defineROSC_PHASE_ENABLE_MSB_u(3)#defineROSC_PHASE_ENABLE_LSB_u(3)#defineROSC_PHASE_ENABLE_ACCESS"RW"// -----------------------------------------------------------------------------// Field : ROSC_PHASE_FLIP// Description : invert the phase-shifted output// this is ignored when div=1#defineROSC_PHASE_FLIP_RESET_u(0x0)#defineROSC_PHASE_FLIP_BITS_u(0x00000004)#defineROSC_PHASE_FLIP_MSB_u(2)#defineROSC_PHASE_FLIP_LSB_u(2)#defineROSC_PHASE_FLIP_ACCESS"RW"// -----------------------------------------------------------------------------// Field : ROSC_PHASE_SHIFT// Description : phase shift the phase-shifted output by SHIFT input clocks// this can be changed on-the-fly// must be set to 0 before setting div=1#defineROSC_PHASE_SHIFT_RESET_u(0x0)#defineROSC_PHASE_SHIFT_BITS_u(0x00000003)#defineROSC_PHASE_SHIFT_MSB_u(1)#defineROSC_PHASE_SHIFT_LSB_u(0)#defineROSC_PHASE_SHIFT_ACCESS"RW"// =============================================================================// Register : ROSC_STATUS// Description : Ring Oscillator Status#defineROSC_STATUS_OFFSET_u(0x0000001c)#defineROSC_STATUS_BITS_u(0x81011000)#defineROSC_STATUS_RESET_u(0x00000000)// -----------------------------------------------------------------------------// Field : ROSC_STATUS_STABLE// Description : Oscillator is running and stable#defineROSC_STATUS_STABLE_RESET_u(0x0)#defineROSC_STATUS_STABLE_BITS_u(0x80000000)#defineROSC_STATUS_STABLE_MSB_u(31)#defineROSC_STATUS_STABLE_LSB_u(31)#defineROSC_STATUS_STABLE_ACCESS"RO"// -----------------------------------------------------------------------------// Field : ROSC_STATUS_BADWRITE// Description : An invalid value has been written to CTRL_ENABLE or// CTRL_FREQ_RANGE or FREQA or FREQB or DIV or PHASE or DORMANT#defineROSC_STATUS_BADWRITE_RESET_u(0x0)#defineROSC_STATUS_BADWRITE_BITS_u(0x01000000)#defineROSC_STATUS_BADWRITE_MSB_u(24)#defineROSC_STATUS_BADWRITE_LSB_u(24)#defineROSC_STATUS_BADWRITE_ACCESS"WC"// -----------------------------------------------------------------------------// Field : ROSC_STATUS_DIV_RUNNING// Description : post-divider is running// this resets to 0 but transitions to 1 during chip startup#defineROSC_STATUS_DIV_RUNNING_RESET"-"#defineROSC_STATUS_DIV_RUNNING_BITS_u(0x00010000)#defineROSC_STATUS_DIV_RUNNING_MSB_u(16)#defineROSC_STATUS_DIV_RUNNING_LSB_u(16)#defineROSC_STATUS_DIV_RUNNING_ACCESS"RO"// -----------------------------------------------------------------------------// Field : ROSC_STATUS_ENABLED// Description : Oscillator is enabled but not necessarily running and stable// this resets to 0 but transitions to 1 during chip startup#defineROSC_STATUS_ENABLED_RESET"-"#defineROSC_STATUS_ENABLED_BITS_u(0x00001000)#defineROSC_STATUS_ENABLED_MSB_u(12)#defineROSC_STATUS_ENABLED_LSB_u(12)#defineROSC_STATUS_ENABLED_ACCESS"RO"// =============================================================================// Register : ROSC_RANDOMBIT// Description : This just reads the state of the oscillator output so// randomness is compromised if the ring oscillator is stopped or// run at a harmonic of the bus frequency#defineROSC_RANDOMBIT_OFFSET_u(0x00000020)#defineROSC_RANDOMBIT_BITS_u(0x00000001)#defineROSC_RANDOMBIT_RESET_u(0x00000001)#defineROSC_RANDOMBIT_MSB_u(0)#defineROSC_RANDOMBIT_LSB_u(0)#defineROSC_RANDOMBIT_ACCESS"RO"// =============================================================================// Register : ROSC_COUNT// Description : A down counter running at the ROSC frequency which counts to// zero and stops.// To start the counter write a non-zero value.// Can be used for short software pauses when setting up time// sensitive hardware.#defineROSC_COUNT_OFFSET_u(0x00000024)#defineROSC_COUNT_BITS_u(0x0000ffff)#defineROSC_COUNT_RESET_u(0x00000000)#defineROSC_COUNT_MSB_u(15)#defineROSC_COUNT_LSB_u(0)#defineROSC_COUNT_ACCESS"RW"169 defines// =============================================================================/* ... */#endif// _HARDWARE_REGS_ROSC_H
Details
Show: from
Types: Columns:
All items filtered out
All items filtered out
This file uses the notable symbols shown below. Click anywhere in the file to view more details.