layerscape: update linux 4.9 patches to LSDK-18.06
[openwrt/staging/mkresin.git] / target / linux / layerscape / patches-4.9 / 811-irqchip-support-layerscape.patch
index 3a44f26432ca1b4d590ab7c3988e3b102492ac57..3aca2526751ba18eb42c5ce3e572fa67baa3f55c 100644 (file)
@@ -1,7 +1,7 @@
-From 5a5ff01c790d49c0f6fd247f68f2fd9a2128ea91 Mon Sep 17 00:00:00 2001
+From dab02a7cc54494740e849cd51b554d100eb5541d Mon Sep 17 00:00:00 2001
 From: Yangbo Lu <yangbo.lu@nxp.com>
-Date: Wed, 17 Jan 2018 15:36:28 +0800
-Subject: [PATCH 23/30] irqchip: support layerscape
+Date: Thu, 5 Jul 2018 17:36:09 +0800
+Subject: [PATCH 23/32] irqchip: support layerscape
 
 This is an integrated patch for layerscape gic support.
 
@@ -9,16 +9,17 @@ Signed-off-by: Eric Auger <eric.auger@redhat.com>
 Signed-off-by: Zhao Qiang <qiang.zhao@nxp.com>
 Signed-off-by: Yangbo Lu <yangbo.lu@nxp.com>
 ---
- drivers/irqchip/Makefile         |  1 +
- drivers/irqchip/irq-gic-v3-its.c |  1 +
- include/linux/irqdomain.h        | 36 ++++++++++++++++++++++++++++++++++++
- kernel/irq/irqdomain.c           | 39 +++++++++++++++++++++++++++++++++++++++
- kernel/irq/msi.c                 |  4 ++--
- 5 files changed, 79 insertions(+), 2 deletions(-)
+ drivers/irqchip/Makefile           |  1 +
+ drivers/irqchip/irq-gic-v3-its.c   |  1 +
+ include/linux/irqchip/arm-gic-v3.h |  3 +++
+ include/linux/irqdomain.h          | 36 +++++++++++++++++++++++++++
+ kernel/irq/irqdomain.c             | 39 ++++++++++++++++++++++++++++++
+ kernel/irq/msi.c                   |  4 +--
+ 6 files changed, 82 insertions(+), 2 deletions(-)
 
 --- a/drivers/irqchip/Makefile
 +++ b/drivers/irqchip/Makefile
-@@ -74,3 +74,4 @@ obj-$(CONFIG_LS_SCFG_MSI)            += irq-ls-scf
+@@ -75,3 +75,4 @@ obj-$(CONFIG_LS_SCFG_MSI)            += irq-ls-scf
  obj-$(CONFIG_EZNPS_GIC)                       += irq-eznps.o
  obj-$(CONFIG_ARCH_ASPEED)             += irq-aspeed-vic.o
  obj-$(CONFIG_STM32_EXTI)              += irq-stm32-exti.o
@@ -33,9 +34,21 @@ Signed-off-by: Yangbo Lu <yangbo.lu@nxp.com>
        info->ops = &its_msi_domain_ops;
        info->data = its;
        inner_domain->host_data = info;
+--- a/include/linux/irqchip/arm-gic-v3.h
++++ b/include/linux/irqchip/arm-gic-v3.h
+@@ -133,6 +133,9 @@
+ #define GIC_BASER_SHAREABILITY(reg, type)                             \
+       (GIC_BASER_##type << reg##_SHAREABILITY_SHIFT)
++/* encode a size field of width @w containing @n - 1 units */
++#define GIC_ENCODE_SZ(n, w) (((unsigned long)(n) - 1) & GENMASK_ULL(((w) - 1), 0))
++
+ #define GICR_PROPBASER_SHAREABILITY_SHIFT             (10)
+ #define GICR_PROPBASER_INNER_CACHEABILITY_SHIFT               (7)
+ #define GICR_PROPBASER_OUTER_CACHEABILITY_SHIFT               (56)
 --- a/include/linux/irqdomain.h
 +++ b/include/linux/irqdomain.h
-@@ -183,6 +183,12 @@ enum {
+@@ -187,6 +187,12 @@ enum {
        /* Irq domain is an IPI domain with single virq */
        IRQ_DOMAIN_FLAG_IPI_SINGLE      = (1 << 3),
  
@@ -48,7 +61,7 @@ Signed-off-by: Yangbo Lu <yangbo.lu@nxp.com>
        /*
         * Flags starting from IRQ_DOMAIN_FLAG_NONCORE are reserved
         * for implementation specific purposes and ignored by the
-@@ -216,6 +222,7 @@ struct irq_domain *irq_domain_add_legacy
+@@ -220,6 +226,7 @@ struct irq_domain *irq_domain_add_legacy
                                         void *host_data);
  extern struct irq_domain *irq_find_matching_fwspec(struct irq_fwspec *fwspec,
                                                   enum irq_domain_bus_token bus_token);
@@ -56,7 +69,7 @@ Signed-off-by: Yangbo Lu <yangbo.lu@nxp.com>
  extern void irq_set_default_host(struct irq_domain *host);
  extern int irq_domain_alloc_descs(int virq, unsigned int nr_irqs,
                                  irq_hw_number_t hwirq, int node,
-@@ -446,6 +453,19 @@ static inline bool irq_domain_is_ipi_sin
+@@ -453,6 +460,19 @@ static inline bool irq_domain_is_ipi_sin
  {
        return domain->flags & IRQ_DOMAIN_FLAG_IPI_SINGLE;
  }
@@ -76,7 +89,7 @@ Signed-off-by: Yangbo Lu <yangbo.lu@nxp.com>
  #else /* CONFIG_IRQ_DOMAIN_HIERARCHY */
  static inline void irq_domain_activate_irq(struct irq_data *data) { }
  static inline void irq_domain_deactivate_irq(struct irq_data *data) { }
-@@ -477,6 +497,22 @@ static inline bool irq_domain_is_ipi_sin
+@@ -484,6 +504,22 @@ static inline bool irq_domain_is_ipi_sin
  {
        return false;
  }
@@ -101,7 +114,7 @@ Signed-off-by: Yangbo Lu <yangbo.lu@nxp.com>
  #else /* CONFIG_IRQ_DOMAIN */
 --- a/kernel/irq/irqdomain.c
 +++ b/kernel/irq/irqdomain.c
-@@ -278,6 +278,31 @@ struct irq_domain *irq_find_matching_fws
+@@ -319,6 +319,31 @@ struct irq_domain *irq_find_matching_fws
  EXPORT_SYMBOL_GPL(irq_find_matching_fwspec);
  
  /**
@@ -133,7 +146,7 @@ Signed-off-by: Yangbo Lu <yangbo.lu@nxp.com>
   * irq_set_default_host() - Set a "default" irq domain
   * @domain: default domain pointer
   *
-@@ -1408,6 +1433,20 @@ static void irq_domain_check_hierarchy(s
+@@ -1420,6 +1445,20 @@ static void irq_domain_check_hierarchy(s
        if (domain->ops->alloc)
                domain->flags |= IRQ_DOMAIN_FLAG_HIERARCHY;
  }