Commit 7206f314 authored by Lokesh Vutla's avatar Lokesh Vutla Committed by Marc Zyngier

irqchip/ti-sci-inta: Do not store TISCI device id in platform device id field

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: default avatarLokesh Vutla <lokeshvutla@ti.com>
Signed-off-by: default avatarMarc Zyngier <maz@kernel.org>
Link: https://lore.kernel.org/r/20200806074826.24607-10-lokeshvutla@ti.com
parent c4dff06e
...@@ -83,6 +83,7 @@ struct ti_sci_inta_vint_desc { ...@@ -83,6 +83,7 @@ struct ti_sci_inta_vint_desc {
* @vint_mutex: Mutex to protect vint_list * @vint_mutex: Mutex to protect vint_list
* @base: Base address of the memory mapped IO registers * @base: Base address of the memory mapped IO registers
* @pdev: Pointer to platform device. * @pdev: Pointer to platform device.
* @ti_sci_id: TI-SCI device identifier
*/ */
struct ti_sci_inta_irq_domain { struct ti_sci_inta_irq_domain {
const struct ti_sci_handle *sci; const struct ti_sci_handle *sci;
...@@ -93,6 +94,7 @@ struct ti_sci_inta_irq_domain { ...@@ -93,6 +94,7 @@ struct ti_sci_inta_irq_domain {
struct mutex vint_mutex; struct mutex vint_mutex;
void __iomem *base; void __iomem *base;
struct platform_device *pdev; struct platform_device *pdev;
u32 ti_sci_id;
}; };
#define to_vint_desc(e, i) container_of(e, struct ti_sci_inta_vint_desc, \ #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 ...@@ -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.fwnode = of_node_to_fwnode(of_irq_find_parent(dev_of_node(&inta->pdev->dev)));
parent_fwspec.param_count = 2; 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_fwspec.param[1] = vint_desc->vint_id;
parent_virq = irq_create_fwspec_mapping(&parent_fwspec); 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 ...@@ -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, err = inta->sci->ops.rm_irq_ops.set_event_map(inta->sci,
dev_id, dev_index, dev_id, dev_index,
inta->pdev->id, inta->ti_sci_id,
vint_desc->vint_id, vint_desc->vint_id,
event_desc->global_event, event_desc->global_event,
free_bit); free_bit);
...@@ -299,7 +301,7 @@ static void ti_sci_inta_free_irq(struct ti_sci_inta_event_desc *event_desc, ...@@ -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, inta->sci->ops.rm_irq_ops.free_event_map(inta->sci,
HWIRQ_TO_DEVID(hwirq), HWIRQ_TO_DEVID(hwirq),
HWIRQ_TO_IRQID(hwirq), HWIRQ_TO_IRQID(hwirq),
inta->pdev->id, inta->ti_sci_id,
vint_desc->vint_id, vint_desc->vint_id,
event_desc->global_event, event_desc->global_event,
event_desc->vint_bit); event_desc->vint_bit);
...@@ -547,21 +549,21 @@ static int ti_sci_inta_irq_domain_probe(struct platform_device *pdev) ...@@ -547,21 +549,21 @@ static int ti_sci_inta_irq_domain_probe(struct platform_device *pdev)
return ret; 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) { if (ret) {
dev_err(dev, "missing 'ti,sci-dev-id' property\n"); dev_err(dev, "missing 'ti,sci-dev-id' property\n");
return -EINVAL; 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"); "ti,sci-rm-range-vint");
if (IS_ERR(inta->vint)) { if (IS_ERR(inta->vint)) {
dev_err(dev, "VINT resource allocation failed\n"); dev_err(dev, "VINT resource allocation failed\n");
return PTR_ERR(inta->vint); return PTR_ERR(inta->vint);
} }
inta->global_event = devm_ti_sci_get_of_resource(inta->sci, dev, pdev->id, inta->global_event = devm_ti_sci_get_of_resource(inta->sci, dev, inta->ti_sci_id,
"ti,sci-rm-range-global-event"); "ti,sci-rm-range-global-event");
if (IS_ERR(inta->global_event)) { if (IS_ERR(inta->global_event)) {
dev_err(dev, "Global event resource allocation failed\n"); dev_err(dev, "Global event resource allocation failed\n");
return PTR_ERR(inta->global_event); return PTR_ERR(inta->global_event);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment