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

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

Merge "serial: msm_geni_serial: Vote for shutdown pinctrl during BT off"

parents f127889e 0df046ba
Loading
Loading
Loading
Loading
+21 −1
Original line number Diff line number Diff line
// SPDX-License-Identifier: GPL-2.0-only
/*
 * Copyright (c) 2016-2020, The Linux Foundation. All rights reserved.
 * Copyright (c) 2016-2021, The Linux Foundation. All rights reserved.
 */

#include <linux/bitmap.h>
@@ -2201,6 +2201,14 @@ static void msm_geni_serial_shutdown(struct uart_port *uport)
			disable_irq(msm_port->wakeup_irq);
			free_irq(msm_port->wakeup_irq, uport);
		}

		if (!IS_ERR_OR_NULL(msm_port->serial_rsc.geni_gpio_shutdown)) {
			ret = pinctrl_select_state(msm_port->serial_rsc.geni_pinctrl,
						msm_port->serial_rsc.geni_gpio_shutdown);
		if (ret)
			IPC_LOG_MSG(msm_port->ipc_log_misc,
				"%s: Error %d pinctrl_select_state\n", __func__, ret);
		}
	}
	IPC_LOG_MSG(msm_port->ipc_log_misc, "%s: End\n", __func__);
}
@@ -2919,6 +2927,18 @@ static int msm_geni_serial_get_irq_pinctrl(struct platform_device *pdev,
		dev_err(&pdev->dev, "No pinctrl config specified!\n");
		return PTR_ERR(dev_port->serial_rsc.geni_pinctrl);
	}

	if (!dev_port->is_console) {
		if (IS_ERR_OR_NULL(pinctrl_lookup_state(dev_port->serial_rsc.geni_pinctrl,
				PINCTRL_SHUTDOWN))) {
			dev_info(&pdev->dev, "No Shutdown config specified\n");
		} else {
			dev_port->serial_rsc.geni_gpio_shutdown =
			pinctrl_lookup_state(dev_port->serial_rsc.geni_pinctrl,
							PINCTRL_SHUTDOWN);
		}
	}

	dev_port->serial_rsc.geni_gpio_active =
		pinctrl_lookup_state(dev_port->serial_rsc.geni_pinctrl,
							PINCTRL_ACTIVE);
+3 −1
Original line number Diff line number Diff line
/* SPDX-License-Identifier: GPL-2.0-only */
/*
 * Copyright (c) 2017-2020, The Linux Foundation. All rights reserved.
 * Copyright (c) 2017-2021, The Linux Foundation. All rights reserved.
 */

#ifndef _LINUX_MSM_GENI_SE
@@ -67,6 +67,7 @@ struct se_geni_rsc {
	unsigned long ib;
	unsigned long ib_noc;
	struct pinctrl *geni_pinctrl;
	struct pinctrl_state *geni_gpio_shutdown;
	struct pinctrl_state *geni_gpio_active;
	struct pinctrl_state *geni_gpio_sleep;
	int	clk_freq_out;
@@ -77,6 +78,7 @@ struct se_geni_rsc {
#define PINCTRL_DEFAULT	"default"
#define PINCTRL_ACTIVE	"active"
#define PINCTRL_SLEEP	"sleep"
#define PINCTRL_SHUTDOWN	"shutdown"

#define KHz(freq) (1000 * (freq))