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

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

Merge "haven: ctrl: add nohypuart commandline parameter"

parents 7fd88fc5 0c5085d2
Loading
Loading
Loading
Loading
+28 −14
Original line number Diff line number Diff line
@@ -48,14 +48,27 @@

static bool qc_hyp_calls;
static struct hh_hcall_hyp_identify_resp haven_api;
static bool disable_uart;

#if !defined(CONFIG_HH_DISABLE_UART)
static int __init setup_nohyp_uart(char *arg)
{
	disable_uart = true;
	return 0;
}
early_param("nohyp_uart", setup_nohyp_uart);
#endif

#if defined(CONFIG_HH_DISABLE_UART)
static void hh_disable_uart(void)
{
	if (qc_hyp_calls)
#if defined(CONFIG_HH_DISABLE_UART)
	disable_uart = true;
#endif
	if (disable_uart) {
		pr_info("Haven: disabling HYP UART\n");
		arm_smccc_1_1_smc(QC_HYP_SMCCC_UART_DISABLE, NULL);
	}
#endif
}

static ssize_t type_show(struct kobject *kobj, struct kobj_attribute *attr,
			 char *buffer)
@@ -190,10 +203,8 @@ static int __init hh_ctrl_init(void)
	    (res.a2 == QC_HYP_UID2) && (res.a3 == QC_HYP_UID3))
		qc_hyp_calls = true;

#if defined(CONFIG_HH_DISABLE_UART)
	if (qc_hyp_calls) {
		hh_disable_uart();
#endif

		ret = hh_sysfs_register();
		if (ret)
			return ret;
@@ -201,6 +212,9 @@ static int __init hh_ctrl_init(void)
		ret = hh_dbgfs_register();
		if (ret)
			pr_warn("failed to register dbgfs: %d\n", ret);
	} else {
		pr_info("Haven: no QC HYP interface detected\n");
	}

	return 0;
}