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

Commit aaf7e2f0 authored by Sameer Thalappil's avatar Sameer Thalappil
Browse files

cnss2: Add support for host pin connect tests



A successful FW download use case is used to set pin
connectivity test results. When there are additional tests
added for specific use cases, some of the pins here will be
set based on those specific tests.

Change-Id: I4d81fa9f0c74410d23e63c7187e1c63962c99941
Signed-off-by: default avatarSameer Thalappil <sameert@codeaurora.org>
parent 011b5157
Loading
Loading
Loading
Loading
+2 −0
Original line number Diff line number Diff line
@@ -31,6 +31,8 @@ static int cnss_pin_connect_show(struct seq_file *s, void *data)
		   cnss_priv->pin_result.fw_phy_io_pin_result);
	seq_printf(s, "FW RF pin result: %04x\n",
		   cnss_priv->pin_result.fw_rf_pin_result);
	seq_printf(s, "Host pin result: %04x\n",
		   cnss_priv->pin_result.host_pin_result);
	seq_puts(s, "\n");

	return 0;
+1 −0
Original line number Diff line number Diff line
@@ -1013,6 +1013,7 @@ static int cnss_qca6290_powerup(struct cnss_plat_data *plat_priv)
		cnss_pr_err("Failed to start MHI, err = %d\n", ret);
		goto suspend_link;
	}
	cnss_set_pin_connect_status(plat_priv);

bypass_fbc:
	if (qmi_bypass)
+14 −0
Original line number Diff line number Diff line
@@ -114,10 +114,23 @@ struct cnss_recovery_work_t {
	enum cnss_recovery_reason reason;
};

enum cnss_pins {
	CNSS_WLAN_EN,
	CNSS_PCIE_TXP,
	CNSS_PCIE_TXN,
	CNSS_PCIE_RXP,
	CNSS_PCIE_RXN,
	CNSS_PCIE_REFCLKP,
	CNSS_PCIE_REFCLKN,
	CNSS_PCIE_RST,
	CNSS_PCIE_WAKE,
};

struct cnss_pin_connect_result {
	u32 fw_pwr_pin_result;
	u32 fw_phy_io_pin_result;
	u32 fw_rf_pin_result;
	u32 host_pin_result;
};

struct cnss_plat_data {
@@ -170,5 +183,6 @@ int cnss_register_subsys(struct cnss_plat_data *plat_priv);
void cnss_unregister_subsys(struct cnss_plat_data *plat_priv);
int cnss_register_ramdump(struct cnss_plat_data *plat_priv);
void cnss_unregister_ramdump(struct cnss_plat_data *plat_priv);
void cnss_set_pin_connect_status(struct cnss_plat_data *plat_priv);

#endif /* _CNSS_MAIN_H */
+16 −0
Original line number Diff line number Diff line
@@ -368,3 +368,19 @@ void cnss_power_off_device(struct cnss_plat_data *plat_priv)
	cnss_select_pinctrl_state(plat_priv, false);
	cnss_vreg_off(plat_priv);
}

void cnss_set_pin_connect_status(struct cnss_plat_data *plat_priv)
{
	unsigned long pin_status = 0;

	set_bit(CNSS_WLAN_EN, &pin_status);
	set_bit(CNSS_PCIE_TXN, &pin_status);
	set_bit(CNSS_PCIE_TXP, &pin_status);
	set_bit(CNSS_PCIE_RXN, &pin_status);
	set_bit(CNSS_PCIE_RXP, &pin_status);
	set_bit(CNSS_PCIE_REFCLKN, &pin_status);
	set_bit(CNSS_PCIE_REFCLKP, &pin_status);
	set_bit(CNSS_PCIE_RST, &pin_status);

	plat_priv->pin_result.host_pin_result = pin_status;
}