All of lore.kernel.org
 help / color / mirror / Atom feed
From: Varka Bhadram <varkabhadram@gmail.com>
To: Grygorii Strashko <grygorii.strashko@ti.com>,
	Thomas Gleixner <tglx@linutronix.de>,
	santosh.shilimkar@ti.com, Jason Cooper <jason@lakedaemon.net>
Cc: Rob Herring <robh+dt@kernel.org>,
	Kumar Gala <galak@codeaurora.org>,
	ivan.khoronzhuk@ti.com, m-karicheri2@ti.com,
	devicetree@vger.kernel.org, linux-kernel@vger.kernel.org
Subject: Re: [PATCH v2] irqchip: add keystone irq controller ip driver
Date: Wed, 23 Jul 2014 21:02:17 +0530	[thread overview]
Message-ID: <53CFD581.5040908@gmail.com> (raw)
In-Reply-To: <1406126430-9978-1-git-send-email-grygorii.strashko@ti.com>


On Wednesday 23 July 2014 08:10 PM, Grygorii Strashko wrote:
> On Keystone SOCs, DSP cores can send interrupts to ARM
> host using the IRQ controller IP. It provides 28 IRQ
> signals to ARM. The IRQ handler running on HOST OS can
> identify DSP signal source by analyzing SRCCx bits in
> IPCARx registers. This is one of the component used by
> the IPC mechanism used on Keystone SOCs.

(...)

> +Required Properties:
> +- compatible: should be "ti,keystone-irq"
> +- ti,syscon-dev : phandle and offset pair. The phandle to syscon used to
> +			access device control registers and the offset inside
> +			device control registers range.
> +- interrupt-controller : Identifies the node as an interrupt controller
> +- #interrupt-cells : Specifies the number of cells needed to encode interrupt
> +					 source should be 1.
> +- interrupts: interrupt reference to primary interrupt controller

proper indentation for the properties

- compatible		: Should be "ti,keystone-irq"
- ti,syscon-dev		: phandle and offset pair. The phandle to syscon used to
			  access device control registers and the offset inside
			  device control registers range.

> +
> +Please refer to interrupts.txt in this directory for details of the common
> +Interrupt Controllers bindings used by client devices.
> +

(...)

> +#include <linux/irq.h>
> +#include <linux/bitops.h>
> +#include <linux/module.h>
> +#include <linux/moduleparam.h>
> +#include <linux/irqdomain.h>
> +#include <linux/irqchip/chained_irq.h>
> +#include <linux/of.h>
> +#include <linux/of_platform.h>
> +#include <linux/mfd/syscon.h>
> +#include <linux/regmap.h>

Includes in alphabetical order...

Give one line gap before local includes..

...
#include <linux/regmap.h>

#include "irqchip.h"

> +#include "irqchip.h"
> +
> +
> +/* The source ID bits start from 4 to 31 (total 28 bits)*/
> +#define BIT_OFS			4
> +#define KEYSTONE_N_IRQ		(32 - BIT_OFS)
> +
> +struct keystone_irq_device {
> +	struct device		*dev;
> +	struct irq_chip		 chip;
> +	u32			 mask;
> +	u32			 irq;
> +	struct irq_domain	*irqd;
> +	struct regmap		*devctrl_regs;
> +	u32			devctrl_offset;
> +};
> +
> +static inline u32 keystone_irq_readl(struct keystone_irq_device *kirq)
> +{
> +	int ret;
> +	u32 val = 0;
> +
> +	ret = regmap_read(kirq->devctrl_regs, kirq->devctrl_offset, &val);
> +	if (ret < 0)
> +		dev_dbg(kirq->dev, "irq read failed ret(%d)\n", ret);
> +	return val;
> +}
> +
> +static inline void
> +keystone_irq_writel(struct keystone_irq_device *kirq, u32 value)
> +{
> +	int ret;
> +
> +	ret = regmap_write(kirq->devctrl_regs, kirq->devctrl_offset, value);
> +	if (ret < 0)
> +		dev_dbg(kirq->dev, "irq write failed ret(%d)\n", ret);

It can be like

if (!regmap_write(kirq->devctrl_regs, kirq->devctrl_offset, value))
	dev_dbg(kirq->dev, "irq write failed \n");

> +}
> +
> +

(...)

> +}
> +
> +static int keystone_irq_map(struct irq_domain *h, unsigned int virq,
> +				irq_hw_number_t hw)

should match open parenthesis:

static int keystone_irq_map(struct irq_domain *h, unsigned int virq,
			    irq_hw_number_t hw)

> +{
> +	struct keystone_irq_device *kirq = h->host_data;
> +
> +	irq_set_chip_data(virq, kirq);
> +	irq_set_chip_and_handler(virq, &kirq->chip, handle_level_irq);
> +	set_irq_flags(virq, IRQF_VALID | IRQF_PROBE);
> +	return 0;
> +}
> +
> +static struct irq_domain_ops keystone_irq_ops = {
> +	.map	= keystone_irq_map,
> +	.xlate	= irq_domain_xlate_onecell,
> +};
> +
> +static int keystone_irq_probe(struct platform_device *pdev)
> +{
> +	struct device *dev = &pdev->dev;
> +	struct device_node *np = dev->of_node;
> +	struct keystone_irq_device *kirq;
> +	int ret;
> +
> +	if (np == NULL)
> +		return -EINVAL;

return -ENODEV??????

(...)

> +static struct platform_driver keystone_irq_device_driver = {
> +	.probe		= keystone_irq_probe,
> +	.remove		= keystone_irq_remove,
> +	.driver		= {
> +		.name	= "keystone_irq",
> +		.owner	= THIS_MODULE,

No need to update it. Its done by module_platform_driver()..

> +		.of_match_table	= of_match_ptr(keystone_irq_dt_ids),

This driver is always populate through the dts file. So no need to use
of_match_ptr....

-- 
-Varka Bhadram


  reply	other threads:[~2014-07-23 15:32 UTC|newest]

Thread overview: 13+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-07-23 14:40 [PATCH v2] irqchip: add keystone irq controller ip driver Grygorii Strashko
2014-07-23 14:40 ` Grygorii Strashko
2014-07-23 15:32 ` Varka Bhadram [this message]
2014-07-23 18:01   ` Grygorii Strashko
2014-07-23 18:01     ` Grygorii Strashko
2014-07-24  0:58     ` Varka Bhadram
2014-07-24 16:20       ` Grygorii Strashko
2014-07-24 16:20         ` Grygorii Strashko
2014-08-17 19:39 ` Jason Cooper
2014-08-17 19:39   ` Jason Cooper
2014-08-28 17:16 ` [PATCH] irqchip: keystone: remove warning unsigned 'kirq->irq' is never less than zero Grygorii Strashko
2014-08-28 17:26   ` Grygorii Strashko
2014-09-03 11:51   ` Jason Cooper

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=53CFD581.5040908@gmail.com \
    --to=varkabhadram@gmail.com \
    --cc=devicetree@vger.kernel.org \
    --cc=galak@codeaurora.org \
    --cc=grygorii.strashko@ti.com \
    --cc=ivan.khoronzhuk@ti.com \
    --cc=jason@lakedaemon.net \
    --cc=linux-kernel@vger.kernel.org \
    --cc=m-karicheri2@ti.com \
    --cc=robh+dt@kernel.org \
    --cc=santosh.shilimkar@ti.com \
    --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.