From 7d48ac5c7dfb52fc470bbad1013b4d460bc6a1e0 Mon Sep 17 00:00:00 2001 From: David Hendricks Date: Fri, 9 Mar 2018 14:30:38 -0800 Subject: soc/cavium: Integrate BDK files into coreboot * Make it compile. * Fix whitespace errors. * Fix printf formats. * Add missing headers includes * Guard headers with ifdefs Compile DRAM init code in romstage. Compile QLM, PCIe, RNG, PHY, GPIO, MDIO init code in ramstage. Change-Id: I0a93219a14bfb6ebe41103a825d5032b11e7f2c6 Signed-off-by: David Hendricks Reviewed-on: https://review.coreboot.org/25089 Reviewed-by: Philipp Deppenwiese Tested-by: build bot (Jenkins) --- .../cavium/bdk/libbdk-driver/bdk-driver-rnm.c | 36 +++++++++------------- 1 file changed, 15 insertions(+), 21 deletions(-) (limited to 'src/vendorcode/cavium/bdk/libbdk-driver/bdk-driver-rnm.c') diff --git a/src/vendorcode/cavium/bdk/libbdk-driver/bdk-driver-rnm.c b/src/vendorcode/cavium/bdk/libbdk-driver/bdk-driver-rnm.c index 8394ad8c5e..c3a71f79dc 100644 --- a/src/vendorcode/cavium/bdk/libbdk-driver/bdk-driver-rnm.c +++ b/src/vendorcode/cavium/bdk/libbdk-driver/bdk-driver-rnm.c @@ -22,7 +22,8 @@ * * This Software, including technical data, may be subject to U.S. export * control laws, including the U.S. Export Administration Act and its -* associated regulations, and may be subject to export or import +* associateint bdk_rng_init(bdk_node_t node) +* d regulations, and may be subject to export or import * regulations in other countries. * * TO THE MAXIMUM EXTENT PERMITTED BY LAW, THE SOFTWARE IS PROVIDED "AS IS" @@ -40,6 +41,10 @@ #include "libbdk-arch/bdk-csrs-pccpf.h" #include "libbdk-arch/bdk-csrs-rnm.h" +#include +#include +#define RNG_DEVID ((BDK_PCC_PROD_E_GEN << 24) | BDK_PCC_VENDOR_E_CAVIUM | (BDK_PCC_DEV_IDL_E_RNM << 16)) + BDK_REQUIRE_DEFINE(RNM); /** @@ -83,19 +88,6 @@ uint64_t bdk_rng_get_random64(void) return bdk_read64_uint64(bdk_numa_get_address(bdk_numa_local(), BDK_RNM_RANDOM)); } -/** - * The RNM probe function - * - * @param device RNM to probe - * - * @return Zero on success, negative on failure - */ -static int probe(bdk_device_t *device) -{ - bdk_device_rename(device, "N%d.RNM%d", device->node, device->instance); - return 0; -} - /** * RNM init() function * @@ -103,13 +95,20 @@ static int probe(bdk_device_t *device) * * @return Zero on success, negative on failure */ -static int init(bdk_device_t *device) +int bdk_rng_init(bdk_node_t node) { + const bdk_device_t *device = bdk_device_lookup(node, RNG_DEVID, 0); + if (!device) + { + bdk_error("RNM: ECAM device not found\n"); + return -1; + } BDK_BAR_MODIFY(c, device, BDK_RNM_CTL_STATUS, c.s.ent_en = 1; c.s.rng_en = 1); - /* Read back after enable so we know it is done. Needed on t88 pass 2.0 emulator */ + /* Read back after enable so we know it is done. Needed on t88 pass 2.0 emulator and t81 real hardware !!!! */ BDK_BAR_READ(device, BDK_RNM_CTL_STATUS); + /* Errata (RNM-22528) First consecutive reads to RNM_RANDOM return same value. Before using the random entropy, read RNM_RANDOM at least once and discard the data */ @@ -117,8 +116,3 @@ static int init(bdk_device_t *device) return 0; } -bdk_driver_t __bdk_driver_rnm = { - .id = (BDK_PCC_PROD_E_GEN << 24) | BDK_PCC_VENDOR_E_CAVIUM | (BDK_PCC_DEV_IDL_E_RNM << 16), - .probe = probe, - .init = init, -}; -- cgit v1.2.3