tx2: Add tx2 reset controller driver

This commit adds a driver for the reset controller in the tx2. Similar
to the clock driver, this driver is mostly just a shim between the BPMP
library as most of the work is carried out by the BPMP co-processor.
diff --git a/libplatsupportports/src/plat/tx2/reset.c b/libplatsupportports/src/plat/tx2/reset.c
new file mode 100644
index 0000000..ecfaf9a
--- /dev/null
+++ b/libplatsupportports/src/plat/tx2/reset.c
@@ -0,0 +1,114 @@
+/*
+ * Copyright 2020, Data61
+ * Commonwealth Scientific and Industrial Research Organisation (CSIRO)
+ * ABN 41 687 119 230.
+ *
+ * This software may be distributed and modified according to the terms of
+ * the GNU General Public License version 2. Note that NO WARRANTY is provided.
+ * See "LICENSE_GPLv2.txt" for details.
+ *
+ * @TAG(DATA61_GPL)
+ */
+
+#include <errno.h>
+
+#include <platsupport/reset.h>
+#include <platsupport/plat/reset.h>
+
+/* NVIDIA interface */
+#include <tx2bpmp/bpmp.h> /* struct mrq_reset_request */
+
+extern uint32_t mrq_reset_id_map[];
+
+typedef struct tx2_reset {
+    ps_io_ops_t *io_ops;
+    struct tx2_bpmp *bpmp;
+} tx2_reset_t;
+
+static inline bool check_valid_reset(reset_id_t id)
+{
+    return (RESET_TOP_GTE <= id && id < NRESETS);
+}
+
+static int tx2_reset_common(void *data, reset_id_t id, bool assert)
+{
+    if (!check_valid_reset(id)) {
+        ZF_LOGE("Invalid reset ID");
+        return -EINVAL;
+    }
+
+    tx2_reset_t *reset = data;
+    uint32_t bpmp_reset_id = mrq_reset_id_map[id];
+
+    /* Setup a message and make a call to BPMP */
+    struct mrq_reset_request req = { .reset_id = bpmp_reset_id };
+    req.cmd = (assert) ? CMD_RESET_ASSERT : CMD_RESET_DEASSERT;
+
+    int bytes_recvd = tx2_bpmp_call(reset->bpmp, MRQ_RESET, &req, sizeof(req), NULL, 0);
+    if (bytes_recvd < 0) {
+        return -EIO;
+    }
+
+    return 0;
+}
+
+static int tx2_reset_assert(void *data, reset_id_t id)
+{
+    return tx2_reset_common(data, id, true);
+}
+
+static int tx2_reset_deassert(void *data, reset_id_t id)
+{
+    return tx2_reset_common(data, id, false);
+}
+
+int reset_sys_init(ps_io_ops_t *io_ops, void *dependecies, reset_sys_t *reset_sys)
+{
+    if (!io_ops || !reset_sys) {
+        if (!io_ops) {
+            ZF_LOGE("null io_ops argument");
+        }
+
+        if (!reset_sys) {
+            ZF_LOGE("null reset_sys argument");
+        }
+
+        return -EINVAL;
+    }
+
+    int error = 0;
+    bool bpmp_initialised = false;
+    error = ps_calloc(&io_ops->malloc_ops, 1, sizeof(tx2_reset_t), (void **) &reset_sys->data);
+    if (error) {
+        ZF_LOGE("Failed to allocate memory for reset sys internal structure");
+        error = -ENOMEM;
+        goto fail;
+    }
+
+    tx2_reset_t *reset = reset_sys->data;
+
+    error = tx2_bpmp_init(io_ops, &reset->bpmp);
+    if (error) {
+        goto fail;
+    }
+
+    bpmp_initialised = true;
+
+    reset_sys->reset_assert = &tx2_reset_assert;
+    reset_sys->reset_deassert = &tx2_reset_deassert;
+
+    return 0;
+
+fail:
+
+    if (bpmp_initialised) {
+        ZF_LOGF_IF(tx2_bpmp_destroy(io_ops, reset->bpmp),
+                   "Failed to cleanup the BPMP after a failed reset system initialisation");
+    }
+
+    if (reset_sys->data) {
+        ps_free(&io_ops->malloc_ops, sizeof(tx2_reset_t), (void *) reset_sys->data);
+    }
+
+    return error;
+}
diff --git a/libplatsupportports/src/plat/tx2/reset_bindings.c b/libplatsupportports/src/plat/tx2/reset_bindings.c
new file mode 100644
index 0000000..ccbeaa4
--- /dev/null
+++ b/libplatsupportports/src/plat/tx2/reset_bindings.c
@@ -0,0 +1,197 @@
+/*
+ * Copright 2020, Data61
+ * Commonwealth Scientific and Industrial Research Organisation (CSIRO)
+ * ABN 41 687 119 230.
+ *
+ * This software may be distributed and modified according to the terms of
+ * the GNU General Public License version 2. Note that NO WARRANTY is provided.
+ * See "LICENSE_GPLv2.txt" for details.
+ *
+ * @TAG(DATA61_GPL)
+ */
+
+#include <stdint.h>
+
+#include <platsupport/plat/reset.h>
+#include <tx2bpmp/reset_bindings.h>
+
+/* This maps the reset_ids to the tx2 BPMP reset IDs */
+
+uint32_t mrq_reset_id_map[] = {
+    [RESET_TOP_GTE] = TEGRA186_RESET_TOP_GTE,
+    [RESET_SHSP] = TEGRA186_RESET_SHSP,
+    [RESET_KFUSE] = TEGRA186_RESET_KFUSE,
+    [RESET_GPU] = TEGRA186_RESET_GPU,
+    [RESET_UPHY] = TEGRA186_RESET_UPHY,
+    [RESET_SPI3] = TEGRA186_RESET_SPI3,
+    [RESET_I2C1] = TEGRA186_RESET_I2C1,
+    [RESET_I2C5] = TEGRA186_RESET_I2C5,
+    [RESET_SPI1] = TEGRA186_RESET_SPI1,
+    [RESET_ISP] = TEGRA186_RESET_ISP,
+    [RESET_VI] = TEGRA186_RESET_VI,
+    [RESET_TSCTNVI] = TEGRA186_RESET_TSCTNVI,
+    [RESET_SDMMC1] = TEGRA186_RESET_SDMMC1,
+    [RESET_SDMMC2] = TEGRA186_RESET_SDMMC2,
+    [RESET_SDMMC3] = TEGRA186_RESET_SDMMC3,
+    [RESET_SDMMC4] = TEGRA186_RESET_SDMMC4,
+    [RESET_UARTA] = TEGRA186_RESET_UARTA,
+    [RESET_UARTB] = TEGRA186_RESET_UARTB,
+    [RESET_HOST1X] = TEGRA186_RESET_HOST1X,
+    [RESET_EXTPERIPH4] = TEGRA186_RESET_EXTPERIPH4,
+    [RESET_SPI4] = TEGRA186_RESET_SPI4,
+    [RESET_I2C3] = TEGRA186_RESET_I2C3,
+    [RESET_UARTD] = TEGRA186_RESET_UARTD,
+    [RESET_CSITE] = TEGRA186_RESET_CSITE,
+    [RESET_DTV] = TEGRA186_RESET_DTV,
+    [RESET_TSEC] = TEGRA186_RESET_TSEC,
+    [RESET_I2C4] = TEGRA186_RESET_I2C4,
+    [RESET_HDA2CODEC_2X] = TEGRA186_RESET_HDA2CODEC_2X,
+    [RESET_EXTPERIPH1] = TEGRA186_RESET_EXTPERIPH1,
+    [RESET_EXTPERIPH2] = TEGRA186_RESET_EXTPERIPH2,
+    [RESET_EXTPERIPH3] = TEGRA186_RESET_EXTPERIPH3,
+    [RESET_SOR0] = TEGRA186_RESET_SOR0,
+    [RESET_SOR1] = TEGRA186_RESET_SOR1,
+    [RESET_DPAUX] = TEGRA186_RESET_DPAUX,
+    [RESET_CEC] = TEGRA186_RESET_CEC,
+    [RESET_HDA] = TEGRA186_RESET_HDA,
+    [RESET_APE] = TEGRA186_RESET_APE,
+    [RESET_DSIPADCTL] = TEGRA186_RESET_DSIPADCTL,
+    [RESET_DSI] = TEGRA186_RESET_DSI,
+    [RESET_MIPI_CAL] = TEGRA186_RESET_MIPI_CAL,
+    [RESET_DVFS] = TEGRA186_RESET_DVFS,
+    [RESET_AUD_MCLK] = TEGRA186_RESET_AUD_MCLK,
+    [RESET_I2C6] = TEGRA186_RESET_I2C6,
+    [RESET_NVDEC] = TEGRA186_RESET_NVDEC,
+    [RESET_NVJPG] = TEGRA186_RESET_NVJPG,
+    [RESET_NVENC] = TEGRA186_RESET_NVENC,
+    [RESET_QSPI] = TEGRA186_RESET_QSPI,
+    [RESET_VI_I2C] = TEGRA186_RESET_VI_I2C,
+    [RESET_TSECB] = TEGRA186_RESET_TSECB,
+    [RESET_GPIO_CTL0] = TEGRA186_RESET_GPIO_CTL0,
+    [RESET_GPIO_CTL1] = TEGRA186_RESET_GPIO_CTL1,
+    [RESET_GPIO_CTL2] = TEGRA186_RESET_GPIO_CTL2,
+    [RESET_GPIO_CTL3] = TEGRA186_RESET_GPIO_CTL3,
+    [RESET_GPIO_CTL4] = TEGRA186_RESET_GPIO_CTL4,
+    [RESET_TACH] = TEGRA186_RESET_TACH,
+    [RESET_I2C7] = TEGRA186_RESET_I2C7,
+    [RESET_I2C9] = TEGRA186_RESET_I2C9,
+    [RESET_I2C12] = TEGRA186_RESET_I2C12,
+    [RESET_I2C13] = TEGRA186_RESET_I2C13,
+    [RESET_I2C14] = TEGRA186_RESET_I2C14,
+    [RESET_PWM1] = TEGRA186_RESET_PWM1,
+    [RESET_PWM2] = TEGRA186_RESET_PWM2,
+    [RESET_PWM3] = TEGRA186_RESET_PWM3,
+    [RESET_PWM5] = TEGRA186_RESET_PWM5,
+    [RESET_PWM6] = TEGRA186_RESET_PWM6,
+    [RESET_PWM7] = TEGRA186_RESET_PWM7,
+    [RESET_PWM8] = TEGRA186_RESET_PWM8,
+    [RESET_UARTE] = TEGRA186_RESET_UARTE,
+    [RESET_UARTF] = TEGRA186_RESET_UARTF,
+    [RESET_BPMP_PM] = TEGRA186_RESET_BPMP_PM,
+    [RESET_BPMP_CVC] = TEGRA186_RESET_BPMP_CVC,
+    [RESET_BPMP_DMA] = TEGRA186_RESET_BPMP_DMA,
+    [RESET_BPMP_HSP] = TEGRA186_RESET_BPMP_HSP,
+    [RESET_TSCTNBPMP] = TEGRA186_RESET_TSCTNBPMP,
+    [RESET_BPMP_TKE] = TEGRA186_RESET_BPMP_TKE,
+    [RESET_BPMP_GTE] = TEGRA186_RESET_BPMP_GTE,
+    [RESET_BPMP_APB] = TEGRA186_RESET_BPMP_APB,
+    [RESET_SOC_THERM] = TEGRA186_RESET_SOC_THERM,
+    [RESET_AON_ACTMON] = TEGRA186_RESET_AON_ACTMON,
+    [RESET_AOPM] = TEGRA186_RESET_AOPM,
+    [RESET_AOVC] = TEGRA186_RESET_AOVC,
+    [RESET_AON_DMA] = TEGRA186_RESET_AON_DMA,
+    [RESET_AON_GPIO] = TEGRA186_RESET_AON_GPIO,
+    [RESET_AON_HSP] = TEGRA186_RESET_AON_HSP,
+    [RESET_CAN1] = TEGRA186_RESET_CAN1,
+    [RESET_AON_APB] = TEGRA186_RESET_AON_APB,
+    [RESET_UARTG] = TEGRA186_RESET_UARTG,
+    [RESET_I2C2] = TEGRA186_RESET_I2C2,
+    [RESET_I2C8] = TEGRA186_RESET_I2C8,
+    [RESET_I2C10] = TEGRA186_RESET_I2C10,
+    [RESET_SPI2] = TEGRA186_RESET_SPI2,
+    [RESET_DMIC5] = TEGRA186_RESET_DMIC5,
+    [RESET_PWM4] = TEGRA186_RESET_PWM4,
+    [RESET_TSCTNAON] = TEGRA186_RESET_TSCTNAON,
+    [RESET_AON_TKE] = TEGRA186_RESET_AON_TKE,
+    [RESET_AON_GTE] = TEGRA186_RESET_AON_GTE,
+    [RESET_SCE_ACTMON] = TEGRA186_RESET_SCE_ACTMON,
+    [RESET_SCE_PM] = TEGRA186_RESET_SCE_PM,
+    [RESET_SCE_DMA] = TEGRA186_RESET_SCE_DMA,
+    [RESET_SCE_HSP] = TEGRA186_RESET_SCE_HSP,
+    [RESET_TSCTNSCE] = TEGRA186_RESET_TSCTNSCE,
+    [RESET_SCE_TKE] = TEGRA186_RESET_SCE_TKE,
+    [RESET_SCE_GTE] = TEGRA186_RESET_SCE_GTE,
+    [RESET_SCE_CFG] = TEGRA186_RESET_SCE_CFG,
+    [RESET_SCE_APB] = TEGRA186_RESET_SCE_APB,
+    [RESET_DSIC] = TEGRA186_RESET_DSIC,
+    [RESET_DSID] = TEGRA186_RESET_DSID,
+    [RESET_GPIO_CTL5] = TEGRA186_RESET_GPIO_CTL5,
+    [RESET_PEX_USB_UPHY_L5] = TEGRA186_RESET_PEX_USB_UPHY_L5,
+    [RESET_PEX_USB_UPHY_L4] = TEGRA186_RESET_PEX_USB_UPHY_L4,
+    [RESET_PEX_USB_UPHY_L3] = TEGRA186_RESET_PEX_USB_UPHY_L3,
+    [RESET_PEX_USB_UPHY_L2] = TEGRA186_RESET_PEX_USB_UPHY_L2,
+    [RESET_PEX_USB_UPHY_L1] = TEGRA186_RESET_PEX_USB_UPHY_L1,
+    [RESET_PEX_USB_UPHY_L0] = TEGRA186_RESET_PEX_USB_UPHY_L0,
+    [RESET_PEX_USB_UPHY_PLL1] = TEGRA186_RESET_PEX_USB_UPHY_PLL1,
+    [RESET_PEX_USB_UPHY_PLL0] = TEGRA186_RESET_PEX_USB_UPHY_PLL0,
+    [RESET_PEX_USB_UPHY] = TEGRA186_RESET_PEX_USB_UPHY,
+    [RESET_PCIEXCLK] = TEGRA186_RESET_PCIEXCLK,
+    [RESET_AFI] = TEGRA186_RESET_AFI,
+    [RESET_PCIE] = TEGRA186_RESET_PCIE,
+    [RESET_ADSPNEON] = TEGRA186_RESET_ADSPNEON,
+    [RESET_ADSPSCU] = TEGRA186_RESET_ADSPSCU,
+    [RESET_ADSPWDT] = TEGRA186_RESET_ADSPWDT,
+    [RESET_ADSPDBG] = TEGRA186_RESET_ADSPDBG,
+    [RESET_ADSPPERIPH] = TEGRA186_RESET_ADSPPERIPH,
+    [RESET_ADSPINTF] = TEGRA186_RESET_ADSPINTF,
+    [RESET_ADSP] = TEGRA186_RESET_ADSP,
+    [RESET_EMC_MEM] = TEGRA186_RESET_EMC_MEM,
+    [RESET_EMC_EMC] = TEGRA186_RESET_EMC_EMC,
+    [RESET_SATACOLD] = TEGRA186_RESET_SATACOLD,
+    [RESET_SATA] = TEGRA186_RESET_SATA,
+    [RESET_XUSB_SS] = TEGRA186_RESET_XUSB_SS,
+    [RESET_XUSB_PADCTL] = TEGRA186_RESET_XUSB_PADCTL,
+    [RESET_XUSB_DEV] = TEGRA186_RESET_XUSB_DEV,
+    [RESET_XUSB_HOST] = TEGRA186_RESET_XUSB_HOST,
+    [RESET_DSIB] = TEGRA186_RESET_DSIB,
+    [RESET_MPHY_IOBIST] = TEGRA186_RESET_MPHY_IOBIST,
+    [RESET_MPHY_CLK_CTL] = TEGRA186_RESET_MPHY_CLK_CTL,
+    [RESET_MPHY_L1_RX] = TEGRA186_RESET_MPHY_L1_RX,
+    [RESET_MPHY_L1_TX] = TEGRA186_RESET_MPHY_L1_TX,
+    [RESET_MPHY_L0_RX] = TEGRA186_RESET_MPHY_L0_RX,
+    [RESET_MPHY_L0_TX] = TEGRA186_RESET_MPHY_L0_TX,
+    [RESET_JTAG2AXI] = TEGRA186_RESET_JTAG2AXI,
+    [RESET_GPCDMA] = TEGRA186_RESET_GPCDMA,
+    [RESET_NVDISPLAY0_MISC] = TEGRA186_RESET_NVDISPLAY0_MISC,
+    [RESET_NVDISPLAY0_WGRP5] = TEGRA186_RESET_NVDISPLAY0_WGRP5,
+    [RESET_NVDISPLAY0_WGRP4] = TEGRA186_RESET_NVDISPLAY0_WGRP4,
+    [RESET_NVDISPLAY0_WGRP3] = TEGRA186_RESET_NVDISPLAY0_WGRP3,
+    [RESET_NVDISPLAY0_WGRP2] = TEGRA186_RESET_NVDISPLAY0_WGRP2,
+    [RESET_NVDISPLAY0_WGRP1] = TEGRA186_RESET_NVDISPLAY0_WGRP1,
+    [RESET_NVDISPLAY0_WGRP0] = TEGRA186_RESET_NVDISPLAY0_WGRP0,
+    [RESET_NVDISPLAY0_HEAD2] = TEGRA186_RESET_NVDISPLAY0_HEAD2,
+    [RESET_NVDISPLAY0_HEAD1] = TEGRA186_RESET_NVDISPLAY0_HEAD1,
+    [RESET_NVDISPLAY0_HEAD0] = TEGRA186_RESET_NVDISPLAY0_HEAD0,
+    [RESET_EMCSB_MEM] = TEGRA186_RESET_EMCSB_MEM,
+    [RESET_EMCSB_EMC] = TEGRA186_RESET_EMCSB_EMC,
+    [RESET_UFSHC_AXI_M] = TEGRA186_RESET_UFSHC_AXI_M,
+    [RESET_UFSHC_LP] = TEGRA186_RESET_UFSHC_LP,
+    [RESET_BPMP_NIC] = TEGRA186_RESET_BPMP_NIC,
+    [RESET_BPMP_NSYSPORESET] = TEGRA186_RESET_BPMP_NSYSPORESET,
+    [RESET_BPMP_NRESET] = TEGRA186_RESET_BPMP_NRESET,
+    [RESET_BPMP_DBGRESETN] = TEGRA186_RESET_BPMP_DBGRESETN,
+    [RESET_BPMP_PRESETDBGN] = TEGRA186_RESET_BPMP_PRESETDBGN,
+    [RESET_BPMP_PM_ACTMON] = TEGRA186_RESET_BPMP_PM_ACTMON,
+    [RESET_ACTMON] = TEGRA186_RESET_ACTMON,
+    [RESET_AON_NIC] = TEGRA186_RESET_AON_NIC,
+    [RESET_AON_NSYSPORESET] = TEGRA186_RESET_AON_NSYSPORESET,
+    [RESET_AON_NRESET] = TEGRA186_RESET_AON_NRESET,
+    [RESET_AON_DBGRESETN] = TEGRA186_RESET_AON_DBGRESETN,
+    [RESET_AON_PRESETDBGN] = TEGRA186_RESET_AON_PRESETDBGN,
+    [RESET_SCE_NIC] = TEGRA186_RESET_SCE_NIC,
+    [RESET_SCE_NSYSPORESET] = TEGRA186_RESET_SCE_NSYSPORESET,
+    [RESET_SCE_NRESET] = TEGRA186_RESET_SCE_NRESET,
+    [RESET_SCE_DBGRESETN] = TEGRA186_RESET_SCE_DBGRESETN,
+    [RESET_SCE_PRESETDBGN] = TEGRA186_RESET_SCE_PRESETDBGN,
+    [RESET_EQOS] = TEGRA186_RESET_EQOS,
+};
diff --git a/libtx2bpmp/include/tx2bpmp/reset_bindings.h b/libtx2bpmp/include/tx2bpmp/reset_bindings.h
new file mode 100644
index 0000000..6c14d70
--- /dev/null
+++ b/libtx2bpmp/include/tx2bpmp/reset_bindings.h
@@ -0,0 +1,208 @@
+/*
+ * Copyright (c) 2015, NVIDIA CORPORATION.
+ *
+ * This software may be distributed and modified according to the terms of
+ * the GNU General Public License version 2. Note that NO WARRANTY is provided.
+ * See "LICENSE_GPLv2.txt" for details.
+ *
+ * @TAG(OTHER_GPL)
+ */
+
+#pragma once
+
+
+#define TEGRA186_RESET_ACTMON           0
+#define TEGRA186_RESET_AFI          1
+#define TEGRA186_RESET_CEC          2
+#define TEGRA186_RESET_CSITE            3
+#define TEGRA186_RESET_DP2          4
+#define TEGRA186_RESET_DPAUX            5
+#define TEGRA186_RESET_DSI          6
+#define TEGRA186_RESET_DSIB         7
+#define TEGRA186_RESET_DTV          8
+#define TEGRA186_RESET_DVFS         9
+#define TEGRA186_RESET_ENTROPY          10
+#define TEGRA186_RESET_EXTPERIPH1       11
+#define TEGRA186_RESET_EXTPERIPH2       12
+#define TEGRA186_RESET_EXTPERIPH3       13
+#define TEGRA186_RESET_GPU          14
+#define TEGRA186_RESET_HDA          15
+#define TEGRA186_RESET_HDA2CODEC_2X     16
+#define TEGRA186_RESET_HDA2HDMICODEC        17
+#define TEGRA186_RESET_HOST1X           18
+#define TEGRA186_RESET_I2C1         19
+#define TEGRA186_RESET_I2C2         20
+#define TEGRA186_RESET_I2C3         21
+#define TEGRA186_RESET_I2C4         22
+#define TEGRA186_RESET_I2C5         23
+#define TEGRA186_RESET_I2C6         24
+#define TEGRA186_RESET_ISP          25
+#define TEGRA186_RESET_KFUSE            26
+#define TEGRA186_RESET_LA           27
+#define TEGRA186_RESET_MIPI_CAL         28
+#define TEGRA186_RESET_PCIE         29
+#define TEGRA186_RESET_PCIEXCLK         30
+#define TEGRA186_RESET_SATA         31
+#define TEGRA186_RESET_SATACOLD         32
+#define TEGRA186_RESET_SDMMC1           33
+#define TEGRA186_RESET_SDMMC2           34
+#define TEGRA186_RESET_SDMMC3           35
+#define TEGRA186_RESET_SDMMC4           36
+#define TEGRA186_RESET_SE           37
+#define TEGRA186_RESET_SOC_THERM        38
+#define TEGRA186_RESET_SOR0         39
+#define TEGRA186_RESET_SPI1         40
+#define TEGRA186_RESET_SPI2         41
+#define TEGRA186_RESET_SPI3         42
+#define TEGRA186_RESET_SPI4         43
+#define TEGRA186_RESET_TMR          44
+#define TEGRA186_RESET_TRIG_SYS         45
+#define TEGRA186_RESET_TSEC         46
+#define TEGRA186_RESET_UARTA            47
+#define TEGRA186_RESET_UARTB            48
+#define TEGRA186_RESET_UARTC            49
+#define TEGRA186_RESET_UARTD            50
+#define TEGRA186_RESET_VI           51
+#define TEGRA186_RESET_VIC          52
+#define TEGRA186_RESET_XUSB_DEV         53
+#define TEGRA186_RESET_XUSB_HOST        54
+#define TEGRA186_RESET_XUSB_PADCTL      55
+#define TEGRA186_RESET_XUSB_SS          56
+#define TEGRA186_RESET_AON_APB          57
+#define TEGRA186_RESET_AXI_CBB          58
+#define TEGRA186_RESET_BPMP_APB         59
+#define TEGRA186_RESET_CAN1         60
+#define TEGRA186_RESET_CAN2         61
+#define TEGRA186_RESET_DMIC5            62
+#define TEGRA186_RESET_DSIC         63
+#define TEGRA186_RESET_DSID         64
+#define TEGRA186_RESET_EMC_EMC          65
+#define TEGRA186_RESET_EMC_MEM          66
+#define TEGRA186_RESET_EMCSB_EMC        67
+#define TEGRA186_RESET_EMCSB_MEM        68
+#define TEGRA186_RESET_EQOS         69
+#define TEGRA186_RESET_GPCDMA           70
+#define TEGRA186_RESET_GPIO_CTL0        71
+#define TEGRA186_RESET_GPIO_CTL1        72
+#define TEGRA186_RESET_GPIO_CTL2        73
+#define TEGRA186_RESET_GPIO_CTL3        74
+#define TEGRA186_RESET_GPIO_CTL4        75
+#define TEGRA186_RESET_GPIO_CTL5        76
+#define TEGRA186_RESET_I2C10            77
+#define TEGRA186_RESET_I2C12            78
+#define TEGRA186_RESET_I2C13            79
+#define TEGRA186_RESET_I2C14            80
+#define TEGRA186_RESET_I2C7         81
+#define TEGRA186_RESET_I2C8         82
+#define TEGRA186_RESET_I2C9         83
+#define TEGRA186_RESET_JTAG2AXI         84
+#define TEGRA186_RESET_MPHY_IOBIST      85
+#define TEGRA186_RESET_MPHY_L0_RX       86
+#define TEGRA186_RESET_MPHY_L0_TX       87
+#define TEGRA186_RESET_NVCSI            88
+#define TEGRA186_RESET_NVDISPLAY0_HEAD0     89
+#define TEGRA186_RESET_NVDISPLAY0_HEAD1     90
+#define TEGRA186_RESET_NVDISPLAY0_HEAD2     91
+#define TEGRA186_RESET_NVDISPLAY0_MISC      92
+#define TEGRA186_RESET_NVDISPLAY0_WGRP0     93
+#define TEGRA186_RESET_NVDISPLAY0_WGRP1     94
+#define TEGRA186_RESET_NVDISPLAY0_WGRP2     95
+#define TEGRA186_RESET_NVDISPLAY0_WGRP3     96
+#define TEGRA186_RESET_NVDISPLAY0_WGRP4     97
+#define TEGRA186_RESET_NVDISPLAY0_WGRP5     98
+#define TEGRA186_RESET_PWM1         99
+#define TEGRA186_RESET_PWM2         100
+#define TEGRA186_RESET_PWM3         101
+#define TEGRA186_RESET_PWM4         102
+#define TEGRA186_RESET_PWM5         103
+#define TEGRA186_RESET_PWM6         104
+#define TEGRA186_RESET_PWM7         105
+#define TEGRA186_RESET_PWM8         106
+#define TEGRA186_RESET_SCE_APB          107
+#define TEGRA186_RESET_SOR1         108
+#define TEGRA186_RESET_TACH         109
+#define TEGRA186_RESET_TSC          110
+#define TEGRA186_RESET_UARTF            111
+#define TEGRA186_RESET_UARTG            112
+#define TEGRA186_RESET_UFSHC            113
+#define TEGRA186_RESET_UFSHC_AXI_M      114
+#define TEGRA186_RESET_UPHY         115
+#define TEGRA186_RESET_ADSP         116
+#define TEGRA186_RESET_ADSPDBG          117
+#define TEGRA186_RESET_ADSPINTF         118
+#define TEGRA186_RESET_ADSPNEON         119
+#define TEGRA186_RESET_ADSPPERIPH       120
+#define TEGRA186_RESET_ADSPSCU          121
+#define TEGRA186_RESET_ADSPWDT          122
+#define TEGRA186_RESET_APE          123
+#define TEGRA186_RESET_DPAUX1           124
+#define TEGRA186_RESET_NVDEC            125
+#define TEGRA186_RESET_NVENC            126
+#define TEGRA186_RESET_NVJPG            127
+#define TEGRA186_RESET_PEX_USB_UPHY     128
+#define TEGRA186_RESET_QSPI         129
+#define TEGRA186_RESET_TSECB            130
+#define TEGRA186_RESET_VI_I2C           131
+#define TEGRA186_RESET_UARTE            132
+#define TEGRA186_RESET_TOP_GTE          133
+#define TEGRA186_RESET_SHSP         134
+#define TEGRA186_RESET_PEX_USB_UPHY_L5      135
+#define TEGRA186_RESET_PEX_USB_UPHY_L4      136
+#define TEGRA186_RESET_PEX_USB_UPHY_L3      137
+#define TEGRA186_RESET_PEX_USB_UPHY_L2      138
+#define TEGRA186_RESET_PEX_USB_UPHY_L1      139
+#define TEGRA186_RESET_PEX_USB_UPHY_L0      140
+#define TEGRA186_RESET_PEX_USB_UPHY_PLL1    141
+#define TEGRA186_RESET_PEX_USB_UPHY_PLL0    142
+#define TEGRA186_RESET_TSCTNVI          143
+#define TEGRA186_RESET_EXTPERIPH4       144
+#define TEGRA186_RESET_DSIPADCTL        145
+#define TEGRA186_RESET_AUD_MCLK         146
+#define TEGRA186_RESET_MPHY_CLK_CTL     147
+#define TEGRA186_RESET_MPHY_L1_RX       148
+#define TEGRA186_RESET_MPHY_L1_TX       149
+#define TEGRA186_RESET_UFSHC_LP         150
+#define TEGRA186_RESET_BPMP_NIC         151
+#define TEGRA186_RESET_BPMP_NSYSPORESET     152
+#define TEGRA186_RESET_BPMP_NRESET      153
+#define TEGRA186_RESET_BPMP_DBGRESETN       154
+#define TEGRA186_RESET_BPMP_PRESETDBGN      155
+#define TEGRA186_RESET_BPMP_PM          156
+#define TEGRA186_RESET_BPMP_CVC         157
+#define TEGRA186_RESET_BPMP_DMA         158
+#define TEGRA186_RESET_BPMP_HSP         159
+#define TEGRA186_RESET_TSCTNBPMP        160
+#define TEGRA186_RESET_BPMP_TKE         161
+#define TEGRA186_RESET_BPMP_GTE         162
+#define TEGRA186_RESET_BPMP_PM_ACTMON       163
+#define TEGRA186_RESET_AON_NIC          164
+#define TEGRA186_RESET_AON_NSYSPORESET      165
+#define TEGRA186_RESET_AON_NRESET       166
+#define TEGRA186_RESET_AON_DBGRESETN        167
+#define TEGRA186_RESET_AON_PRESETDBGN       168
+#define TEGRA186_RESET_AON_ACTMON       169
+#define TEGRA186_RESET_AOPM         170
+#define TEGRA186_RESET_AOVC         171
+#define TEGRA186_RESET_AON_DMA          172
+#define TEGRA186_RESET_AON_GPIO         173
+#define TEGRA186_RESET_AON_HSP          174
+#define TEGRA186_RESET_TSCTNAON         175
+#define TEGRA186_RESET_AON_TKE          176
+#define TEGRA186_RESET_AON_GTE          177
+#define TEGRA186_RESET_SCE_NIC          178
+#define TEGRA186_RESET_SCE_NSYSPORESET      179
+#define TEGRA186_RESET_SCE_NRESET       180
+#define TEGRA186_RESET_SCE_DBGRESETN        181
+#define TEGRA186_RESET_SCE_PRESETDBGN       182
+#define TEGRA186_RESET_SCE_ACTMON       183
+#define TEGRA186_RESET_SCE_PM           184
+#define TEGRA186_RESET_SCE_DMA          185
+#define TEGRA186_RESET_SCE_HSP          186
+#define TEGRA186_RESET_TSCTNSCE         187
+#define TEGRA186_RESET_SCE_TKE          188
+#define TEGRA186_RESET_SCE_GTE          189
+#define TEGRA186_RESET_SCE_CFG          190
+#define TEGRA186_RESET_ADSP_ALL         191
+/** @brief controls the power up/down sequence of UFSHC PSW partition. Controls LP_PWR_READY, LP_ISOL_EN, and LP_RESET_N signals */
+#define TEGRA186_RESET_UFSHC_LP_SEQ     192
+#define TEGRA186_RESET_SIZE         193