From: Nobuhiro Iwamatsu <nobuhiro.iwamatsu...@renesas.com>

Add information of device node to struct intc_desc.

Cc: Magnus Damm <d...@opensource.se>
Signed-off-by: Nobuhiro Iwamatsu <nobuhiro.iwamatsu...@renesas.com>
Signed-off-by: Simon Horman <horms+rene...@verge.net.au>

---

v7
* Delete "renesas,sh_intcs" and "renesas,sh_intca_irq_pins" as compatible.
  Update their documentation.
* Remove of_sh_intc_get_meminfo() and of_sh_intc_get_pint and
  of_sh_intc_get_intc(). They are not used.

v2 - v6
* No change
---
 Documentation/devicetree/bindings/sh/intc.txt |   15 +----
 drivers/sh/intc/core.c                        |    2 +-
 drivers/sh/intc/internals.h                   |    3 +-
 drivers/sh/intc/irqdomain.c                   |    6 +-
 drivers/sh/intc/of_intc.c                     |   76 -------------------------
 include/linux/sh_intc.h                       |   29 +---------
 6 files changed, 9 insertions(+), 122 deletions(-)

diff --git a/Documentation/devicetree/bindings/sh/intc.txt 
b/Documentation/devicetree/bindings/sh/intc.txt
index ebb2398..04b7f73 100644
--- a/Documentation/devicetree/bindings/sh/intc.txt
+++ b/Documentation/devicetree/bindings/sh/intc.txt
@@ -7,10 +7,7 @@ is managed by DT, in order to maintain compatibility.
 
 Main node required properties:
 
-- compatible : should be one of:
-       "renesas,sh_intca"
-       "renesas,sh_intcs"
-       "renesas,sh_intca_irq_pins"
+- compatible : "renesas,sh_intc"
 
 - interrupt-controller : Identifies the node as an interrupt controller
 - #interrupt-cells     : Set already 1.
@@ -100,18 +97,10 @@ Optional:
        This node required properties:
          * vector : This specifies the address phandle of INTCS.
 
-Note:
-- "renesas,sh_intca" needs group_size, intc_group*, intc_vectors,
-  intc_mask_registers and intc_prio_registers.
-- "renesas,sh_intcs" needs group_size, intc_group*, intc_vectors,
-  intc_mask_registers, intc_prio_registers and  intc_intevtsa.
-- "renesas,sh_intca_irq_pins" needs intc_vectors, intc_mask_registers,
-  intc_prio_registers, intc_sense_registers and intc_ack_registers.
-
 Example:
 
        intca: interrupt-controller@0 {
-               compatible = "renesas,sh_intca";
+               compatible = "renesas,sh_intc";
                interrupt-controller;
                #address-cells = <1>;
                #size-cells = <1>;
diff --git a/drivers/sh/intc/core.c b/drivers/sh/intc/core.c
index 8f32a13..3963af3 100644
--- a/drivers/sh/intc/core.c
+++ b/drivers/sh/intc/core.c
@@ -311,7 +311,7 @@ int __init register_intc_controller(struct intc_desc *desc)
 
        BUG_ON(k > 256); /* _INTC_ADDR_E() and _INTC_ADDR_D() are 8 bits */
 
-       intc_irq_domain_init(d, hw);
+       intc_irq_domain_init(d, hw, desc->of_node);
 
        /* register the vectors one by one */
        for (i = 0; i < hw->nr_vectors; i++) {
diff --git a/drivers/sh/intc/internals.h b/drivers/sh/intc/internals.h
index 7dff08e..e6f64bf 100644
--- a/drivers/sh/intc/internals.h
+++ b/drivers/sh/intc/internals.h
@@ -190,7 +190,8 @@ void intc_enable_disable_enum(struct intc_desc *desc, 
struct intc_desc_int *d,
                              intc_enum enum_id, int enable);
 
 /* irqdomain.c */
-void intc_irq_domain_init(struct intc_desc_int *d, struct intc_hw_desc *hw);
+void intc_irq_domain_init(struct intc_desc_int *d, struct intc_hw_desc *hw,
+                               struct device_node *of_node);
 
 /* virq.c */
 void intc_subgroup_init(struct intc_desc *desc, struct intc_desc_int *d);
diff --git a/drivers/sh/intc/irqdomain.c b/drivers/sh/intc/irqdomain.c
index 3968f1c..c56c736 100644
--- a/drivers/sh/intc/irqdomain.c
+++ b/drivers/sh/intc/irqdomain.c
@@ -42,7 +42,7 @@ static const struct irq_domain_ops intc_evt_ops = {
 };
 
 void __init intc_irq_domain_init(struct intc_desc_int *d,
-                                struct intc_hw_desc *hw)
+                        struct intc_hw_desc *hw, struct device_node *np)
 {
        unsigned int irq_base, irq_end;
 
@@ -59,10 +59,10 @@ void __init intc_irq_domain_init(struct intc_desc_int *d,
         * tree penalty for linear cases with non-zero hwirq bases.
         */
        if (irq_base == 0 && irq_end == (irq_base + hw->nr_vectors - 1))
-               d->domain = irq_domain_add_linear(NULL, hw->nr_vectors,
+               d->domain = irq_domain_add_linear(np, hw->nr_vectors,
                                                  &intc_evt_ops, NULL);
        else
-               d->domain = irq_domain_add_tree(NULL, &intc_evt_ops, NULL);
+               d->domain = irq_domain_add_tree(np, &intc_evt_ops, NULL);
 
        BUG_ON(!d->domain);
 }
diff --git a/drivers/sh/intc/of_intc.c b/drivers/sh/intc/of_intc.c
index 04b0732..8a466f7 100644
--- a/drivers/sh/intc/of_intc.c
+++ b/drivers/sh/intc/of_intc.c
@@ -530,49 +530,6 @@ void __init of_sh_intc_get_skip_syscore_suspend(struct 
device_node *np,
                d->skip_syscore_suspend = false;
 }
 
-int __init of_sh_intc_get_meminfo(struct device_node *np,
-                               struct resource *res, int res_no)
-{
-       int ret = 0, i;
-
-       for (i = 0 ; i < res_no ; i++) {
-               ret = of_address_to_resource(np, i, &res[i]);
-               if (ret) {
-                       pr_err("could not determine device base address\n");
-                       return ret;
-               }
-
-               pr_debug("%s: Address 0x%x, size %d\n",
-                       __func__, res[i].start, resource_size(&res[i]));
-       }
-
-       return ret;
-}
-
-int __init of_sh_intc_get_pint(struct device_node *np, struct intc_desc *d)
-{
-       /* pint uses vector, mask and sence. */
-       int ret = of_sh_intc_get_vector(np, &d->hw.vectors,
-                               &d->hw.nr_vectors);
-       if (ret)
-               return ret;
-
-       ret = of_sh_intc_get_mask(np, &d->hw.mask_regs,
-                               &d->hw.nr_mask_regs);
-       if (ret)
-               return ret;
-
-       ret = of_sh_intc_get_sense(np, &d->hw.sense_regs,
-                               &d->hw.nr_sense_regs);
-       /* INTC may not need Sence register. */
-       if (ret && ret != -ENOENT)
-               return ret;
-
-       d->of_node = np;
-
-       return 0;
-}
-
 int __init of_sh_intc_get_intc(struct device_node *np, struct intc_desc *d)
 {
        int ret = of_sh_intc_get_vector(np, &d->hw.vectors,
@@ -612,36 +569,3 @@ int __init of_sh_intc_get_intc(struct device_node *np, 
struct intc_desc *d)
 
        return 0;
 }
-
-int __init of_sh_intc_get_intc_pins(struct device_node *np,
-                               struct intc_desc *d)
-{
-       int ret = of_sh_intc_get_vector(np, &d->hw.vectors,
-                               &d->hw.nr_vectors);
-       if (ret)
-               return ret;
-
-       ret = of_sh_intc_get_mask(np, &d->hw.mask_regs,
-                               &d->hw.nr_mask_regs);
-       if (ret)
-               return ret;
-
-       ret = of_sh_intc_get_prio(np, &d->hw.prio_regs,
-                               &d->hw.nr_prio_regs);
-       if (ret)
-               return ret;
-
-       ret = of_sh_intc_get_sense(np, &d->hw.sense_regs,
-                               &d->hw.nr_sense_regs);
-       if (ret)
-               return ret;
-
-       ret = of_sh_intc_get_ack(np, &d->hw.ack_regs,
-                               &d->hw.nr_ack_regs);
-       if (ret)
-               return ret;
-
-       d->of_node = np;
-
-       return 0;
-}
diff --git a/include/linux/sh_intc.h b/include/linux/sh_intc.h
index b0e7925..c7954ee 100644
--- a/include/linux/sh_intc.h
+++ b/include/linux/sh_intc.h
@@ -118,6 +118,7 @@ struct intc_desc {
        intc_enum force_disable;
        bool skip_syscore_suspend;
        struct intc_hw_desc hw;
+       struct device_node *of_node;
 };
 
 #define DECLARE_INTC_DESC(symbol, chipname, vectors, groups,           \
@@ -160,26 +161,6 @@ static inline int register_intc_userimask(unsigned long 
addr)
 int of_sh_intc_get_intc(struct device_node *np, struct intc_desc *d);
 
 /*
- * of_sh_initc_get_intc_pins() - Get INTC Pins table.
- * @np:     device node to get INTC from
- * @d:      a pointer of intc pins table
- *
- * Return: one of the errno value on the error condition
- */
-int of_sh_intc_get_intc_pins(struct device_node *np, struct intc_desc *d);
-
-/*
- * of_sh_intc_get_meminfo() - Get and set INTC register of memory.
- * @np:     device node to get INTC from
- * @res_mem:   a pointer of resource
- * @res_no:  resource number
- *
- * Return: one of the errno value on the error condition
- */
-int of_sh_intc_get_meminfo(struct device_node *np,
-                               struct resource *res_mem, int resno);
-
-/*
  * of_sh_intc_get_force_enable - Get and set force_enable vector in
  *                               struct intc_desc.
  * @np:  device node to get INTC from
@@ -220,13 +201,5 @@ void of_sh_intc_get_skip_syscore_suspend(struct 
device_node *np,
  * Return: one of the errno value on the error condition
  */
 int of_sh_intc_get_intevtsa_vect(struct device_node *np, unsigned short *vect);
-/*
- * of_sh_initc_get_intc_pint() - Get INTC Pint table.
- * @np:     device node to get INTC from
- * @d:      a pointer of intc pint table
- *
- * Return: one of the errno value on the error condition
- */
-int of_sh_intc_get_pint(struct device_node *np, struct intc_desc *d);
 
 #endif /* __SH_INTC_H */
-- 
1.7.10.4

_______________________________________________
devicetree-discuss mailing list
devicetree-discuss@lists.ozlabs.org
https://lists.ozlabs.org/listinfo/devicetree-discuss

Reply via email to