Commit e83eba21 authored by Dean Luick's avatar Dean Luick Committed by Doug Ledford

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: default avatarEaswar Hariharan <easwar.hariharan@intel.com>
Signed-off-by: default avatarDean Luick <dean.luick@intel.com>
Signed-off-by: default avatarDennis Dalessandro <dennis.dalessandro@intel.com>
Signed-off-by: default avatarDoug Ledford <dledford@redhat.com>
parent 107ffbc5
...@@ -14566,6 +14566,11 @@ struct hfi1_devdata *hfi1_init_dd(struct pci_dev *pdev, ...@@ -14566,6 +14566,11 @@ struct hfi1_devdata *hfi1_init_dd(struct pci_dev *pdev,
if (ret) if (ret)
goto bail_cleanup; goto bail_cleanup;
/* call before get_platform_config(), after init_chip_resources() */
ret = eprom_init(dd);
if (ret)
goto bail_free_rcverr;
/* Needs to be called before hfi1_firmware_init */ /* Needs to be called before hfi1_firmware_init */
get_platform_config(dd); get_platform_config(dd);
...@@ -14686,10 +14691,6 @@ struct hfi1_devdata *hfi1_init_dd(struct pci_dev *pdev, ...@@ -14686,10 +14691,6 @@ struct hfi1_devdata *hfi1_init_dd(struct pci_dev *pdev,
if (ret) if (ret)
goto bail_free_cntrs; goto bail_free_cntrs;
ret = eprom_init(dd);
if (ret)
goto bail_free_rcverr;
goto bail; goto bail;
bail_free_rcverr: bail_free_rcverr:
......
...@@ -47,29 +47,39 @@ ...@@ -47,29 +47,39 @@
#include "hfi.h" #include "hfi.h"
#include "efivar.h" #include "efivar.h"
#include "eprom.h"
void get_platform_config(struct hfi1_devdata *dd) void get_platform_config(struct hfi1_devdata *dd)
{ {
int ret = 0; int ret = 0;
unsigned long size = 0; unsigned long size = 0;
u8 *temp_platform_config = NULL; 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, ret = read_hfi1_efi_var(dd, "configuration", &size,
(void **)&temp_platform_config); (void **)&temp_platform_config);
if (ret) { if (!ret)
dd_dev_info(dd, goto success;
"%s: Failed to get platform config from UEFI, falling back to request firmware\n",
__func__); dd_dev_info(dd,
/* fall back to request firmware */ "%s: Failed to get platform config from UEFI, falling back to request firmware\n",
platform_config_load = 1; __func__);
goto bail; /* fall back to request firmware */
} platform_config_load = 1;
return;
success:
dd->platform_config.data = temp_platform_config; dd->platform_config.data = temp_platform_config;
dd->platform_config.size = size; dd->platform_config.size = size;
bail:
/* exit */;
} }
void free_platform_config(struct hfi1_devdata *dd) void free_platform_config(struct hfi1_devdata *dd)
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment