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

Commit 5e2f3315 authored by Linux Build Service Account's avatar Linux Build Service Account Committed by Gerrit - the friendly Code Review server
Browse files

Merge "cnss2: Add debugfs support to trigger firmware assert"

parents ab68b85a 445a6f42
Loading
Loading
Loading
Loading
+12 −3
Original line number Diff line number Diff line
@@ -137,11 +137,17 @@ static ssize_t cnss_dev_boot_debug_write(struct file *fp,
{
	struct cnss_plat_data *plat_priv =
		((struct seq_file *)fp->private_data)->private;
	struct cnss_pci_data *pci_priv;
	char buf[64];
	char *cmd;
	unsigned int len = 0;
	int ret = 0;

	if (!plat_priv)
		return -ENODEV;

	pci_priv = plat_priv->bus_priv;

	len = min(count, sizeof(buf) - 1);
	if (copy_from_user(buf, user_buf, len))
		return -EFAULT;
@@ -157,11 +163,11 @@ static ssize_t cnss_dev_boot_debug_write(struct file *fp,
		ret = cnss_pci_init(plat_priv);
	} else if (sysfs_streq(cmd, "download")) {
		set_bit(CNSS_DRIVER_DEBUG, &plat_priv->driver_state);
		ret = cnss_pci_start_mhi(plat_priv->bus_priv);
		ret = cnss_pci_start_mhi(pci_priv);
	} else if (sysfs_streq(cmd, "linkup")) {
		ret = cnss_resume_pci_link(plat_priv->bus_priv);
		ret = cnss_resume_pci_link(pci_priv);
	} else if (sysfs_streq(cmd, "linkdown")) {
		ret = cnss_suspend_pci_link(plat_priv->bus_priv);
		ret = cnss_suspend_pci_link(pci_priv);
	} else if (sysfs_streq(cmd, "powerup")) {
		set_bit(CNSS_DRIVER_DEBUG, &plat_priv->driver_state);
		ret = cnss_driver_event_post(plat_priv,
@@ -172,6 +178,8 @@ static ssize_t cnss_dev_boot_debug_write(struct file *fp,
					     CNSS_DRIVER_EVENT_POWER_DOWN,
					     0, NULL);
		clear_bit(CNSS_DRIVER_DEBUG, &plat_priv->driver_state);
	} else if (sysfs_streq(cmd, "assert")) {
		ret = cnss_force_fw_assert(&pci_priv->pci_dev->dev);
	} else {
		cnss_pr_err("Device boot debugfs command is invalid\n");
		ret = -EINVAL;
@@ -195,6 +203,7 @@ static int cnss_dev_boot_debug_show(struct seq_file *s, void *data)
	seq_puts(s, "linkdown: bring down PCIe link\n");
	seq_puts(s, "powerup: full power on sequence to boot device, download FW and do QMI handshake with FW\n");
	seq_puts(s, "shutdown: full power off sequence to shutdown device\n");
	seq_puts(s, "assert: trigger firmware assert\n");

	return 0;
}
+1 −2
Original line number Diff line number Diff line
@@ -1458,8 +1458,7 @@ int cnss_pci_set_mhi_state(struct cnss_pci_data *pci_priv,
		ret = mhi_pm_resume(pci_priv->mhi_ctrl);
		break;
	case CNSS_MHI_TRIGGER_RDDM:
		cnss_pr_dbg("Bypass MHI state: %s(%d)\n",
			    cnss_mhi_state_to_str(mhi_state), mhi_state);
		ret = mhi_force_rddm_mode(pci_priv->mhi_ctrl);
		break;
	default:
		cnss_pr_err("Unhandled MHI state (%d)\n", mhi_state);