Hi Deb,
I went through the addresses and ranges again. I couldn’t spot any errors.
To avoid accidentally damaging devices, let’s not include these:
> + /// Power state key. Write only.
> + pub(crate) PWR_KEY(u32) @ 0x50 {
> + /// Set to [`PWR_KEY::KEY_UNLOCK`] to unlock writes to other
> power state registers.
> + 31:0 key;
> + }
> + }
> +
> + impl PWR_KEY {
> + /// Key value to unlock writes to other power state registers.
> + /// This value was generated at random.
> + pub(crate) const KEY_UNLOCK: u32 = 0x2968A819;
> + }
> +
> + register! {
> + /// Power manager override settings.
> + pub(crate) PWR_OVERRIDE0(u32) @ 0x54 {
> + /// Override the PWRUP signal.
> + 1:0 pwrup_override;
> + /// Override the ISOLATE signal.
> + 3:2 isolate_override;
> + /// Override the RESET signal.
> + 5:4 reset_override;
> + /// Override the PWRUP_ACK signal.
> + 9:8 pwrup_ack_override;
> + /// Override the ISOLATE_ACK signal.
> + 11:10 isolate_ack_override;
> + /// Override the FUNC_ISOLATE signal.
> + 13:12 func_iso_override;
> + /// Override the FUNC_ISOLATE_ACK signal.
> + 15:14 func_iso_ack_override;
> + /// Maximum number of power transitions.
> + 21:16 pwrtrans_limit;
> + /// Core startup throttling enabled.
> + 23:23 throttle_enable;
> + /// Maximum number of simultaneous core startups.
> + 29:24 throttle_limit;
> + }
> + }
> +
> + /// Power override mode constants (`pwr_override_t` in hardware spec).
> + ///
> + /// These constants can be used with any field in [`PWR_OVERRIDE0`] that
> ends with
> + /// the `_override` suffix.
> + impl PWR_OVERRIDE0 {
> + /// The signal behaves normally.
> + pub(crate) const NONE: u32 = 0;
> + /// The signal is inverted (on when normally off, and off when
> normally on).
> + pub(crate) const INVERT: u32 = 1;
> + /// The signal is always kept on.
> + pub(crate) const ON: u32 = 2;
> + /// The signal is always kept off.
> + pub(crate) const OFF: u32 = 3;
> + }
> +
> + register! {
> + /// Power manager override settings for device manufacturer.
> + pub(crate) PWR_OVERRIDE1(u32) @ 0x58 {
> + 31:0 pwrtrans_vendor;
> + }
Alex might have more suggestions as he said, but to me at least, this is
acceptable.
— Daniel