mirror of
https://github.com/AuxXxilium/linux_dsm_epyc7002.git
synced 2024-12-18 18:16:45 +07:00
bus: mhi: core: Read and save device hardware information from BHI
Device hardware specific information such as serial number and the OEM PK hash can be read using BHI and saved on host to identify the endpoint. Reviewed-by: Jeffrey Hugo <jhugo@codeaurora.org> Reviewed-by: Manivannan Sadhasivam <manivannan.sadhasivam@linaro.org> Signed-off-by: Bhaumik Bhatt <bbhatt@codeaurora.org> Signed-off-by: Manivannan Sadhasivam <manivannan.sadhasivam@linaro.org> Link: https://lore.kernel.org/r/20200929175218.8178-10-manivannan.sadhasivam@linaro.org Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:
parent
601455dae0
commit
8e3729bfa7
@ -392,13 +392,28 @@ void mhi_fw_load_handler(struct mhi_controller *mhi_cntrl)
|
||||
void *buf;
|
||||
dma_addr_t dma_addr;
|
||||
size_t size;
|
||||
int ret;
|
||||
int i, ret;
|
||||
|
||||
if (MHI_PM_IN_ERROR_STATE(mhi_cntrl->pm_state)) {
|
||||
dev_err(dev, "Device MHI is not in valid state\n");
|
||||
return;
|
||||
}
|
||||
|
||||
/* save hardware info from BHI */
|
||||
ret = mhi_read_reg(mhi_cntrl, mhi_cntrl->bhi, BHI_SERIALNU,
|
||||
&mhi_cntrl->serial_number);
|
||||
if (ret)
|
||||
dev_err(dev, "Could not capture serial number via BHI\n");
|
||||
|
||||
for (i = 0; i < ARRAY_SIZE(mhi_cntrl->oem_pk_hash); i++) {
|
||||
ret = mhi_read_reg(mhi_cntrl, mhi_cntrl->bhi, BHI_OEMPKHASH(i),
|
||||
&mhi_cntrl->oem_pk_hash[i]);
|
||||
if (ret) {
|
||||
dev_err(dev, "Could not capture OEM PK HASH via BHI\n");
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
/* If device is in pass through, do reset to ready state transition */
|
||||
if (mhi_cntrl->ee == MHI_EE_PTHRU)
|
||||
goto fw_load_ee_pthru;
|
||||
|
@ -16,6 +16,8 @@
|
||||
#include <linux/wait.h>
|
||||
#include <linux/workqueue.h>
|
||||
|
||||
#define MHI_MAX_OEM_PK_HASH_SEGMENTS 16
|
||||
|
||||
struct mhi_chan;
|
||||
struct mhi_event;
|
||||
struct mhi_ctxt;
|
||||
@ -316,6 +318,8 @@ struct mhi_controller_config {
|
||||
* @device_number: MHI controller device number
|
||||
* @major_version: MHI controller major revision number
|
||||
* @minor_version: MHI controller minor revision number
|
||||
* @serial_number: MHI controller serial number obtained from BHI
|
||||
* @oem_pk_hash: MHI controller OEM PK Hash obtained from BHI
|
||||
* @mhi_event: MHI event ring configurations table
|
||||
* @mhi_cmd: MHI command ring configurations table
|
||||
* @mhi_ctxt: MHI device context, shared memory between host and device
|
||||
@ -394,6 +398,8 @@ struct mhi_controller {
|
||||
u32 device_number;
|
||||
u32 major_version;
|
||||
u32 minor_version;
|
||||
u32 serial_number;
|
||||
u32 oem_pk_hash[MHI_MAX_OEM_PK_HASH_SEGMENTS];
|
||||
|
||||
struct mhi_event *mhi_event;
|
||||
struct mhi_cmd *mhi_cmd;
|
||||
|
Loading…
Reference in New Issue
Block a user