layerscape: update linux 4.9 patches to LSDK-18.06
[openwrt/staging/mkresin.git] / target / linux / layerscape / patches-4.9 / 201-config-support-layerscape.patch
index 939880fd14399f8ddb50d6e923f74bbf82c1cf59..ea3cc702d9bb451161bdcb405dd4fef4a547c270 100644 (file)
@@ -1,12 +1,12 @@
-From 11edf9c88acea13d1a02901289060263b4027a77 Mon Sep 17 00:00:00 2001
+From 0774b97305507af18f8c43efb69aa00e6c57ae90 Mon Sep 17 00:00:00 2001
 From: Yangbo Lu <yangbo.lu@nxp.com>
-Date: Mon, 25 Sep 2017 09:52:26 +0800
+Date: Fri, 6 Jul 2018 15:31:14 +0800
 Subject: [PATCH] config: support layerscape
 MIME-Version: 1.0
 Content-Type: text/plain; charset=UTF-8
 Content-Transfer-Encoding: 8bit
 
-This is a integrated patch for layerscape config/makefile support.
+This is an integrated patch for layerscape config/makefile support.
 
 Signed-off-by: Yuantian Tang <andy.tang@nxp.com>
 Signed-off-by: Zhang Ying-22455 <ying.zhang22455@nxp.com>
@@ -16,36 +16,45 @@ Signed-off-by: Zhao Qiang <qiang.zhao@nxp.com>
 Signed-off-by: Horia Geantă <horia.geanta@nxp.com>
 Signed-off-by: Yangbo Lu <yangbo.lu@nxp.com>
 ---
drivers/base/Kconfig                    |   1 +
- drivers/crypto/Makefile                 |   2 +-
- drivers/net/ethernet/freescale/Kconfig  |   4 +-
- drivers/net/ethernet/freescale/Makefile |   2 +
- drivers/ptp/Kconfig                     |  29 ++++++
- drivers/rtc/Kconfig                     |   8 ++
- drivers/rtc/Makefile                    |   1 +
- drivers/soc/Kconfig                     |   3 +-
- drivers/soc/fsl/Kconfig                 |  22 +++++
- drivers/soc/fsl/Kconfig.arm             |  16 ++++
- drivers/soc/fsl/Makefile                |   4 +
- drivers/soc/fsl/layerscape/Kconfig      |  10 +++
- drivers/soc/fsl/layerscape/Makefile     |   1 +
- drivers/soc/fsl/rcpm.c                  | 154 ++++++++++++++++++++++++++++++++
- drivers/staging/Kconfig                 |   4 +
- drivers/staging/Makefile                |   2 +
- drivers/staging/fsl-dpaa2/Kconfig       |  41 +++++++++
- drivers/staging/fsl-dpaa2/Makefile      |   9 ++
- 18 files changed, 309 insertions(+), 4 deletions(-)
arch/arm/mach-imx/Kconfig               |  1 +
+ drivers/base/Kconfig                    |  1 +
+ drivers/crypto/Makefile                 |  2 +-
+ drivers/net/ethernet/freescale/Kconfig  |  4 +-
+ drivers/net/ethernet/freescale/Makefile |  2 +
+ drivers/ptp/Kconfig                     | 29 +++++++++++
+ drivers/rtc/Kconfig                     |  8 +++
+ drivers/rtc/Makefile                    |  1 +
+ drivers/soc/Kconfig                     |  3 +-
+ drivers/soc/fsl/Kconfig                 | 30 ++++++++++++
+ drivers/soc/fsl/Kconfig.arm             | 16 ++++++
+ drivers/soc/fsl/Makefile                |  5 ++
+ drivers/soc/fsl/layerscape/Kconfig      | 10 ++++
+ drivers/soc/fsl/layerscape/Makefile     |  1 +
+ drivers/staging/Kconfig                 |  6 +++
+ drivers/staging/Makefile                |  3 ++
+ drivers/staging/fsl-dpaa2/Kconfig       | 65 +++++++++++++++++++++++++
+ drivers/staging/fsl-dpaa2/Makefile      |  9 ++++
+ 18 files changed, 192 insertions(+), 4 deletions(-)
  create mode 100644 drivers/soc/fsl/Kconfig
  create mode 100644 drivers/soc/fsl/Kconfig.arm
  create mode 100644 drivers/soc/fsl/layerscape/Kconfig
  create mode 100644 drivers/soc/fsl/layerscape/Makefile
- create mode 100644 drivers/soc/fsl/rcpm.c
  create mode 100644 drivers/staging/fsl-dpaa2/Kconfig
  create mode 100644 drivers/staging/fsl-dpaa2/Makefile
 
+--- a/arch/arm/mach-imx/Kconfig
++++ b/arch/arm/mach-imx/Kconfig
+@@ -1,6 +1,7 @@
+ menuconfig ARCH_MXC
+       bool "Freescale i.MX family"
+       depends on ARCH_MULTI_V4_V5 || ARCH_MULTI_V6_V7 || ARM_SINGLE_ARMV7M
++      select ARCH_DMA_ADDR_T_64BIT if ARM_LPAE
+       select ARCH_SUPPORTS_BIG_ENDIAN
+       select CLKSRC_IMX_GPT
+       select GENERIC_IRQ_CHIP
 --- a/drivers/base/Kconfig
 +++ b/drivers/base/Kconfig
-@@ -237,6 +237,7 @@ config GENERIC_CPU_AUTOPROBE
+@@ -240,6 +240,7 @@ config GENERIC_CPU_VULNERABILITIES
  
  config SOC_BUS
        bool
@@ -170,7 +179,7 @@ Signed-off-by: Yangbo Lu <yangbo.lu@nxp.com>
  source "drivers/soc/rockchip/Kconfig"
 --- /dev/null
 +++ b/drivers/soc/fsl/Kconfig
-@@ -0,0 +1,22 @@
+@@ -0,0 +1,30 @@
 +#
 +# Freescale SOC drivers
 +#
@@ -190,6 +199,14 @@ Signed-off-by: Yangbo Lu <yangbo.lu@nxp.com>
 +        Initially only reading SVR and registering soc device are supported.
 +        Other guts accesses, such as reading RCW, should eventually be moved
 +        into this driver as well.
++
++config FSL_SLEEP_FSM
++      bool
++      help
++        This driver configures a hardware FSM (Finite State Machine) for deep sleep.
++        The FSM is used to finish clean-ups at the last stage of system entering deep
++        sleep, and also wakes up system when a wake up event happens.
++
 +if ARM || ARM64
 +source "drivers/soc/fsl/Kconfig.arm"
 +endif
@@ -214,7 +231,7 @@ Signed-off-by: Yangbo Lu <yangbo.lu@nxp.com>
 +endif
 --- a/drivers/soc/fsl/Makefile
 +++ b/drivers/soc/fsl/Makefile
-@@ -5,3 +5,7 @@
+@@ -5,3 +5,8 @@
  obj-$(CONFIG_FSL_DPAA)                 += qbman/
  obj-$(CONFIG_QUICC_ENGINE)            += qe/
  obj-$(CONFIG_CPM)                     += qe/
@@ -222,6 +239,7 @@ Signed-off-by: Yangbo Lu <yangbo.lu@nxp.com>
 +obj-$(CONFIG_FSL_LS2_CONSOLE)         += ls2-console/
 +obj-$(CONFIG_SUSPEND)                 += rcpm.o
 +obj-$(CONFIG_LS_SOC_DRIVERS)          += layerscape/
++obj-$(CONFIG_FSL_SLEEP_FSM)   += sleep_fsm.o
 --- /dev/null
 +++ b/drivers/soc/fsl/layerscape/Kconfig
 @@ -0,0 +1,10 @@
@@ -239,163 +257,6 @@ Signed-off-by: Yangbo Lu <yangbo.lu@nxp.com>
 +++ b/drivers/soc/fsl/layerscape/Makefile
 @@ -0,0 +1 @@
 +obj-$(CONFIG_FTM_ALARM) += ftm_alarm.o
---- /dev/null
-+++ b/drivers/soc/fsl/rcpm.c
-@@ -0,0 +1,154 @@
-+/*
-+ * Run Control and Power Management (RCPM) driver
-+ *
-+ * Copyright 2016 NXP
-+ *
-+ * This program is free software; you can redistribute it and/or modify
-+ * it under the terms of the GNU General Public License as published by
-+ * the Free Software Foundation; either version 2 of the License, or
-+ * (at your option) any later version.
-+ *
-+ * This program is distributed in the hope that it will be useful,
-+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
-+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-+ * GNU General Public License for more details.
-+ *
-+ */
-+#define pr_fmt(fmt) "RCPM: %s: " fmt, __func__
-+
-+#include <linux/kernel.h>
-+#include <linux/io.h>
-+#include <linux/of_platform.h>
-+#include <linux/of_address.h>
-+#include <linux/suspend.h>
-+
-+/* RCPM register offset */
-+#define RCPM_IPPDEXPCR0                       0x140
-+
-+#define RCPM_WAKEUP_CELL_SIZE 2
-+
-+struct rcpm_config {
-+      int ipp_num;
-+      int ippdexpcr_offset;
-+      u32 ippdexpcr[2];
-+      void *rcpm_reg_base;
-+};
-+
-+static struct rcpm_config *rcpm;
-+
-+static inline void rcpm_reg_write(u32 offset, u32 value)
-+{
-+      iowrite32be(value, rcpm->rcpm_reg_base + offset);
-+}
-+
-+static inline u32 rcpm_reg_read(u32 offset)
-+{
-+      return ioread32be(rcpm->rcpm_reg_base + offset);
-+}
-+
-+static void rcpm_wakeup_fixup(struct device *dev, void *data)
-+{
-+      struct device_node *node = dev ? dev->of_node : NULL;
-+      u32 value[RCPM_WAKEUP_CELL_SIZE];
-+      int ret, i;
-+
-+      if (!dev || !node || !device_may_wakeup(dev))
-+              return;
-+
-+      /*
-+       * Get the values in the "rcpm-wakeup" property.
-+       * Three values are:
-+       * The first is a pointer to the RCPM node.
-+       * The second is the value of the ippdexpcr0 register.
-+       * The third is the value of the ippdexpcr1 register.
-+       */
-+      ret = of_property_read_u32_array(node, "fsl,rcpm-wakeup",
-+                                       value, RCPM_WAKEUP_CELL_SIZE);
-+      if (ret)
-+              return;
-+
-+      pr_debug("wakeup source: the device %s\n", node->full_name);
-+
-+      for (i = 0; i < rcpm->ipp_num; i++)
-+              rcpm->ippdexpcr[i] |= value[i + 1];
-+}
-+
-+static int rcpm_suspend_prepare(void)
-+{
-+      int i;
-+
-+      BUG_ON(!rcpm);
-+
-+      for (i = 0; i < rcpm->ipp_num; i++)
-+              rcpm->ippdexpcr[i] = 0;
-+
-+      dpm_for_each_dev(NULL, rcpm_wakeup_fixup);
-+
-+      for (i = 0; i < rcpm->ipp_num; i++) {
-+              rcpm_reg_write(rcpm->ippdexpcr_offset + 4 * i,
-+                             rcpm->ippdexpcr[i]);
-+              pr_debug("ippdexpcr%d = 0x%x\n", i, rcpm->ippdexpcr[i]);
-+      }
-+
-+      return 0;
-+}
-+
-+static int rcpm_suspend_notifier_call(struct notifier_block *bl,
-+                                    unsigned long state,
-+                                    void *unused)
-+{
-+      switch (state) {
-+      case PM_SUSPEND_PREPARE:
-+              rcpm_suspend_prepare();
-+              break;
-+      }
-+
-+      return NOTIFY_DONE;
-+}
-+
-+static struct rcpm_config rcpm_default_config = {
-+      .ipp_num = 1,
-+      .ippdexpcr_offset = RCPM_IPPDEXPCR0,
-+};
-+
-+static const struct of_device_id rcpm_matches[] = {
-+      {
-+              .compatible = "fsl,qoriq-rcpm-2.1",
-+              .data = &rcpm_default_config,
-+      },
-+      {}
-+};
-+
-+static struct notifier_block rcpm_suspend_notifier = {
-+      .notifier_call = rcpm_suspend_notifier_call,
-+};
-+
-+static int __init layerscape_rcpm_init(void)
-+{
-+      const struct of_device_id *match;
-+      struct device_node *np;
-+
-+      np = of_find_matching_node_and_match(NULL, rcpm_matches, &match);
-+      if (!np) {
-+              pr_err("Can't find the RCPM node.\n");
-+              return -EINVAL;
-+      }
-+
-+      if (match->data)
-+              rcpm = (struct rcpm_config *)match->data;
-+      else
-+              return -EINVAL;
-+
-+      rcpm->rcpm_reg_base = of_iomap(np, 0);
-+      of_node_put(np);
-+      if (!rcpm->rcpm_reg_base)
-+              return -ENOMEM;
-+
-+      register_pm_notifier(&rcpm_suspend_notifier);
-+
-+      pr_info("The RCPM driver initialized.\n");
-+
-+      return 0;
-+}
-+
-+subsys_initcall(layerscape_rcpm_init);
 --- a/drivers/staging/Kconfig
 +++ b/drivers/staging/Kconfig
 @@ -94,6 +94,8 @@ source "drivers/staging/fbtft/Kconfig"
@@ -407,16 +268,18 @@ Signed-off-by: Yangbo Lu <yangbo.lu@nxp.com>
  source "drivers/staging/wilc1000/Kconfig"
  
  source "drivers/staging/most/Kconfig"
-@@ -106,4 +108,6 @@ source "drivers/staging/greybus/Kconfig"
+@@ -106,4 +108,8 @@ source "drivers/staging/greybus/Kconfig"
  
  source "drivers/staging/vc04_services/Kconfig"
  
 +source "drivers/staging/fsl_qbman/Kconfig"
++
++source "drivers/staging/fsl_ppfe/Kconfig"
 +
  endif # STAGING
 --- a/drivers/staging/Makefile
 +++ b/drivers/staging/Makefile
-@@ -36,9 +36,11 @@ obj-$(CONFIG_UNISYSSPAR)    += unisys/
+@@ -36,9 +36,12 @@ obj-$(CONFIG_UNISYSSPAR)    += unisys/
  obj-$(CONFIG_COMMON_CLK_XLNX_CLKWZRD) += clocking-wizard/
  obj-$(CONFIG_FB_TFT)          += fbtft/
  obj-$(CONFIG_FSL_MC_BUS)      += fsl-mc/
@@ -428,9 +291,10 @@ Signed-off-by: Yangbo Lu <yangbo.lu@nxp.com>
  obj-$(CONFIG_GREYBUS)         += greybus/
  obj-$(CONFIG_BCM2708_VCHIQ)   += vc04_services/
 +obj-$(CONFIG_FSL_SDK_DPA)     += fsl_qbman/
++obj-$(CONFIG_FSL_PPFE)                += fsl_ppfe/
 --- /dev/null
 +++ b/drivers/staging/fsl-dpaa2/Kconfig
-@@ -0,0 +1,41 @@
+@@ -0,0 +1,65 @@
 +#
 +# Freescale DataPath Acceleration Architecture Gen2 (DPAA2) drivers
 +#
@@ -462,16 +326,40 @@ Signed-off-by: Yangbo Lu <yangbo.lu@nxp.com>
 +
 +# QBMAN_DEBUG requires some additional DPIO APIs
 +config FSL_DPAA2_ETH_DEBUGFS
-+      depends on DEBUG_FS && FSL_QBMAN_DEBUG
++      depends on DEBUG_FS
 +      bool "Enable debugfs support"
 +      default n
 +      ---help---
 +        Enable advanced statistics through debugfs interface.
++
++config FSL_DPAA2_ETH_DCB
++        bool "Data Center Bridging (DCB) Support"
++        default n
++        depends on DCB
++        ---help---
++          Say Y here if you want to use Data Center Bridging (DCB) features
++          (PFC) in the driver.
++
++          If unsure, say N.
++
++config FSL_DPAA2_ETH_CEETM
++      depends on NET_SCHED
++      bool "DPAA2 Ethernet CEETM QoS"
++      default n
++      ---help---
++        Enable QoS offloading support through the CEETM hardware block.
 +endif
 +
 +source "drivers/staging/fsl-dpaa2/mac/Kconfig"
 +source "drivers/staging/fsl-dpaa2/evb/Kconfig"
-+source "drivers/staging/fsl-dpaa2/ethsw/Kconfig"
++
++config FSL_DPAA2_ETHSW
++      tristate "Freescale DPAA2 Ethernet Switch"
++      depends on FSL_DPAA2
++      depends on NET_SWITCHDEV
++      ---help---
++      Driver for Freescale DPAA2 Ethernet Switch. Select
++      BRIDGE to have support for bridge tools.
 --- /dev/null
 +++ b/drivers/staging/fsl-dpaa2/Makefile
 @@ -0,0 +1,9 @@
@@ -482,5 +370,5 @@ Signed-off-by: Yangbo Lu <yangbo.lu@nxp.com>
 +obj-$(CONFIG_FSL_DPAA2_ETH)   += ethernet/
 +obj-$(CONFIG_FSL_DPAA2_MAC)   += mac/
 +obj-$(CONFIG_FSL_DPAA2_EVB)   += evb/
-+obj-$(CONFIG_FSL_DPAA2_ETHSW) += ethsw/
 +obj-$(CONFIG_PTP_1588_CLOCK_DPAA2) += rtc/
++obj-$(CONFIG_FSL_DPAA2_ETHSW) += ethsw/