From: Marc Zyngier <marc.zyngier@arm.com>
To: Aleksandar Markovic <aleksandar.markovic@rt-rk.com>
Cc: <linux-mips@linux-mips.org>,
Miodrag Dinic <miodrag.dinic@mips.com>,
Goran Ferenc <goran.ferenc@mips.com>,
Aleksandar Markovic <aleksandar.markovic@mips.com>,
"David S. Miller" <davem@davemloft.net>,
Douglas Leung <douglas.leung@mips.com>,
Greg Kroah-Hartman <gregkh@linuxfoundation.org>,
James Hogan <james.hogan@mips.com>,
Jason Cooper <jason@lakedaemon.net>,
<linux-kernel@vger.kernel.org>,
Mauro Carvalho Chehab <mchehab@kernel.org>,
Miodrag Dinic <miodrag.dinic@imgtec.com>,
Paul Burton <paul.burton@mips.com>,
Petar Jovanovic <petar.jovanovic@mips.com>,
Raghu Gandham <raghu.gandham@mips.com>,
Randy Dunlap <rdunlap@infradead.org>,
Thomas Gleixner <tglx@linutronix.de>
Subject: Re: [PATCH v6 2/5] irqchip/irq-goldfish-pic: Add Goldfish PIC driver
Date: Tue, 31 Oct 2017 02:26:40 +0000 [thread overview]
Message-ID: <86y3ns3vdr.fsf@arm.com> (raw)
In-Reply-To: <1509364642-21771-3-git-send-email-aleksandar.markovic@rt-rk.com> (Aleksandar Markovic's message of "Mon, 30 Oct 2017 12:56:33 +0100")
On Mon, Oct 30 2017 at 12:56:33 pm GMT, Aleksandar Markovic <aleksandar.markovic@rt-rk.com> wrote:
> From: Miodrag Dinic <miodrag.dinic@mips.com>
>
> Add device driver for a virtual programmable interrupt controller
>
> The virtual PIC is designed as a device tree-based interrupt controller.
>
> The compatible string used by OS for binding the driver is
> "google,goldfish-pic".
>
> Signed-off-by: Miodrag Dinic <miodrag.dinic@mips.com>
> Signed-off-by: Goran Ferenc <goran.ferenc@mips.com>
> Signed-off-by: Aleksandar Markovic <aleksandar.markovic@mips.com>
[...]
> diff --git a/drivers/irqchip/irq-goldfish-pic.c b/drivers/irqchip/irq-goldfish-pic.c
> new file mode 100644
> index 0000000..48fb773
> --- /dev/null
> +++ b/drivers/irqchip/irq-goldfish-pic.c
[...]
> +static int __init goldfish_pic_of_init(struct device_node *of_node,
> + struct device_node *parent)
> +{
> + struct goldfish_pic_data *gfpic;
> + struct irq_chip_generic *gc;
> + struct irq_chip_type *ct;
> + unsigned int parent_irq;
> + int ret = 0;
> +
> + gfpic = kzalloc(sizeof(*gfpic), GFP_KERNEL);
> + if (!gfpic) {
> + ret = -ENOMEM;
> + goto out_err;
> + }
> +
> + parent_irq = irq_of_parse_and_map(of_node, 0);
> + if (!parent_irq) {
> + pr_err("Failed to map Goldfish PIC parent IRQ\n");
> + ret = -EINVAL;
> + goto out_free;
> + }
> +
> + gfpic->base = of_iomap(of_node, 0);
> + if (!gfpic->base) {
> + pr_err("Failed to map Goldfish PIC base\n");
> + ret = -ENOMEM;
> + goto out_unmap_irq;
> + }
> +
> + /* Mask interrupts. */
> + writel(1, gfpic->base + GFPIC_REG_IRQ_DISABLE_ALL);
> +
> + gc = irq_alloc_generic_chip("GFPIC", 1, GFPIC_IRQ_BASE, gfpic->base,
> + handle_level_irq);
> +
> + ct = gc->chip_types;
And what if the allocation fails?
> + ct->regs.enable = GFPIC_REG_IRQ_ENABLE;
> + ct->regs.disable = GFPIC_REG_IRQ_DISABLE;
> + ct->chip.irq_unmask = irq_gc_unmask_enable_reg;
> + ct->chip.irq_mask = irq_gc_mask_disable_reg;
> +
> + irq_setup_generic_chip(gc, IRQ_MSK(GFPIC_NR_IRQS), 0, 0,
> + IRQ_NOPROBE | IRQ_LEVEL);
> +
> + gfpic->irq_domain = irq_domain_add_legacy(of_node, GFPIC_NR_IRQS,
> + GFPIC_IRQ_BASE, 0,
> + &goldfish_irq_domain_ops,
> + NULL);
> + if (!gfpic->irq_domain) {
> + pr_err("Failed to add irqdomain for Goldfish PIC\n");
> + ret = -EINVAL;
> + goto out_iounmap;
> + }
> +
> + irq_set_chained_handler_and_data(parent_irq,
> + goldfish_pic_cascade, gfpic);
> +
> + pr_info("Successfully registered Goldfish PIC\n");
> + return 0;
> +
> +out_iounmap:
> + iounmap(gfpic->base);
> +out_unmap_irq:
> + irq_dispose_mapping(parent_irq);
> +out_free:
> + kfree(gfpic);
> +out_err:
> + return ret;
> +}
> +
> +IRQCHIP_DECLARE(google_gf_pic, "google,goldfish-pic", goldfish_pic_of_init);
Thanks,
M.
--
Jazz is not dead. It just smells funny.
WARNING: multiple messages have this Message-ID (diff)
From: Marc Zyngier <marc.zyngier@arm.com>
To: Aleksandar Markovic <aleksandar.markovic@rt-rk.com>
Cc: linux-mips@linux-mips.org, Miodrag Dinic <miodrag.dinic@mips.com>,
Goran Ferenc <goran.ferenc@mips.com>,
Aleksandar Markovic <aleksandar.markovic@mips.com>,
"David S. Miller" <davem@davemloft.net>,
Douglas Leung <douglas.leung@mips.com>,
Greg Kroah-Hartman <gregkh@linuxfoundation.org>,
James Hogan <james.hogan@mips.com>,
Jason Cooper <jason@lakedaemon.net>,
linux-kernel@vger.kernel.org,
Mauro Carvalho Chehab <mchehab@kernel.org>,
Miodrag Dinic <miodrag.dinic@imgtec.com>,
Paul Burton <paul.burton@mips.com>,
Petar Jovanovic <petar.jovanovic@mips.com>,
Raghu Gandham <raghu.gandham@mips.com>,
Randy Dunlap <rdunlap@infradead.org>,
Thomas Gleixner <tglx@linutronix.de>
Subject: Re: [PATCH v6 2/5] irqchip/irq-goldfish-pic: Add Goldfish PIC driver
Date: Tue, 31 Oct 2017 02:26:40 +0000 [thread overview]
Message-ID: <86y3ns3vdr.fsf@arm.com> (raw)
Message-ID: <20171031022640.QjKdELKc0tJF7Ty4CVdlsbQNclxpY7PSh4nbpQVj0Ek@z> (raw)
In-Reply-To: <1509364642-21771-3-git-send-email-aleksandar.markovic@rt-rk.com> (Aleksandar Markovic's message of "Mon, 30 Oct 2017 12:56:33 +0100")
On Mon, Oct 30 2017 at 12:56:33 pm GMT, Aleksandar Markovic <aleksandar.markovic@rt-rk.com> wrote:
> From: Miodrag Dinic <miodrag.dinic@mips.com>
>
> Add device driver for a virtual programmable interrupt controller
>
> The virtual PIC is designed as a device tree-based interrupt controller.
>
> The compatible string used by OS for binding the driver is
> "google,goldfish-pic".
>
> Signed-off-by: Miodrag Dinic <miodrag.dinic@mips.com>
> Signed-off-by: Goran Ferenc <goran.ferenc@mips.com>
> Signed-off-by: Aleksandar Markovic <aleksandar.markovic@mips.com>
[...]
> diff --git a/drivers/irqchip/irq-goldfish-pic.c b/drivers/irqchip/irq-goldfish-pic.c
> new file mode 100644
> index 0000000..48fb773
> --- /dev/null
> +++ b/drivers/irqchip/irq-goldfish-pic.c
[...]
> +static int __init goldfish_pic_of_init(struct device_node *of_node,
> + struct device_node *parent)
> +{
> + struct goldfish_pic_data *gfpic;
> + struct irq_chip_generic *gc;
> + struct irq_chip_type *ct;
> + unsigned int parent_irq;
> + int ret = 0;
> +
> + gfpic = kzalloc(sizeof(*gfpic), GFP_KERNEL);
> + if (!gfpic) {
> + ret = -ENOMEM;
> + goto out_err;
> + }
> +
> + parent_irq = irq_of_parse_and_map(of_node, 0);
> + if (!parent_irq) {
> + pr_err("Failed to map Goldfish PIC parent IRQ\n");
> + ret = -EINVAL;
> + goto out_free;
> + }
> +
> + gfpic->base = of_iomap(of_node, 0);
> + if (!gfpic->base) {
> + pr_err("Failed to map Goldfish PIC base\n");
> + ret = -ENOMEM;
> + goto out_unmap_irq;
> + }
> +
> + /* Mask interrupts. */
> + writel(1, gfpic->base + GFPIC_REG_IRQ_DISABLE_ALL);
> +
> + gc = irq_alloc_generic_chip("GFPIC", 1, GFPIC_IRQ_BASE, gfpic->base,
> + handle_level_irq);
> +
> + ct = gc->chip_types;
And what if the allocation fails?
> + ct->regs.enable = GFPIC_REG_IRQ_ENABLE;
> + ct->regs.disable = GFPIC_REG_IRQ_DISABLE;
> + ct->chip.irq_unmask = irq_gc_unmask_enable_reg;
> + ct->chip.irq_mask = irq_gc_mask_disable_reg;
> +
> + irq_setup_generic_chip(gc, IRQ_MSK(GFPIC_NR_IRQS), 0, 0,
> + IRQ_NOPROBE | IRQ_LEVEL);
> +
> + gfpic->irq_domain = irq_domain_add_legacy(of_node, GFPIC_NR_IRQS,
> + GFPIC_IRQ_BASE, 0,
> + &goldfish_irq_domain_ops,
> + NULL);
> + if (!gfpic->irq_domain) {
> + pr_err("Failed to add irqdomain for Goldfish PIC\n");
> + ret = -EINVAL;
> + goto out_iounmap;
> + }
> +
> + irq_set_chained_handler_and_data(parent_irq,
> + goldfish_pic_cascade, gfpic);
> +
> + pr_info("Successfully registered Goldfish PIC\n");
> + return 0;
> +
> +out_iounmap:
> + iounmap(gfpic->base);
> +out_unmap_irq:
> + irq_dispose_mapping(parent_irq);
> +out_free:
> + kfree(gfpic);
> +out_err:
> + return ret;
> +}
> +
> +IRQCHIP_DECLARE(google_gf_pic, "google,goldfish-pic", goldfish_pic_of_init);
Thanks,
M.
--
Jazz is not dead. It just smells funny.
next prev parent reply other threads:[~2017-10-31 2:27 UTC|newest]
Thread overview: 21+ messages / expand[flat|nested] mbox.gz Atom feed top
2017-10-30 11:56 [PATCH v6 0/5] MIPS: Add virtual Ranchu board as a generic-based board Aleksandar Markovic
2017-10-30 11:56 ` [PATCH v6 1/5] Documentation: Add device tree binding for Goldfish PIC driver Aleksandar Markovic
2017-10-30 11:56 ` Aleksandar Markovic
2017-10-30 11:56 ` [PATCH v6 2/5] irqchip/irq-goldfish-pic: Add " Aleksandar Markovic
2017-10-31 2:26 ` Marc Zyngier [this message]
2017-10-31 2:26 ` Marc Zyngier
2017-11-01 14:34 ` Miodrag Dinic
2017-10-30 11:56 ` [PATCH v6 3/5] Documentation: Add device tree binding for Goldfish FB driver Aleksandar Markovic
2017-10-30 11:56 ` [PATCH v6 4/5] video: goldfishfb: Add support for device tree bindings Aleksandar Markovic
2017-10-30 11:56 ` Aleksandar Markovic
2017-10-30 11:56 ` [PATCH v6 5/5] MIPS: ranchu: Add Ranchu as a new generic-based board Aleksandar Markovic
2017-10-30 16:45 ` James Hogan
2017-10-30 16:45 ` James Hogan
2017-11-02 12:47 ` Miodrag Dinic
2017-11-02 12:47 ` Miodrag Dinic
2017-11-02 12:53 ` James Hogan
2017-11-01 17:58 ` Paul Burton
2017-11-01 17:58 ` Paul Burton
2017-11-02 13:47 ` Miodrag Dinic
2017-11-02 20:49 ` Paul Burton
2017-11-03 14:04 ` Miodrag Dinic
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=86y3ns3vdr.fsf@arm.com \
--to=marc.zyngier@arm.com \
--cc=aleksandar.markovic@mips.com \
--cc=aleksandar.markovic@rt-rk.com \
--cc=davem@davemloft.net \
--cc=douglas.leung@mips.com \
--cc=goran.ferenc@mips.com \
--cc=gregkh@linuxfoundation.org \
--cc=james.hogan@mips.com \
--cc=jason@lakedaemon.net \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-mips@linux-mips.org \
--cc=mchehab@kernel.org \
--cc=miodrag.dinic@imgtec.com \
--cc=miodrag.dinic@mips.com \
--cc=paul.burton@mips.com \
--cc=petar.jovanovic@mips.com \
--cc=raghu.gandham@mips.com \
--cc=rdunlap@infradead.org \
--cc=tglx@linutronix.de \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.