summaryrefslogtreecommitdiff
path: root/drivers/infiniband/hw/hfi1/platform.c
diff options
context:
space:
mode:
authorDean Luick <dean.luick@intel.com>2016-09-30 04:41:45 -0700
committerDoug Ledford <dledford@redhat.com>2016-10-02 08:42:20 -0400
commite83eba214d5182422346bdfcdd72b665b73eda1a (patch)
tree7fa73e11e5f00037b34123562ce96555c9100ac9 /drivers/infiniband/hw/hfi1/platform.c
parent107ffbc521b07f22c2e8d1c5fce39766c265c02c (diff)
downloadlinux-rt-e83eba214d5182422346bdfcdd72b665b73eda1a.tar.gz
IB/hfi1: Use EPROM platform configuration read
The driver will now try to read directly from the EPROM as its first choice for the platform configuration file. Reviewed-by: Easwar Hariharan <easwar.hariharan@intel.com> Signed-off-by: Dean Luick <dean.luick@intel.com> Signed-off-by: Dennis Dalessandro <dennis.dalessandro@intel.com> Signed-off-by: Doug Ledford <dledford@redhat.com>
Diffstat (limited to 'drivers/infiniband/hw/hfi1/platform.c')
-rw-r--r--drivers/infiniband/hw/hfi1/platform.c32
1 files changed, 21 insertions, 11 deletions
diff --git a/drivers/infiniband/hw/hfi1/platform.c b/drivers/infiniband/hw/hfi1/platform.c
index 965c8aef0c60..202433178864 100644
--- a/drivers/infiniband/hw/hfi1/platform.c
+++ b/drivers/infiniband/hw/hfi1/platform.c
@@ -47,29 +47,39 @@
#include "hfi.h"
#include "efivar.h"
+#include "eprom.h"
void get_platform_config(struct hfi1_devdata *dd)
{
int ret = 0;
unsigned long size = 0;
u8 *temp_platform_config = NULL;
+ u32 esize;
+
+ ret = eprom_read_platform_config(dd, (void **)&temp_platform_config,
+ &esize);
+ if (!ret) {
+ /* success */
+ size = esize;
+ goto success;
+ }
+ /* fail, try EFI variable */
ret = read_hfi1_efi_var(dd, "configuration", &size,
(void **)&temp_platform_config);
- if (ret) {
- dd_dev_info(dd,
- "%s: Failed to get platform config from UEFI, falling back to request firmware\n",
- __func__);
- /* fall back to request firmware */
- platform_config_load = 1;
- goto bail;
- }
+ if (!ret)
+ goto success;
+
+ dd_dev_info(dd,
+ "%s: Failed to get platform config from UEFI, falling back to request firmware\n",
+ __func__);
+ /* fall back to request firmware */
+ platform_config_load = 1;
+ return;
+success:
dd->platform_config.data = temp_platform_config;
dd->platform_config.size = size;
-
-bail:
- /* exit */;
}
void free_platform_config(struct hfi1_devdata *dd)