[dif/aes] migrate srcs to use autogen'd AES DIF components

This partially addresses #8142.

Signed-off-by: Timothy Trippel <ttrippel@google.com>
diff --git a/hw/top_englishbreakfast/util/sw_sources.patch b/hw/top_englishbreakfast/util/sw_sources.patch
index c59d247..16f08d9 100644
--- a/hw/top_englishbreakfast/util/sw_sources.patch
+++ b/hw/top_englishbreakfast/util/sw_sources.patch
@@ -52,10 +52,10 @@
 -  mmio_region_write32(reg32, reg_offset, reg_value & mask);
  }
 diff --git a/sw/device/sca/aes_serial.c b/sw/device/sca/aes_serial.c
-index 901eba868..b19979b89 100644
+index a2087eb4f..d8d347e1e 100644
 --- a/sw/device/sca/aes_serial.c
 +++ b/sw/device/sca/aes_serial.c
-@@ -203,18 +203,13 @@ int main(void) {
+@@ -201,18 +201,13 @@ int main(void) {
    sca_init(kScaTriggerSourceAes, kScaPeripheralAes);
    sca_get_uart(&uart1);
  
@@ -75,7 +75,7 @@
      simple_serial_process_packet();
    }
 diff --git a/sw/device/sca/lib/sca.c b/sw/device/sca/lib/sca.c
-index 3fb4ff13d..e310076c3 100644
+index 093d215b1..dd231b2cc 100644
 --- a/sw/device/sca/lib/sca.c
 +++ b/sw/device/sca/lib/sca.c
 @@ -56,7 +56,6 @@ enum {
@@ -157,7 +157,7 @@
      IGNORE_RESULT(dif_clkmgr_gateable_clock_set_enabled(
          &clkmgr, CLKMGR_CLK_ENABLES_CLK_USB_PERI_EN_BIT,
 diff --git a/sw/device/tests/aes_smoketest.c b/sw/device/tests/aes_smoketest.c
-index 5b995c27f..0ce27b2f1 100644
+index dff8bd9b6..396123ef7 100644
 --- a/sw/device/tests/aes_smoketest.c
 +++ b/sw/device/tests/aes_smoketest.c
 @@ -7,7 +7,6 @@
@@ -168,7 +168,7 @@
  #include "sw/device/lib/testing/test_framework/test_main.h"
  
  #include "hw/top_earlgrey/sw/autogen/top_earlgrey.h"
-@@ -67,9 +66,6 @@ bool test_main(void) {
+@@ -66,9 +65,6 @@ bool test_main(void) {
  
    LOG_INFO("Running AES test");
  
@@ -176,8 +176,8 @@
 -  entropy_testutils_boot_mode_init();
 -
    // Initialise AES.
-   dif_aes_params_t params = {
-       .base_addr = mmio_region_from_addr(TOP_EARLGREY_AES_BASE_ADDR),
+   CHECK(dif_aes_init(mmio_region_from_addr(TOP_EARLGREY_AES_BASE_ADDR), &aes) ==
+         kDifOk);
 diff --git a/sw/device/tests/meson.build b/sw/device/tests/meson.build
 index 7abdc2045..829968cb9 100644
 --- a/sw/device/tests/meson.build
diff --git a/sw/device/lib/dif/autogen/meson.build b/sw/device/lib/dif/autogen/meson.build
index f56cf78..0963e25 100644
--- a/sw/device/lib/dif/autogen/meson.build
+++ b/sw/device/lib/dif/autogen/meson.build
@@ -2,6 +2,20 @@
 # Licensed under the Apache License, Version 2.0, see LICENSE for details.
 # SPDX-License-Identifier: Apache-2.0
 
+# Autogen AES DIF library
+sw_lib_dif_autogen_aes = declare_dependency(
+  link_with: static_library(
+    'sw_lib_dif_autogen_aes',
+    sources: [
+      hw_ip_aes_reg_h,
+      'dif_aes_autogen.c',
+    ],
+    dependencies: [
+      sw_lib_mmio,
+    ],
+  )
+)
+
 # Autogen UART DIF library
 sw_lib_dif_autogen_uart = declare_dependency(
   link_with: static_library(
diff --git a/sw/device/lib/dif/dif_aes.c b/sw/device/lib/dif/dif_aes.c
index 2bf34ee..644f4be 100644
--- a/sw/device/lib/dif/dif_aes.c
+++ b/sw/device/lib/dif/dif_aes.c
@@ -46,37 +46,37 @@
 } aes_key_field_val_t;
 
 static bool aes_idle(const dif_aes_t *aes) {
-  return mmio_region_get_bit32(aes->params.base_addr, AES_STATUS_REG_OFFSET,
+  return mmio_region_get_bit32(aes->base_addr, AES_STATUS_REG_OFFSET,
                                AES_STATUS_IDLE_BIT);
 }
 
 static bool aes_stalled(const dif_aes_t *aes) {
-  return mmio_region_get_bit32(aes->params.base_addr, AES_STATUS_REG_OFFSET,
+  return mmio_region_get_bit32(aes->base_addr, AES_STATUS_REG_OFFSET,
                                AES_STATUS_STALL_BIT);
 }
 
 static bool aes_output_lost(const dif_aes_t *aes) {
-  return mmio_region_get_bit32(aes->params.base_addr, AES_STATUS_REG_OFFSET,
+  return mmio_region_get_bit32(aes->base_addr, AES_STATUS_REG_OFFSET,
                                AES_STATUS_OUTPUT_LOST_BIT);
 }
 
 static bool aes_output_valid(const dif_aes_t *aes) {
-  return mmio_region_get_bit32(aes->params.base_addr, AES_STATUS_REG_OFFSET,
+  return mmio_region_get_bit32(aes->base_addr, AES_STATUS_REG_OFFSET,
                                AES_STATUS_OUTPUT_VALID_BIT);
 }
 
 static bool aes_input_ready(const dif_aes_t *aes) {
-  return mmio_region_get_bit32(aes->params.base_addr, AES_STATUS_REG_OFFSET,
+  return mmio_region_get_bit32(aes->base_addr, AES_STATUS_REG_OFFSET,
                                AES_STATUS_INPUT_READY_BIT);
 }
 
 static bool aes_alert_fatal(const dif_aes_t *aes) {
-  return mmio_region_get_bit32(aes->params.base_addr, AES_STATUS_REG_OFFSET,
+  return mmio_region_get_bit32(aes->base_addr, AES_STATUS_REG_OFFSET,
                                AES_STATUS_ALERT_FATAL_FAULT_BIT);
 }
 
 static bool aes_alert_recoverable(const dif_aes_t *aes) {
-  return mmio_region_get_bit32(aes->params.base_addr, AES_STATUS_REG_OFFSET,
+  return mmio_region_get_bit32(aes->base_addr, AES_STATUS_REG_OFFSET,
                                AES_STATUS_ALERT_RECOV_CTRL_UPDATE_ERR_BIT);
 }
 
@@ -96,8 +96,7 @@
   uint32_t ctrl_reg =
       bitfield_bit32_write(0, AES_CTRL_SHADOWED_MANUAL_OPERATION_BIT, true);
 
-  aes_shadowed_write(aes->params.base_addr, AES_CTRL_SHADOWED_REG_OFFSET,
-                     ctrl_reg);
+  aes_shadowed_write(aes->base_addr, AES_CTRL_SHADOWED_REG_OFFSET, ctrl_reg);
 
   uint32_t trigger_reg =
       bitfield_bit32_write(0, AES_TRIGGER_KEY_IV_DATA_IN_CLEAR_BIT, true);
@@ -105,8 +104,7 @@
   trigger_reg =
       bitfield_bit32_write(trigger_reg, AES_TRIGGER_DATA_OUT_CLEAR_BIT, true);
 
-  mmio_region_write32(aes->params.base_addr, AES_TRIGGER_REG_OFFSET,
-                      trigger_reg);
+  mmio_region_write32(aes->base_addr, AES_TRIGGER_REG_OFFSET, trigger_reg);
 
   // Make sure AES is cleared before proceeding (may take multiple cycles).
   while (!aes_idle(aes)) {
@@ -132,14 +130,14 @@
  * @param aes AES state data.
  * @param transaction Configuration data, common across all Cipher modes.
  * @param cipher_mode_val Cipher Mode register write value.
- * @return `dif_aes_start_result_t`.
+ * @return `dif_result_t`.
  */
-static dif_aes_result_t configure(const dif_aes_t *aes,
-                                  const dif_aes_transaction_t *transaction,
-                                  aes_mode_field_val_t cipher_mode_val) {
+static dif_result_t configure(const dif_aes_t *aes,
+                              const dif_aes_transaction_t *transaction,
+                              aes_mode_field_val_t cipher_mode_val) {
   aes_key_field_val_t key_len_val = key_to_field(transaction->key_len);
   if (key_len_val == kAesKeyFieldValInvalid) {
-    return kDifAesError;
+    return kDifError;
   }
 
   uint32_t reg =
@@ -170,9 +168,9 @@
                                false);
   }
 
-  aes_shadowed_write(aes->params.base_addr, AES_CTRL_SHADOWED_REG_OFFSET, reg);
+  aes_shadowed_write(aes->base_addr, AES_CTRL_SHADOWED_REG_OFFSET, reg);
 
-  return kDifAesOk;
+  return kDifOk;
 }
 
 /**
@@ -188,23 +186,23 @@
   for (int i = 0; i < regs_num; ++i) {
     ptrdiff_t offset = reg0_offset + (i * sizeof(uint32_t));
 
-    mmio_region_write32(aes->params.base_addr, offset, data[i]);
+    mmio_region_write32(aes->base_addr, offset, data[i]);
   }
 }
 
-dif_aes_result_t dif_aes_init(dif_aes_params_t params, dif_aes_t *aes) {
+dif_result_t dif_aes_init(mmio_region_t base_addr, dif_aes_t *aes) {
   if (aes == NULL) {
-    return kDifAesBadArg;
+    return kDifBadArg;
   }
 
-  aes->params = params;
+  aes->base_addr = base_addr;
 
-  return kDifAesOk;
+  return kDifOk;
 }
 
-dif_aes_result_t dif_aes_reset(const dif_aes_t *aes) {
+dif_result_t dif_aes_reset(const dif_aes_t *aes) {
   if (aes == NULL) {
-    return kDifAesBadArg;
+    return kDifBadArg;
   }
 
   aes_clear_internal_state(aes);
@@ -219,24 +217,24 @@
   reg =
       bitfield_field32_write(reg, AES_CTRL_SHADOWED_KEY_LEN_FIELD, 0xffffffff);
 
-  aes_shadowed_write(aes->params.base_addr, AES_CTRL_SHADOWED_REG_OFFSET, reg);
+  aes_shadowed_write(aes->base_addr, AES_CTRL_SHADOWED_REG_OFFSET, reg);
 
-  return kDifAesOk;
+  return kDifOk;
 }
 
-dif_aes_result_t dif_aes_start_ecb(const dif_aes_t *aes,
-                                   const dif_aes_transaction_t *transaction,
-                                   dif_aes_key_share_t key) {
+dif_result_t dif_aes_start_ecb(const dif_aes_t *aes,
+                               const dif_aes_transaction_t *transaction,
+                               dif_aes_key_share_t key) {
   if (aes == NULL || transaction == NULL) {
-    return kDifAesBadArg;
+    return kDifBadArg;
   }
 
   if (!aes_idle(aes)) {
-    return kDifAesBusy;
+    return kDifIpBusy;
   }
 
-  dif_aes_result_t result = configure(aes, transaction, kAesModeFieldValEcb);
-  if (result != kDifAesOk) {
+  dif_result_t result = configure(aes, transaction, kAesModeFieldValEcb);
+  if (result != kDifOk) {
     return result;
   }
 
@@ -246,22 +244,22 @@
   aes_set_multireg(aes, &key.share1[0], AES_KEY_SHARE1_MULTIREG_COUNT,
                    AES_KEY_SHARE1_0_REG_OFFSET);
 
-  return kDifAesOk;
+  return kDifOk;
 }
 
-dif_aes_result_t dif_aes_start_cbc(const dif_aes_t *aes,
-                                   const dif_aes_transaction_t *transaction,
-                                   dif_aes_key_share_t key, dif_aes_iv_t iv) {
+dif_result_t dif_aes_start_cbc(const dif_aes_t *aes,
+                               const dif_aes_transaction_t *transaction,
+                               dif_aes_key_share_t key, dif_aes_iv_t iv) {
   if (aes == NULL || transaction == NULL) {
-    return kDifAesBadArg;
+    return kDifBadArg;
   }
 
   if (!aes_idle(aes)) {
-    return kDifAesBusy;
+    return kDifIpBusy;
   }
 
-  dif_aes_result_t result = configure(aes, transaction, kAesModeFieldValCbc);
-  if (result != kDifAesOk) {
+  dif_result_t result = configure(aes, transaction, kAesModeFieldValCbc);
+  if (result != kDifOk) {
     return result;
   }
 
@@ -273,22 +271,22 @@
 
   aes_set_multireg(aes, &iv.iv[0], AES_IV_MULTIREG_COUNT, AES_IV_0_REG_OFFSET);
 
-  return kDifAesOk;
+  return kDifOk;
 }
 
-dif_aes_result_t dif_aes_start_ctr(const dif_aes_t *aes,
-                                   const dif_aes_transaction_t *transaction,
-                                   dif_aes_key_share_t key, dif_aes_iv_t iv) {
+dif_result_t dif_aes_start_ctr(const dif_aes_t *aes,
+                               const dif_aes_transaction_t *transaction,
+                               dif_aes_key_share_t key, dif_aes_iv_t iv) {
   if (aes == NULL || transaction == NULL) {
-    return kDifAesBadArg;
+    return kDifBadArg;
   }
 
   if (!aes_idle(aes)) {
-    return kDifAesBusy;
+    return kDifIpBusy;
   }
 
-  dif_aes_result_t result = configure(aes, transaction, kAesModeFieldValCtr);
-  if (result != kDifAesOk) {
+  dif_result_t result = configure(aes, transaction, kAesModeFieldValCtr);
+  if (result != kDifOk) {
     return result;
   }
 
@@ -300,62 +298,60 @@
 
   aes_set_multireg(aes, &iv.iv[0], AES_IV_MULTIREG_COUNT, AES_IV_0_REG_OFFSET);
 
-  return kDifAesOk;
+  return kDifOk;
 }
 
-dif_aes_result_t dif_aes_end(const dif_aes_t *aes) {
+dif_result_t dif_aes_end(const dif_aes_t *aes) {
   if (aes == NULL) {
-    return kDifAesBadArg;
+    return kDifBadArg;
   }
 
   if (!aes_idle(aes)) {
-    return kDifAesBusy;
+    return kDifIpBusy;
   }
 
   aes_clear_internal_state(aes);
 
-  return kDifAesOk;
+  return kDifOk;
 }
 
-dif_aes_result_t dif_aes_load_data(const dif_aes_t *aes,
-                                   const dif_aes_data_t data) {
+dif_result_t dif_aes_load_data(const dif_aes_t *aes,
+                               const dif_aes_data_t data) {
   if (aes == NULL) {
-    return kDifAesBadArg;
+    return kDifBadArg;
   }
 
   if (!aes_input_ready(aes)) {
-    return kDifAesBusy;
+    return kDifIpBusy;
   }
 
   aes_set_multireg(aes, &data.data[0], AES_DATA_IN_MULTIREG_COUNT,
                    AES_DATA_IN_0_REG_OFFSET);
 
-  return kDifAesOk;
+  return kDifOk;
 }
 
-dif_aes_result_t dif_aes_read_output(const dif_aes_t *aes,
-                                     dif_aes_data_t *data) {
+dif_result_t dif_aes_read_output(const dif_aes_t *aes, dif_aes_data_t *data) {
   if (aes == NULL || data == NULL) {
-    return kDifAesBadArg;
+    return kDifBadArg;
   }
 
   if (!aes_output_valid(aes)) {
-    return kDifAesOutputInvalid;
+    return kDifError;
   }
 
   for (int i = 0; i < AES_DATA_OUT_MULTIREG_COUNT; ++i) {
     ptrdiff_t offset = AES_DATA_OUT_0_REG_OFFSET + (i * sizeof(uint32_t));
 
-    data->data[i] = mmio_region_read32(aes->params.base_addr, offset);
+    data->data[i] = mmio_region_read32(aes->base_addr, offset);
   }
 
-  return kDifAesOk;
+  return kDifOk;
 }
 
-dif_aes_result_t dif_aes_trigger(const dif_aes_t *aes,
-                                 dif_aes_trigger_t trigger) {
+dif_result_t dif_aes_trigger(const dif_aes_t *aes, dif_aes_trigger_t trigger) {
   if (aes == NULL) {
-    return kDifAesBadArg;
+    return kDifBadArg;
   }
 
   uint32_t reg;
@@ -373,18 +369,18 @@
       reg = bitfield_bit32_write(0, AES_TRIGGER_PRNG_RESEED_BIT, true);
       break;
     default:
-      return kDifAesError;
+      return kDifError;
   }
 
-  mmio_region_write32(aes->params.base_addr, AES_TRIGGER_REG_OFFSET, reg);
+  mmio_region_write32(aes->base_addr, AES_TRIGGER_REG_OFFSET, reg);
 
-  return kDifAesOk;
+  return kDifOk;
 }
 
-dif_aes_result_t dif_aes_get_status(const dif_aes_t *aes, dif_aes_status_t flag,
-                                    bool *set) {
+dif_result_t dif_aes_get_status(const dif_aes_t *aes, dif_aes_status_t flag,
+                                bool *set) {
   if (aes == NULL || set == NULL) {
-    return kDifAesBadArg;
+    return kDifBadArg;
   }
 
   switch (flag) {
@@ -410,17 +406,16 @@
       *set = aes_alert_recoverable(aes);
       break;
     default:
-      return kDifAesError;
+      return kDifError;
   }
 
-  return kDifAesOk;
+  return kDifOk;
 }
 
 OT_WARN_UNUSED_RESULT
-dif_aes_result_t dif_aes_alert_force(const dif_aes_t *aes,
-                                     dif_aes_alert_t alert) {
+dif_result_t dif_aes_alert_force(const dif_aes_t *aes, dif_aes_alert_t alert) {
   if (aes == NULL) {
-    return kDifAesBadArg;
+    return kDifBadArg;
   }
 
   bitfield_bit32_index_t index;
@@ -432,11 +427,11 @@
       index = AES_ALERT_TEST_RECOV_CTRL_UPDATE_ERR_BIT;
       break;
     default:
-      return kDifAesError;
+      return kDifError;
   }
 
   uint32_t reg = bitfield_bit32_write(0, index, true);
-  mmio_region_write32(aes->params.base_addr, AES_ALERT_TEST_REG_OFFSET, reg);
+  mmio_region_write32(aes->base_addr, AES_ALERT_TEST_REG_OFFSET, reg);
 
-  return kDifAesOk;
+  return kDifOk;
 }
diff --git a/sw/device/lib/dif/dif_aes.h b/sw/device/lib/dif/dif_aes.h
index ea07922..b43e429 100644
--- a/sw/device/lib/dif/dif_aes.h
+++ b/sw/device/lib/dif/dif_aes.h
@@ -10,6 +10,9 @@
 
 #include "sw/device/lib/base/macros.h"
 #include "sw/device/lib/base/mmio.h"
+#include "sw/device/lib/dif/dif_base.h"
+
+#include "sw/device/lib/dif/autogen/dif_aes_autogen.h"
 
 #ifdef __cplusplus
 extern "C" {
@@ -170,68 +173,16 @@
 } dif_aes_alert_t;
 
 /**
- * Hardware instantiation parameters for AES.
- *
- * This struct describes information about the underlying hardware that is
- * not determined until the hardware design is used as part of a top-level
- * design.
- */
-typedef struct dif_aes_params {
-  /**
-   * The base address for the AES hardware registers.
-   */
-  mmio_region_t base_addr;
-} dif_aes_params_t;
-
-/**
- * A handle to AES.
- *
- * This type should be treated as opaque by users.
- */
-typedef struct dif_aes {
-  dif_aes_params_t params;
-} dif_aes_t;
-
-/**
- * The result of a AES operation.
- */
-typedef enum dif_aes_result {
-  /**
-   * Indicates that the operation succeeded.
-   */
-  kDifAesOk = 0,
-  /**
-   * Indicates some unspecified failure.
-   */
-  kDifAesError = 1,
-  /**
-   * Indicates that some parameter passed into a function failed a
-   * precondition.
-   *
-   * When this value is returned, no hardware operations occurred.
-   */
-  kDifAesBadArg = 2,
-  /**
-   * Device is busy, and cannot perform the requested operation.
-   */
-  kDifAesBusy,
-  /**
-   * The AES unit has no valid output.
-   */
-  kDifAesOutputInvalid,
-} dif_aes_result_t;
-
-/**
  * Creates a new handle for AES.
  *
  * This function does not actuate the hardware.
  *
- * @param params Hardware instantiation parameters.
+ * @param base_addr Hardware instantiation base address.
  * @param[out] aes Out param for the initialised handle.
  * @return The result of the operation.
  */
 OT_WARN_UNUSED_RESULT
-dif_aes_result_t dif_aes_init(dif_aes_params_t params, dif_aes_t *aes);
+dif_result_t dif_aes_init(mmio_region_t base_addr, dif_aes_t *aes);
 
 /**
  * Resets an instance of AES.
@@ -242,7 +193,7 @@
  * @return The result of the operation.
  */
 OT_WARN_UNUSED_RESULT
-dif_aes_result_t dif_aes_reset(const dif_aes_t *aes);
+dif_result_t dif_aes_reset(const dif_aes_t *aes);
 
 /**
  * Begins an AES transaction in ECB mode.
@@ -264,9 +215,9 @@
  * @return The result of the operation.
  */
 OT_WARN_UNUSED_RESULT
-dif_aes_result_t dif_aes_start_ecb(const dif_aes_t *aes,
-                                   const dif_aes_transaction_t *transaction,
-                                   dif_aes_key_share_t key);
+dif_result_t dif_aes_start_ecb(const dif_aes_t *aes,
+                               const dif_aes_transaction_t *transaction,
+                               dif_aes_key_share_t key);
 
 /**
  * Begins an AES transaction in CBC mode.
@@ -291,9 +242,9 @@
  * @return The result of the operation.
  */
 OT_WARN_UNUSED_RESULT
-dif_aes_result_t dif_aes_start_cbc(const dif_aes_t *aes,
-                                   const dif_aes_transaction_t *transaction,
-                                   dif_aes_key_share_t key, dif_aes_iv_t iv);
+dif_result_t dif_aes_start_cbc(const dif_aes_t *aes,
+                               const dif_aes_transaction_t *transaction,
+                               dif_aes_key_share_t key, dif_aes_iv_t iv);
 
 /**
  * Begins an AES transaction in CTR mode.
@@ -316,9 +267,9 @@
  * @return The result of the operation.
  */
 OT_WARN_UNUSED_RESULT
-dif_aes_result_t dif_aes_start_ctr(const dif_aes_t *aes,
-                                   const dif_aes_transaction_t *transaction,
-                                   dif_aes_key_share_t key, dif_aes_iv_t iv);
+dif_result_t dif_aes_start_ctr(const dif_aes_t *aes,
+                               const dif_aes_transaction_t *transaction,
+                               dif_aes_key_share_t key, dif_aes_iv_t iv);
 
 /**
  * Ends an AES transaction.
@@ -333,7 +284,7 @@
  * @return The result of the operation.
  */
 OT_WARN_UNUSED_RESULT
-dif_aes_result_t dif_aes_end(const dif_aes_t *aes);
+dif_result_t dif_aes_end(const dif_aes_t *aes);
 
 /**
  * Loads AES Input Data.
@@ -349,8 +300,7 @@
  * @return The result of the operation.
  */
 OT_WARN_UNUSED_RESULT
-dif_aes_result_t dif_aes_load_data(const dif_aes_t *aes,
-                                   const dif_aes_data_t data);
+dif_result_t dif_aes_load_data(const dif_aes_t *aes, const dif_aes_data_t data);
 
 /**
  * Reads AES Output Data.
@@ -364,8 +314,7 @@
  * @return The result of the operation.
  */
 OT_WARN_UNUSED_RESULT
-dif_aes_result_t dif_aes_read_output(const dif_aes_t *aes,
-                                     dif_aes_data_t *data);
+dif_result_t dif_aes_read_output(const dif_aes_t *aes, dif_aes_data_t *data);
 
 /**
  * AES Trigger flags.
@@ -400,8 +349,7 @@
  * @return The result of the operation.
  */
 OT_WARN_UNUSED_RESULT
-dif_aes_result_t dif_aes_trigger(const dif_aes_t *aes,
-                                 dif_aes_trigger_t trigger);
+dif_result_t dif_aes_trigger(const dif_aes_t *aes, dif_aes_trigger_t trigger);
 
 /**
  * AES Status flags.
@@ -453,8 +401,8 @@
  * @return The result of the operation.
  */
 OT_WARN_UNUSED_RESULT
-dif_aes_result_t dif_aes_get_status(const dif_aes_t *aes, dif_aes_status_t flag,
-                                    bool *set);
+dif_result_t dif_aes_get_status(const dif_aes_t *aes, dif_aes_status_t flag,
+                                bool *set);
 
 /**
  * Forces a particular alert, causing it to be serviced as if hardware had
@@ -465,8 +413,7 @@
  * @return The result of the operation.
  */
 OT_WARN_UNUSED_RESULT
-dif_aes_result_t dif_aes_alert_force(const dif_aes_t *aes,
-                                     dif_aes_alert_t alert);
+dif_result_t dif_aes_alert_force(const dif_aes_t *aes, dif_aes_alert_t alert);
 
 #ifdef __cplusplus
 }  // extern "C"
diff --git a/sw/device/lib/dif/meson.build b/sw/device/lib/dif/meson.build
index e09fdb7..d8a306b 100644
--- a/sw/device/lib/dif/meson.build
+++ b/sw/device/lib/dif/meson.build
@@ -647,16 +647,21 @@
       hw_ip_aes_reg_h,
       'dif_aes.c',
     ],
-    dependencies: [sw_lib_mmio],
+    dependencies: [
+      sw_lib_mmio,
+      sw_lib_dif_autogen_aes,
+    ],
   )
 )
 
 test('dif_aes_unittest', executable(
     'dif_aes_unittest',
     sources: [
-      hw_ip_aes_reg_h,
-      meson.source_root() / 'sw/device/lib/dif/dif_aes.c',
       'dif_aes_unittest.cc',
+      'autogen/dif_aes_autogen_unittest.cc',
+      meson.source_root() / 'sw/device/lib/dif/dif_aes.c',
+      meson.source_root() / 'sw/device/lib/dif/autogen/dif_aes_autogen.c',
+      hw_ip_aes_reg_h,
     ],
     dependencies: [
       sw_vendor_gtest,
diff --git a/sw/device/sca/aes_serial.c b/sw/device/sca/aes_serial.c
index 901eba8..a2087eb 100644
--- a/sw/device/sca/aes_serial.c
+++ b/sw/device/sca/aes_serial.c
@@ -62,14 +62,14 @@
   dif_aes_key_share_t key_shares;
   memcpy(key_shares.share0, key, sizeof(key_shares.share0));
   memset(key_shares.share1, 0, sizeof(key_shares.share1));
-  SS_CHECK(dif_aes_start_ecb(&aes, &transaction, key_shares) == kDifAesOk);
+  SS_CHECK(dif_aes_start_ecb(&aes, &transaction, key_shares) == kDifOk);
 }
 
 /**
  * Callback wrapper for AES manual trigger function.
  */
 static void aes_manual_trigger(void) {
-  SS_CHECK(dif_aes_trigger(&aes, kDifAesTriggerStart) == kDifAesOk);
+  SS_CHECK(dif_aes_trigger(&aes, kDifAesTriggerStart) == kDifOk);
 }
 
 /**
@@ -87,12 +87,12 @@
   bool ready = false;
   do {
     SS_CHECK(dif_aes_get_status(&aes, kDifAesStatusInputReady, &ready) ==
-             kDifAesOk);
+             kDifOk);
   } while (!ready);
   dif_aes_data_t data;
   SS_CHECK(plaintext_len <= sizeof(data.data));
   memcpy(data.data, plaintext, plaintext_len);
-  SS_CHECK(dif_aes_load_data(&aes, data) == kDifAesOk);
+  SS_CHECK(dif_aes_load_data(&aes, data) == kDifOk);
 
   // Start AES operation (this triggers the capture) and go to sleep.
   // Using the SecAesStartTriggerDelay hardware parameter, the AES unit is
@@ -122,11 +122,11 @@
   bool ready = false;
   do {
     SS_CHECK(dif_aes_get_status(&aes, kDifAesStatusOutputValid, &ready) ==
-             kDifAesOk);
+             kDifOk);
   } while (!ready);
 
   dif_aes_data_t ciphertext;
-  SS_CHECK(dif_aes_read_output(&aes, &ciphertext) == kDifAesOk);
+  SS_CHECK(dif_aes_read_output(&aes, &ciphertext) == kDifOk);
   simple_serial_send_packet('r', (uint8_t *)ciphertext.data,
                             sizeof(ciphertext.data));
 }
@@ -171,11 +171,11 @@
   bool ready = false;
   do {
     SS_CHECK(dif_aes_get_status(&aes, kDifAesStatusOutputValid, &ready) ==
-             kDifAesOk);
+             kDifOk);
   } while (!ready);
 
   dif_aes_data_t ciphertext;
-  SS_CHECK(dif_aes_read_output(&aes, &ciphertext) == kDifAesOk);
+  SS_CHECK(dif_aes_read_output(&aes, &ciphertext) == kDifOk);
   simple_serial_send_packet('r', (uint8_t *)ciphertext.data,
                             sizeof(ciphertext.data));
 }
@@ -184,11 +184,9 @@
  * Initializes the AES peripheral.
  */
 static void init_aes(void) {
-  dif_aes_params_t params = {
-      .base_addr = mmio_region_from_addr(TOP_EARLGREY_AES_BASE_ADDR),
-  };
-  SS_CHECK(dif_aes_init(params, &aes) == kDifAesOk);
-  SS_CHECK(dif_aes_reset(&aes) == kDifAesOk);
+  SS_CHECK(dif_aes_init(mmio_region_from_addr(TOP_EARLGREY_AES_BASE_ADDR),
+                        &aes) == kDifOk);
+  SS_CHECK(dif_aes_reset(&aes) == kDifOk);
 }
 
 /**
diff --git a/sw/device/tests/aes_smoketest.c b/sw/device/tests/aes_smoketest.c
index 5b995c2..dff8bd9 100644
--- a/sw/device/tests/aes_smoketest.c
+++ b/sw/device/tests/aes_smoketest.c
@@ -49,15 +49,14 @@
 
 static bool aes_input_ready(const dif_aes_t *aes) {
   bool status;
-  CHECK(dif_aes_get_status(aes, kDifAesStatusInputReady, &status) == kDifAesOk);
+  CHECK(dif_aes_get_status(aes, kDifAesStatusInputReady, &status) == kDifOk);
 
   return status;
 }
 
 static bool aes_output_valid(const dif_aes_t *aes) {
   bool status;
-  CHECK(dif_aes_get_status(aes, kDifAesStatusOutputValid, &status) ==
-        kDifAesOk);
+  CHECK(dif_aes_get_status(aes, kDifAesStatusOutputValid, &status) == kDifOk);
 
   return status;
 }
@@ -71,11 +70,9 @@
   entropy_testutils_boot_mode_init();
 
   // Initialise AES.
-  dif_aes_params_t params = {
-      .base_addr = mmio_region_from_addr(TOP_EARLGREY_AES_BASE_ADDR),
-  };
-  CHECK(dif_aes_init(params, &aes) == kDifAesOk);
-  CHECK(dif_aes_reset(&aes) == kDifAesOk);
+  CHECK(dif_aes_init(mmio_region_from_addr(TOP_EARLGREY_AES_BASE_ADDR), &aes) ==
+        kDifOk);
+  CHECK(dif_aes_reset(&aes) == kDifOk);
 
   // Mask the key. Note that this should not be done manually. Software is
   // expected to get the key in two shares right from the beginning.
@@ -95,7 +92,7 @@
       .mode = kDifAesModeEncrypt,
       .operation = kDifAesOperationAuto,
   };
-  CHECK(dif_aes_start_ecb(&aes, &transaction, key) == kDifAesOk);
+  CHECK(dif_aes_start_ecb(&aes, &transaction, key) == kDifOk);
 
   // "Convert" plain data byte arrays to `dif_aes_data_t`.
   dif_aes_data_t in_data_plain;
@@ -104,16 +101,16 @@
   // Load the plain text to trigger the encryption operation.
   while (!aes_input_ready(&aes)) {
   }
-  CHECK(dif_aes_load_data(&aes, in_data_plain) == kDifAesOk);
+  CHECK(dif_aes_load_data(&aes, in_data_plain) == kDifOk);
 
   // Read out the produced cipher text.
   dif_aes_data_t out_data_cipher;
   while (!aes_output_valid(&aes)) {
   }
-  CHECK(dif_aes_read_output(&aes, &out_data_cipher) == kDifAesOk);
+  CHECK(dif_aes_read_output(&aes, &out_data_cipher) == kDifOk);
 
   // Finish the ECB encryption transaction.
-  CHECK(dif_aes_end(&aes) == kDifAesOk);
+  CHECK(dif_aes_end(&aes) == kDifOk);
 
   // Check the produced cipher text against the reference.
   uint32_t cipher_text_gold_words[TEXT_LENGTH_IN_WORDS];
@@ -126,22 +123,22 @@
 
   // Setup ECB decryption transaction.
   transaction.mode = kDifAesModeDecrypt;
-  CHECK(dif_aes_start_ecb(&aes, &transaction, key) == kDifAesOk);
+  CHECK(dif_aes_start_ecb(&aes, &transaction, key) == kDifOk);
 
   // Load the previously produced cipher text to start the decryption operation.
   while (!aes_input_ready(&aes)) {
   }
-  CHECK(dif_aes_load_data(&aes, out_data_cipher) == kDifAesOk);
+  CHECK(dif_aes_load_data(&aes, out_data_cipher) == kDifOk);
 
   // Read out the produced plain text.
 
   dif_aes_data_t out_data_plain;
   while (!aes_output_valid(&aes)) {
   }
-  CHECK(dif_aes_read_output(&aes, &out_data_plain) == kDifAesOk);
+  CHECK(dif_aes_read_output(&aes, &out_data_plain) == kDifOk);
 
   // Finish the ECB encryption transaction.
-  CHECK(dif_aes_end(&aes) == kDifAesOk);
+  CHECK(dif_aes_end(&aes) == kDifOk);
 
   // Check the produced plain text against the reference.
   uint32_t plain_text_gold_words[TEXT_LENGTH_IN_WORDS];