i3c: i3c-master-qcom-geni: Add HW and FW version read support
This change adds the support to read Firmware and QUP HW version during probe time. This helps to take decision during debug and also serves as a debug information. Change-Id: I3d5de6bc11dd5b30bbc0e345d9b48b342c4ff3ed Signed-off-by: Mukesh Kumar Savaliya <msavaliy@codeaurora.org>
This commit is contained in:
parent
554cd52a96
commit
62f02fd389
1 changed files with 32 additions and 0 deletions
|
@ -244,6 +244,15 @@ struct rcvd_ibi_data {
|
|||
u32 payload;
|
||||
};
|
||||
|
||||
|
||||
struct geni_i3c_ver_info {
|
||||
int hw_major_ver;
|
||||
int hw_minor_ver;
|
||||
int hw_step_ver;
|
||||
int m_fw_ver;
|
||||
int s_fw_ver;
|
||||
};
|
||||
|
||||
struct geni_ibi {
|
||||
bool hw_support;
|
||||
bool is_init;
|
||||
|
@ -283,6 +292,7 @@ struct geni_i3c_dev {
|
|||
struct work_struct hj_wd;
|
||||
struct wakeup_source *hj_wl;
|
||||
struct pinctrl_state *i3c_gpio_disable;
|
||||
struct geni_i3c_ver_info ver_info;
|
||||
};
|
||||
|
||||
struct geni_i3c_i2c_dev_data {
|
||||
|
@ -1990,6 +2000,26 @@ static int i3c_ibi_rsrcs_init(struct geni_i3c_dev *gi3c,
|
|||
return 0;
|
||||
}
|
||||
|
||||
static void geni_i3c_get_ver_info(struct geni_i3c_dev *gi3c)
|
||||
{
|
||||
int hw_ver;
|
||||
unsigned int major, minor, step;
|
||||
|
||||
hw_ver = geni_se_qupv3_hw_version(gi3c->se.i3c_rsc.wrapper_dev,
|
||||
&major, &minor, &step);
|
||||
if (hw_ver)
|
||||
GENI_SE_ERR(gi3c->ipcl, true, gi3c->se.dev,
|
||||
"%s:Error reading HW version %d\n", __func__, hw_ver);
|
||||
else
|
||||
GENI_SE_DBG(gi3c->ipcl, false, gi3c->se.dev,
|
||||
"%s:Major:%d Minor:%d step:%d\n", __func__, major, minor, step);
|
||||
|
||||
gi3c->ver_info.m_fw_ver = get_se_m_fw(gi3c->se.base);
|
||||
gi3c->ver_info.s_fw_ver = get_se_s_fw(gi3c->se.base);
|
||||
GENI_SE_DBG(gi3c->ipcl, false, gi3c->se.dev, "%s:FW Ver:0x%x%x\n",
|
||||
__func__, gi3c->ver_info.m_fw_ver, gi3c->ver_info.s_fw_ver);
|
||||
}
|
||||
|
||||
static int geni_i3c_probe(struct platform_device *pdev)
|
||||
{
|
||||
struct geni_i3c_dev *gi3c;
|
||||
|
@ -2059,6 +2089,8 @@ static int geni_i3c_probe(struct platform_device *pdev)
|
|||
"Invalid proto %d\n", proto);
|
||||
ret = -ENXIO;
|
||||
goto geni_resources_off;
|
||||
} else {
|
||||
geni_i3c_get_ver_info(gi3c);
|
||||
}
|
||||
|
||||
se_mode = geni_read_reg(gi3c->se.base, GENI_IF_FIFO_DISABLE_RO);
|
||||
|
|
Loading…
Reference in a new issue