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

Commit 213ae902 authored by Olof Johansson's avatar Olof Johansson
Browse files

Merge tag 'imx-soc-4.8' of...

Merge tag 'imx-soc-4.8' of git://git.kernel.org/pub/scm/linux/kernel/git/shawnguo/linux into next/soc

The i.MX SoC changes for 4.8:
 - A patch series including both cpuidle and FEC driver changes to
   disable deeper idle states when FEC is active while board level
   workaround for ERR006687 is not available
 - A number patches to fix sparse warnings and spell errors
 - A fix for TZIC FIQ translation from VIRQ to HWIRQ
 - Support compatible of i.MX7 Solo SoC which has a subset of i.MX7 Dual

* tag 'imx-soc-4.8' of git://git.kernel.org/pub/scm/linux/kernel/git/shawnguo/linux

:
  ARM: imx: add support for i.MX 7Solo
  ARM: i.MX: Disable supervisor protect for i.MX51
  ARM: imx6: fix missing <soc/imx/cpuidle.h> in cpuidle-imx6q.c
  ARM: i.MX: Fix FIQ interrupt handling for TZIC
  ARM: imx6: fix static declaration in include/soc/imx/cpuidle.h
  ARM: imx6q: export cpuidle functions needed by fec driver
  ARM: imx: fix missing include of common.h
  ARM: imx: fix missing includes
  ARM: imx6: disable deeper idle states when FEC is active w/o HW workaround
  ARM: mach-imx6q: fix spelling mistake in error message

Signed-off-by: default avatarOlof Johansson <olof@lixom.net>
parents e2bd0d37 18245c24
Loading
Loading
Loading
Loading
+3 −0
Original line number Diff line number Diff line
@@ -27,6 +27,9 @@ Optional properties:
  number to 1.
- fsl,magic-packet : If present, indicates that the hardware supports waking
  up via magic packet.
- fsl,err006687-workaround-present: If present indicates that the system has
  the hardware workaround for ERR006687 applied and does not need a software
  workaround.

Optional subnodes:
- mdio : specifies the mdio bus in the FEC, used as a container for phy nodes
+8 −11
Original line number Diff line number Diff line
@@ -55,23 +55,20 @@ static void __iomem *avic_base;
static struct irq_domain *domain;

#ifdef CONFIG_FIQ
static int avic_set_irq_fiq(unsigned int irq, unsigned int type)
static int avic_set_irq_fiq(unsigned int hwirq, unsigned int type)
{
	struct irq_data *d = irq_get_irq_data(irq);
	unsigned int irqt;

	irq = d->hwirq;

	if (irq >= AVIC_NUM_IRQS)
	if (hwirq >= AVIC_NUM_IRQS)
		return -EINVAL;

	if (irq < AVIC_NUM_IRQS / 2) {
		irqt = imx_readl(avic_base + AVIC_INTTYPEL) & ~(1 << irq);
		imx_writel(irqt | (!!type << irq), avic_base + AVIC_INTTYPEL);
	if (hwirq < AVIC_NUM_IRQS / 2) {
		irqt = imx_readl(avic_base + AVIC_INTTYPEL) & ~(1 << hwirq);
		imx_writel(irqt | (!!type << hwirq), avic_base + AVIC_INTTYPEL);
	} else {
		irq -= AVIC_NUM_IRQS / 2;
		irqt = imx_readl(avic_base + AVIC_INTTYPEH) & ~(1 << irq);
		imx_writel(irqt | (!!type << irq), avic_base + AVIC_INTTYPEH);
		hwirq -= AVIC_NUM_IRQS / 2;
		irqt = imx_readl(avic_base + AVIC_INTTYPEH) & ~(1 << hwirq);
		imx_writel(irqt | (!!type << hwirq), avic_base + AVIC_INTTYPEH);
	}

	return 0;
+20 −0
Original line number Diff line number Diff line
@@ -10,6 +10,8 @@
#include <linux/module.h>
#include <asm/cpuidle.h>

#include <soc/imx/cpuidle.h>

#include "common.h"
#include "cpuidle.h"
#include "hardware.h"
@@ -62,6 +64,24 @@ static struct cpuidle_driver imx6q_cpuidle_driver = {
	.safe_state_index = 0,
};

/*
 * i.MX6 Q/DL has an erratum (ERR006687) that prevents the FEC from waking the
 * CPUs when they are in wait(unclocked) state. As the hardware workaround isn't
 * applicable to all boards, disable the deeper idle state when the workaround
 * isn't present and the FEC is in use.
 */
void imx6q_cpuidle_fec_irqs_used(void)
{
	imx6q_cpuidle_driver.states[1].disabled = true;
}
EXPORT_SYMBOL_GPL(imx6q_cpuidle_fec_irqs_used);

void imx6q_cpuidle_fec_irqs_unused(void)
{
	imx6q_cpuidle_driver.states[1].disabled = false;
}
EXPORT_SYMBOL_GPL(imx6q_cpuidle_fec_irqs_unused);

int __init imx6q_cpuidle_init(void)
{
	/* Set INT_MEM_CLK_LPM bit to get a reliable WAIT mode support */
+3 −0
Original line number Diff line number Diff line
@@ -22,6 +22,9 @@
#include <linux/err.h>
#include <linux/platform_device.h>

#include "../common.h"
#include "devices-common.h"

struct device mxc_aips_bus = {
	.init_name	= "mxc_aips",
};
+1 −0
Original line number Diff line number Diff line
@@ -7,6 +7,7 @@
 * Free Software Foundation.
 */
#include "devices-common.h"
#include "../common.h"

struct platform_device *__init mxc_register_gpio(char *name, int id,
	resource_size_t iobase, resource_size_t iosize, int irq, int irq_high)
Loading