irqchip/ti-sci-inta: Do not store TISCI device id in platform device id field
authorLokesh Vutla <lokeshvutla@ti.com>
Thu, 6 Aug 2020 07:48:22 +0000 (13:18 +0530)
committerMarc Zyngier <maz@kernel.org>
Sun, 16 Aug 2020 21:01:19 +0000 (22:01 +0100)
Even though DT doesn't make active use of id field in platform_device, we cannot
hijack it to store TISCI device id. So create a field in struct ti_sci_inta
for storing TISCI id and drop usage of id field in platform_device.

Signed-off-by: Lokesh Vutla <lokeshvutla@ti.com>
Signed-off-by: Marc Zyngier <maz@kernel.org>
Link: https://lore.kernel.org/r/20200806074826.24607-10-lokeshvutla@ti.com
drivers/irqchip/irq-ti-sci-inta.c

index b7cc5d6..fbfa1f4 100644 (file)
@@ -83,6 +83,7 @@ struct ti_sci_inta_vint_desc {
  * @vint_mutex:                Mutex to protect vint_list
  * @base:              Base address of the memory mapped IO registers
  * @pdev:              Pointer to platform device.
+ * @ti_sci_id:         TI-SCI device identifier
  */
 struct ti_sci_inta_irq_domain {
        const struct ti_sci_handle *sci;
@@ -93,6 +94,7 @@ struct ti_sci_inta_irq_domain {
        struct mutex vint_mutex;
        void __iomem *base;
        struct platform_device *pdev;
+       u32 ti_sci_id;
 };
 
 #define to_vint_desc(e, i) container_of(e, struct ti_sci_inta_vint_desc, \
@@ -156,7 +158,7 @@ static struct ti_sci_inta_vint_desc *ti_sci_inta_alloc_parent_irq(struct irq_dom
 
        parent_fwspec.fwnode = of_node_to_fwnode(of_irq_find_parent(dev_of_node(&inta->pdev->dev)));
        parent_fwspec.param_count = 2;
-       parent_fwspec.param[0] = inta->pdev->id;
+       parent_fwspec.param[0] = inta->ti_sci_id;
        parent_fwspec.param[1] = vint_desc->vint_id;
 
        parent_virq = irq_create_fwspec_mapping(&parent_fwspec);
@@ -202,7 +204,7 @@ static struct ti_sci_inta_event_desc *ti_sci_inta_alloc_event(struct ti_sci_inta
 
        err = inta->sci->ops.rm_irq_ops.set_event_map(inta->sci,
                                                      dev_id, dev_index,
-                                                     inta->pdev->id,
+                                                     inta->ti_sci_id,
                                                      vint_desc->vint_id,
                                                      event_desc->global_event,
                                                      free_bit);
@@ -299,7 +301,7 @@ static void ti_sci_inta_free_irq(struct ti_sci_inta_event_desc *event_desc,
        inta->sci->ops.rm_irq_ops.free_event_map(inta->sci,
                                                 HWIRQ_TO_DEVID(hwirq),
                                                 HWIRQ_TO_IRQID(hwirq),
-                                                inta->pdev->id,
+                                                inta->ti_sci_id,
                                                 vint_desc->vint_id,
                                                 event_desc->global_event,
                                                 event_desc->vint_bit);
@@ -547,21 +549,21 @@ static int ti_sci_inta_irq_domain_probe(struct platform_device *pdev)
                return ret;
        }
 
-       ret = of_property_read_u32(dev->of_node, "ti,sci-dev-id", &pdev->id);
+       ret = of_property_read_u32(dev->of_node, "ti,sci-dev-id", &inta->ti_sci_id);
        if (ret) {
                dev_err(dev, "missing 'ti,sci-dev-id' property\n");
                return -EINVAL;
        }
 
-       inta->vint = devm_ti_sci_get_of_resource(inta->sci, dev, pdev->id,
+       inta->vint = devm_ti_sci_get_of_resource(inta->sci, dev, inta->ti_sci_id,
                                                 "ti,sci-rm-range-vint");
        if (IS_ERR(inta->vint)) {
                dev_err(dev, "VINT resource allocation failed\n");
                return PTR_ERR(inta->vint);
        }
 
-       inta->global_event = devm_ti_sci_get_of_resource(inta->sci, dev, pdev->id,
-                                               "ti,sci-rm-range-global-event");
+       inta->global_event = devm_ti_sci_get_of_resource(inta->sci, dev, inta->ti_sci_id,
+                                                        "ti,sci-rm-range-global-event");
        if (IS_ERR(inta->global_event)) {
                dev_err(dev, "Global event resource allocation failed\n");
                return PTR_ERR(inta->global_event);