Loading drivers/i3c/master/i3c-master-qcom-geni.c +32 −0 Original line number Diff line number Diff line Loading @@ -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; Loading Loading @@ -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 { Loading Loading @@ -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; Loading Loading @@ -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 Loading
drivers/i3c/master/i3c-master-qcom-geni.c +32 −0 Original line number Diff line number Diff line Loading @@ -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; Loading Loading @@ -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 { Loading Loading @@ -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; Loading Loading @@ -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