Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 640294f6 authored by qctecmdr's avatar qctecmdr Committed by Gerrit - the friendly Code Review server
Browse files

Merge "i3c: i3c-master-qcom-geni: Add HW and FW version read support"

parents 61b5bcfa 62f02fd3
Loading
Loading
Loading
Loading
+32 −0
Original line number Diff line number Diff line
@@ -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);