[entropy_src/rtl] Removed LFSR mode, added recov_alert bits

The configuration enable fields now do not support LFSR mode.
Also, all enable fields are checked for valid values (5 or A).

Signed-off-by: Mark Branstad <mark.branstad@wdc.com>
diff --git a/sw/device/lib/dif/dif_entropy_src.c b/sw/device/lib/dif/dif_entropy_src.c
index 4acca4e..3f94380 100644
--- a/sw/device/lib/dif/dif_entropy_src.c
+++ b/sw/device/lib/dif/dif_entropy_src.c
@@ -37,11 +37,6 @@
   reg = bitfield_field32_write(reg, ENTROPY_SRC_CONF_RNG_BIT_SEL_FIELD,
                                rng_bit_sel);
 
-  // Configure lfsr
-  uint32_t lfsr_sel = config->mode == kDifEntropySrcModeLfsr ? 0xa : 0x5;
-  reg =
-      bitfield_field32_write(reg, ENTROPY_SRC_CONF_LFSR_ENABLE_FIELD, lfsr_sel);
-
   // Enable configuration
   uint32_t enable_val = config->mode != kDifEntropySrcModeDisabled ? 0xa : 0x5;
   reg = bitfield_field32_write(reg, ENTROPY_SRC_CONF_ENABLE_FIELD, enable_val);
@@ -63,16 +58,6 @@
     return kDifBadArg;
   }
 
-  if (config.lfsr_seed > ENTROPY_SRC_SEED_LFSR_SEED_MASK) {
-    return kDifBadArg;
-  }
-
-  uint32_t seed = config.mode == kDifEntropySrcModeLfsr ? config.lfsr_seed : 0;
-  mmio_region_write32(entropy_src->base_addr, ENTROPY_SRC_SEED_REG_OFFSET,
-                      seed);
-
-  mmio_region_write32(entropy_src->base_addr, ENTROPY_SRC_RATE_REG_OFFSET,
-                      (uint32_t)config.sample_rate);
 
   // Conditioning bypass is hardcoded to enabled. Bypass is not intended as
   // a regular mode of operation.
@@ -88,7 +73,7 @@
 
   // TODO: Add support for FIFO mode.
   mmio_region_write32(entropy_src->base_addr,
-                      ENTROPY_SRC_FW_OV_CONTROL_REG_OFFSET, 0);
+                      ENTROPY_SRC_FW_OV_CONTROL_REG_OFFSET, 0x55);
 
   set_config_register(entropy_src, &config);
   return kDifOk;
diff --git a/sw/device/lib/dif/dif_entropy_src.h b/sw/device/lib/dif/dif_entropy_src.h
index 517eaca..edf140c 100644
--- a/sw/device/lib/dif/dif_entropy_src.h
+++ b/sw/device/lib/dif/dif_entropy_src.h
@@ -101,16 +101,6 @@
    */
   kDifEntropySrcModePtrng = 1,
 
-  /**
-   * The Linear Feedback Shift Register (LFSR) mode.
-   *
-   * This mode is digital, and as such is only pseudo-random and intended
-   * for test purposes only.
-   *
-   * In this mode, the `dif_entropy_src_config.lfsr_seed` value is used to
-   * initialize the internal state of the LFSR.
-   */
-  kDifEntropySrcModeLfsr = 2,
 } dif_entropy_src_mode_t;
 
 /**
@@ -241,17 +231,6 @@
    * Configuration parameters for health tests.
    */
   dif_entropy_src_test_config_t test_config;
-
-  /**
-   * The rate at which the entropy bits are generated, in clock cycles.
-   */
-  uint16_t sample_rate;
-
-  /**
-   * Seed used to load into the LFSR initial state. The maximum allowable value
-   * is 15. See `dif_entropy_src_mode.kDifEntropySrcModeLfsr` for more details.
-   */
-  uint16_t lfsr_seed;
 } dif_entropy_src_config_t;
 
 /**
diff --git a/sw/device/lib/dif/dif_entropy_src_unittest.cc b/sw/device/lib/dif/dif_entropy_src_unittest.cc
index d474973..ac56336 100644
--- a/sw/device/lib/dif/dif_entropy_src_unittest.cc
+++ b/sw/device/lib/dif/dif_entropy_src_unittest.cc
@@ -33,15 +33,13 @@
 class ConfigTest : public DifEntropySrcTest {
  protected:
   dif_entropy_src_config_t config_ = {
-      .mode = kDifEntropySrcModeLfsr,
+      .mode = kDifEntropySrcModePtrng,
       .tests = {0},
       .reset_health_test_registers = false,
       .single_bit_mode = kDifEntropySrcSingleBitModeDisabled,
       .route_to_firmware = false,
-      .fips_mode = false,
+      .fips_mode = false,1
       .test_config = {0},
-      .sample_rate = 64,
-      .lfsr_seed = 4,
   };
 };
 
@@ -49,10 +47,6 @@
   EXPECT_EQ(dif_entropy_src_configure(nullptr, {}), kDifBadArg);
 }
 
-TEST_F(ConfigTest, LfsrSeedBadArg) {
-  config_.lfsr_seed = 16;
-  EXPECT_EQ(dif_entropy_src_configure(&entropy_src_, config_), kDifBadArg);
-}
 
 struct ConfigParams {
   dif_entropy_src_mode_t mode;
@@ -76,8 +70,6 @@
   config_.route_to_firmware = test_param.route_to_firmware;
   config_.reset_health_test_registers = test_param.reset_health_test_registers;
 
-  EXPECT_WRITE32(ENTROPY_SRC_SEED_REG_OFFSET, test_param.expected_seed);
-  EXPECT_WRITE32(ENTROPY_SRC_RATE_REG_OFFSET, 64);
   EXPECT_WRITE32(ENTROPY_SRC_ENTROPY_CONTROL_REG_OFFSET,
                  {
                      {ENTROPY_SRC_ENTROPY_CONTROL_ES_ROUTE_OFFSET,
@@ -91,8 +83,6 @@
 
   uint32_t rng_bit_enable = test_param.expected_rng_bit_en ? 0xa : 0x5;
   // Current dif does not set these fields
-  uint32_t lfsr_enable =
-      test_param.expected_mode == kDifEntropySrcModeLfsr ? 0xa : 0x5;
 
   // uint32_t route_to_fw = test_param.route_to_firmware ? 0xa : 0x5;
   uint32_t enable =
@@ -106,7 +96,6 @@
           {ENTROPY_SRC_CONF_HEALTH_TEST_CLR_OFFSET, reset_ht},
           {ENTROPY_SRC_CONF_BOOT_BYPASS_DISABLE_OFFSET, 0x5},
           // Current dif doesn ot set these fields
-          {ENTROPY_SRC_CONF_LFSR_ENABLE_OFFSET, lfsr_enable},
           //{ENTROPY_SRC_CONF_ENTROPY_DATA_REG_ENABLE_OFFSET, route_to_fw},
           {ENTROPY_SRC_CONF_ENABLE_OFFSET, enable},
       });
@@ -124,25 +113,25 @@
         ConfigParams{kDifEntropySrcModePtrng,
                      kDifEntropySrcSingleBitModeDisabled, false, false, 1,
                      false, 0, 0},
-        ConfigParams{kDifEntropySrcModeLfsr,
+        ConfigParams{kDifEntropySrcModePtrng,
                      kDifEntropySrcSingleBitModeDisabled, false, false, 2,
                      false, 0, 4},
         // Test route_to_firmware
-        ConfigParams{kDifEntropySrcModeLfsr,
+        ConfigParams{kDifEntropySrcModePtrng,
                      kDifEntropySrcSingleBitModeDisabled, true, false, 2, false,
                      0, 4},
         // Test reset_health_test_registers
-        ConfigParams{kDifEntropySrcModeLfsr,
+        ConfigParams{kDifEntropySrcModePtrng,
                      kDifEntropySrcSingleBitModeDisabled, true, true, 2, false,
                      0, 4},
         // Test single_bit_mode
-        ConfigParams{kDifEntropySrcModeLfsr, kDifEntropySrcSingleBitMode0, true,
+        ConfigParams{kDifEntropySrcModePtrng, kDifEntropySrcSingleBitMode0, true,
                      true, 2, true, 0, 4},
-        ConfigParams{kDifEntropySrcModeLfsr, kDifEntropySrcSingleBitMode1, true,
+        ConfigParams{kDifEntropySrcModePtrng, kDifEntropySrcSingleBitMode1, true,
                      true, 2, true, 1, 4},
-        ConfigParams{kDifEntropySrcModeLfsr, kDifEntropySrcSingleBitMode2, true,
+        ConfigParams{kDifEntropySrcModePtrng, kDifEntropySrcSingleBitMode2, true,
                      true, 2, true, 2, 4},
-        ConfigParams{kDifEntropySrcModeLfsr, kDifEntropySrcSingleBitMode3, true,
+        ConfigParams{kDifEntropySrcModePtrng, kDifEntropySrcSingleBitMode3, true,
                      true, 2, true, 3, 4}));
 
 class ReadTest : public DifEntropySrcTest {};