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

Commit 761d3d22 authored by Olof Johansson's avatar Olof Johansson
Browse files

Merge tag 'tegra-for-5.3-soc' of...

Merge tag 'tegra-for-5.3-soc' of git://git.kernel.org/pub/scm/linux/kernel/git/tegra/linux into arm/drivers

soc: tegra: Changes for v5.3-rc1

This contains a set of minor fixes and cleanups for core Tegra drivers.

* tag 'tegra-for-5.3-soc' of git://git.kernel.org/pub/scm/linux/kernel/git/tegra/linux

:
  soc/tegra: Select pinctrl for Tegra194
  soc/tegra: fuse: Do not log error message on deferred probe
  soc/tegra: pmc: Add comments clarifying wake events
  soc/tegra: pmc: Avoid crash for non-wake IRQs
  soc/tegra: pmc: Fail to allocate more than one wake IRQ

Signed-off-by: default avatarOlof Johansson <olof@lixom.net>
parents 09c4e038 7ac13f6d
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -109,6 +109,7 @@ config ARCH_TEGRA_186_SOC
config ARCH_TEGRA_194_SOC
	bool "NVIDIA Tegra194 SoC"
	select MAILBOX
	select PINCTRL_TEGRA194
	select TEGRA_BPMP
	select TEGRA_HSP_MBOX
	select TEGRA_IVC
+4 −2
Original line number Diff line number Diff line
@@ -133,8 +133,10 @@ static int tegra_fuse_probe(struct platform_device *pdev)

	fuse->clk = devm_clk_get(&pdev->dev, "fuse");
	if (IS_ERR(fuse->clk)) {
		if (PTR_ERR(fuse->clk) != -EPROBE_DEFER)
			dev_err(&pdev->dev, "failed to get FUSE clock: %ld",
				PTR_ERR(fuse->clk));

		fuse->base = base;
		return PTR_ERR(fuse->clk);
	}
+18 −0
Original line number Diff line number Diff line
@@ -232,6 +232,11 @@ struct tegra_pmc_soc {
	const char * const *reset_levels;
	unsigned int num_reset_levels;

	/*
	 * These describe events that can wake the system from sleep (i.e.
	 * LP0 or SC7). Wakeup from other sleep states (such as LP1 or LP2)
	 * are dealt with in the LIC.
	 */
	const struct tegra_wake_event *wake_events;
	unsigned int num_wake_events;
};
@@ -1854,6 +1859,9 @@ static int tegra_pmc_irq_alloc(struct irq_domain *domain, unsigned int virq,
	unsigned int i;
	int err = 0;

	if (WARN_ON(num_irqs > 1))
		return -EINVAL;

	for (i = 0; i < soc->num_wake_events; i++) {
		const struct tegra_wake_event *event = &soc->wake_events[i];

@@ -1894,6 +1902,11 @@ static int tegra_pmc_irq_alloc(struct irq_domain *domain, unsigned int virq,
		}
	}

	/*
	 * For interrupts that don't have associated wake events, assign a
	 * dummy hardware IRQ number. This is used in the ->irq_set_type()
	 * and ->irq_set_wake() callbacks to return early for these IRQs.
	 */
	if (i == soc->num_wake_events)
		err = irq_domain_set_hwirq_and_chip(domain, virq, ULONG_MAX,
						    &pmc->irq, pmc);
@@ -1912,6 +1925,10 @@ static int tegra_pmc_irq_set_wake(struct irq_data *data, unsigned int on)
	unsigned int offset, bit;
	u32 value;

	/* nothing to do if there's no associated wake event */
	if (WARN_ON(data->hwirq == ULONG_MAX))
		return 0;

	offset = data->hwirq / 32;
	bit = data->hwirq % 32;

@@ -1939,6 +1956,7 @@ static int tegra_pmc_irq_set_type(struct irq_data *data, unsigned int type)
	struct tegra_pmc *pmc = irq_data_get_irq_chip_data(data);
	u32 value;

	/* nothing to do if there's no associated wake event */
	if (data->hwirq == ULONG_MAX)
		return 0;