#![allow(non_camel_case_types)]
use strum_macros::EnumString;

#[repr(u64)]
#[derive(Debug, Copy, Clone, PartialEq, EnumString)]
pub enum INGO_NTT_SUPER_PROGRAM_ADDR {
    XHBM_SS_CONTROL_ADDR_AP_CTRL = 0x000,
    XHBM_SS_CONTROL_ADDR_GIE = 0x004,
    XHBM_SS_CONTROL_ADDR_IER = 0x008,
    XHBM_SS_CONTROL_ADDR_ISR = 0x00c,
    XHBM_SS_CONTROL_ADDR_HIF_INPUT_BUFFER_DATA = 0x010,
    XHBM_SS_CONTROL_ADDR_HIF_INPUT_ENABLE_DEBUG_PROGRAM_DATA = 0x018,
    XHBM_SS_CONTROL_ADDR_INFO_PROGRAM_DATA = 0x040,
    XHBM_SS_CONTROL_ADDR_INFO_PROGRAM_CTRL = 0x044,
    XHBM_SS_CONTROL_ADDR_INFO_WRITE00_DATA = 0x050,
    XHBM_SS_CONTROL_ADDR_INFO_WRITE00_CTRL = 0x054,
    XHBM_SS_CONTROL_ADDR_INFO_WRITE01_DATA = 0x060,
    XHBM_SS_CONTROL_ADDR_INFO_WRITE01_CTRL = 0x064,
    XHBM_SS_CONTROL_ADDR_INFO_WRITE02_DATA = 0x070,
    XHBM_SS_CONTROL_ADDR_INFO_WRITE02_CTRL = 0x074,
    XHBM_SS_CONTROL_ADDR_INFO_WRITE03_DATA = 0x080,
    XHBM_SS_CONTROL_ADDR_INFO_WRITE03_CTRL = 0x084,
    XHBM_SS_CONTROL_ADDR_INFO_WRITE04_DATA = 0x090,
    XHBM_SS_CONTROL_ADDR_INFO_WRITE04_CTRL = 0x094,
    XHBM_SS_CONTROL_ADDR_INFO_WRITE05_DATA = 0x0a0,
    XHBM_SS_CONTROL_ADDR_INFO_WRITE05_CTRL = 0x0a4,
    XHBM_SS_CONTROL_ADDR_INFO_WRITE06_DATA = 0x0b0,
    XHBM_SS_CONTROL_ADDR_INFO_WRITE06_CTRL = 0x0b4,
    XHBM_SS_CONTROL_ADDR_INFO_WRITE07_DATA = 0x0c0,
    XHBM_SS_CONTROL_ADDR_INFO_WRITE07_CTRL = 0x0c4,
    XHBM_SS_CONTROL_ADDR_INFO_WRITE08_DATA = 0x0d0,
    XHBM_SS_CONTROL_ADDR_INFO_WRITE08_CTRL = 0x0d4,
    XHBM_SS_CONTROL_ADDR_INFO_WRITE09_DATA = 0x0e0,
    XHBM_SS_CONTROL_ADDR_INFO_WRITE09_CTRL = 0x0e4,
    XHBM_SS_CONTROL_ADDR_INFO_WRITE10_DATA = 0x0f0,
    XHBM_SS_CONTROL_ADDR_INFO_WRITE10_CTRL = 0x0f4,
    XHBM_SS_CONTROL_ADDR_INFO_WRITE11_DATA = 0x100,
    XHBM_SS_CONTROL_ADDR_INFO_WRITE11_CTRL = 0x104,
    XHBM_SS_CONTROL_ADDR_INFO_WRITE12_DATA = 0x110,
    XHBM_SS_CONTROL_ADDR_INFO_WRITE12_CTRL = 0x114,
    XHBM_SS_CONTROL_ADDR_INFO_WRITE13_DATA = 0x120,
    XHBM_SS_CONTROL_ADDR_INFO_WRITE13_CTRL = 0x124,
    XHBM_SS_CONTROL_ADDR_INFO_WRITE14_DATA = 0x130,
    XHBM_SS_CONTROL_ADDR_INFO_WRITE14_CTRL = 0x134,
    XHBM_SS_CONTROL_ADDR_INFO_WRITE15_DATA = 0x140,
    XHBM_SS_CONTROL_ADDR_INFO_WRITE15_CTRL = 0x144,
    XHBM_SS_CONTROL_ADDR_INFO_READ00_DATA = 0x150,
    XHBM_SS_CONTROL_ADDR_INFO_READ00_CTRL = 0x154,
    XHBM_SS_CONTROL_ADDR_INFO_READ01_DATA = 0x160,
    XHBM_SS_CONTROL_ADDR_INFO_READ01_CTRL = 0x164,
    XHBM_SS_CONTROL_ADDR_INFO_READ02_DATA = 0x170,
    XHBM_SS_CONTROL_ADDR_INFO_READ02_CTRL = 0x174,
    XHBM_SS_CONTROL_ADDR_INFO_READ03_DATA = 0x180,
    XHBM_SS_CONTROL_ADDR_INFO_READ03_CTRL = 0x184,
    XHBM_SS_CONTROL_ADDR_INFO_READ04_DATA = 0x190,
    XHBM_SS_CONTROL_ADDR_INFO_READ04_CTRL = 0x194,
    XHBM_SS_CONTROL_ADDR_INFO_READ05_DATA = 0x1a0,
    XHBM_SS_CONTROL_ADDR_INFO_READ05_CTRL = 0x1a4,
    XHBM_SS_CONTROL_ADDR_INFO_READ06_DATA = 0x1b0,
    XHBM_SS_CONTROL_ADDR_INFO_READ06_CTRL = 0x1b4,
    XHBM_SS_CONTROL_ADDR_INFO_READ07_DATA = 0x1c0,
    XHBM_SS_CONTROL_ADDR_INFO_READ07_CTRL = 0x1c4,
    XHBM_SS_CONTROL_ADDR_INFO_READ08_DATA = 0x1d0,
    XHBM_SS_CONTROL_ADDR_INFO_READ08_CTRL = 0x1d4,
    XHBM_SS_CONTROL_ADDR_INFO_READ09_DATA = 0x1e0,
    XHBM_SS_CONTROL_ADDR_INFO_READ09_CTRL = 0x1e4,
    XHBM_SS_CONTROL_ADDR_INFO_READ10_DATA = 0x1f0,
    XHBM_SS_CONTROL_ADDR_INFO_READ10_CTRL = 0x1f4,
    XHBM_SS_CONTROL_ADDR_INFO_READ11_DATA = 0x200,
    XHBM_SS_CONTROL_ADDR_INFO_READ11_CTRL = 0x204,
    XHBM_SS_CONTROL_ADDR_INFO_READ12_DATA = 0x210,
    XHBM_SS_CONTROL_ADDR_INFO_READ12_CTRL = 0x214,
    XHBM_SS_CONTROL_ADDR_INFO_READ13_DATA = 0x220,
    XHBM_SS_CONTROL_ADDR_INFO_READ13_CTRL = 0x224,
    XHBM_SS_CONTROL_ADDR_INFO_READ14_DATA = 0x230,
    XHBM_SS_CONTROL_ADDR_INFO_READ14_CTRL = 0x234,
    XHBM_SS_CONTROL_ADDR_INFO_READ15_DATA = 0x240,
    XHBM_SS_CONTROL_ADDR_INFO_READ15_CTRL = 0x244,
    XHBM_SS_CONTROL_ADDR_DEBUG_OUTPUT_DATA = 0x250,
    XHBM_SS_CONTROL_ADDR_DEBUG_OUTPUT_CTRL = 0x254,
    XHBM_SS_CONTROL_ADDR_HIF_INPUT_DEBUG_PROGRAM_BASE = 0x020,
    XHBM_SS_CONTROL_ADDR_HIF_INPUT_DEBUG_PROGRAM_HIGH = 0x03f,
}

impl From<INGO_NTT_SUPER_PROGRAM_ADDR> for u64 {
    fn from(addr: INGO_NTT_SUPER_PROGRAM_ADDR) -> Self {
        addr as u64
    }
}
