All of lore.kernel.org
 help / color / mirror / Atom feed
From: Guo Ren <ren_guo@c-sky.com>
To: Thomas Gleixner <tglx@linutronix.de>
Cc: linux-arch@vger.kernel.org, linux-kernel@vger.kernel.org,
	daniel.lezcano@linaro.org, jason@lakedaemon.net, arnd@arndb.de,
	c-sky_gcc_upstream@c-sky.com, gnu-csky@mentor.com,
	thomas.petazzoni@bootlin.com, wbx@uclibc-ng.org
Subject: Re: [PATCH 19/19] irqchip: add irq-nationalchip.c and irq-csky.c
Date: Tue, 20 Mar 2018 22:23:51 +0800	[thread overview]
Message-ID: <20180320142350.GA13892@guoren> (raw)
In-Reply-To: <alpine.DEB.2.21.1803191417140.2010@nanos.tec.linutronix.de>

Hi Thomas,

On Mon, Mar 19, 2018 at 02:30:42PM +0100, Thomas Gleixner wrote:
> > +static struct irq_chip ck_irq_chip = {
> > +	.name		= "csky_intc_v1",
> > +	.irq_mask	= ck_irq_mask,
> > +	.irq_unmask	= ck_irq_unmask,
> > +};
> 
> Please use the generic interrupt chip infrastructure for this.
Ok, I will learn it.

> > +static unsigned int ck_get_irqno(void)
> > +{
> > +	unsigned int temp;
> 
> newline between declaration and code.
Ok

> > +	temp = __raw_readl(CK_VA_INTC_ISR);
> > +	return temp & 0x3f;
> > +};
> > +
> > +static int __init
> > +__intc_init(struct device_node *np, struct device_node *parent, bool ave)
> 
> What is 'ave'?
Ave means the irq-controller works on auto-vector-handler mode, it will
cause 10 exception number and it need read intc-reg to get irq-num.

> No magic numbers. Please use proper defines.
Ok

> > +	else
> > +		__raw_writel( 0x0, CK_VA_INTC_ICR);
> > +	/*
> > +	 * csky irq ctrl has 64 sources.
> > +	 */
> > +	#define INTC_IRQS 64
> 
> No defines in code.
Ok

> 
> > +	for (i=0; i<INTC_IRQS; i=i+4)
> 
> checkpatch.pl would have told you what's wrong with the above
Ok, Thx

> > +		__raw_writel((i+3)|((i+2)<<8)|((i+1)<<16)|(i<<24),
> 
> Eew. Tons of magic numbers and a unreadable coding style. Please use an
> inline function with proper comments to calculate that value
Ok

> > +				CK_VA_INTC_SOURCE + i);
> > +
> > +	root_domain = irq_domain_add_legacy(np, INTC_IRQS, 0, 0, &ck_irq_ops, NULL);
> > +	if (!root_domain)
> > +		panic("root irq domain not available\n");
> > +
> > +	irq_set_default_host(root_domain);
> > +
> > +	return 0;
> > +}
> > +
> > +static int __init
> > +intc_init(struct device_node *np, struct device_node *parent)
> > +{
> > +
> 
> Stray newline
I'll remove, Thx.

> > +	return __intc_init(np, parent, false);
> > +}
> > +IRQCHIP_DECLARE(csky_intc_v1, "csky,intc-v1", intc_init);
> > +
> > +/*
> > + * use auto vector exceptions 10 for interrupt.
> > + */
> > +static int __init
> > +intc_init_ave(struct device_node *np, struct device_node *parent)
> > +{
> > +	return __intc_init(np, parent, true);
> 
> Why is that 'ave' thing not a property of device tree?
I'll change it to a property.

> > +struct irq_chip nc_irq_chip = {
> > +	.name =		"nationalchip_intc_v1",
> > +	.irq_mask =	nc_irq_mask,
> > +	.irq_unmask =	nc_irq_unmask,
> > +	.irq_enable =	nc_irq_en,
> > +	.irq_disable =	nc_irq_dis,
> > +};
> 
> Again. This all can use the generic interrupt chip.
I'll learn the generic interrupt chip.

> > +inline int ff1_64(unsigned int hi, unsigned int lo)
> 
> What on earth means ff1_64?
Find the first high bit '1' of the reg :P

> > +	asm volatile(
> > +		"ff1 %0\n"
> > +		:"=r"(lo)
> > +		:"r"(lo)
> > +		:
> > +	);
> 
> So you want to decode the interrupt number from a bitfield. What's wrong
> with ffs()?
There is no wrong with ffs(). Ok, I will use the ffs().

> > +	if( lo != 32 )
> > +		result = 31-lo;
> 
> Why is this subtracted?
ff1 find from high bit, so we need reverse it to get the right num.
> That code makes no sense w/o comments.
Sorry, I will add.

> > +	else if( hi != 32 ) result = 31-hi + 32;
> > +	else {
> > +		printk("nc_get_irqno error hi:%x, lo:%x.\n", hi, lo);
> > +		result = NR_IRQS;
> > +	}
> 
> Pleas use braces consistently.
Ok

> > +unsigned int nc_get_irqno(void)
> 
> static?
Yes

> Same comments as for the other variant.
Ok

Best Regards
  Guo Ren

  reply	other threads:[~2018-03-20 14:24 UTC|newest]

Thread overview: 64+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2018-03-18 19:51 [PATCH 00/19] C-SKY(csky) Linux Kernel Port Guo Ren
2018-03-18 19:51 ` [PATCH 01/19] csky: Kernel booting Guo Ren
2018-03-18 19:51 ` [PATCH 02/19] csky: Exception handling and syscall Guo Ren
2018-03-19  1:48   ` Mark Rutland
2018-03-19  6:47     ` Guo Ren
2018-03-19  8:50   ` Dominik Brodowski
2018-03-19 11:03     ` Guo Ren
2018-03-18 19:51 ` [PATCH 03/19] csky: Cache and TLB routines Guo Ren
2018-03-18 19:51 ` [PATCH 04/19] csky: MMU and page talbe management Guo Ren
2018-03-18 19:51 ` [PATCH 05/19] csky: Process management Guo Ren
2018-03-18 19:51 ` [PATCH 06/19] csky: IRQ handling Guo Ren
2018-03-19 13:16   ` Thomas Gleixner
2018-03-20  2:06     ` Guo Ren
2018-03-18 19:51 ` [PATCH 07/19] csky: Atomic operations Guo Ren
2018-03-18 19:51 ` [PATCH 08/19] csky: ELF and module probe Guo Ren
2018-03-18 19:51 ` [PATCH 09/19] csky: VDSO and rt_sigreturn Guo Ren
2018-03-18 19:51 ` [PATCH 10/19] csky: Signal handling Guo Ren
2018-03-26 13:04   ` Arnd Bergmann
2018-03-27  2:41     ` Guo Ren
2018-03-18 19:51 ` [PATCH 11/19] csky: Library functions Guo Ren
2018-03-18 19:51 ` [PATCH 12/19] csky: Debug and Ptrace GDB Guo Ren
2018-03-26 13:06   ` Arnd Bergmann
2018-03-18 19:51 ` [PATCH 13/19] csky: User access Guo Ren
2018-03-18 19:51 ` [PATCH 14/19] csky: Misc headers Guo Ren
2018-03-19 16:11   ` Arnd Bergmann
2018-03-20  3:36     ` Guo Ren
2018-03-20  7:54       ` Arnd Bergmann
2018-03-20 13:22         ` Guo Ren
2018-03-18 19:51 ` [PATCH 15/19] csky: Build infrastructure Guo Ren
2018-03-19 15:45   ` Arnd Bergmann
2018-03-20 13:13     ` Guo Ren
2018-03-21  7:36       ` Arnd Bergmann
2018-03-21 12:41         ` Guo Ren
2018-03-26 13:00           ` Arnd Bergmann
2018-03-27  2:39             ` Guo Ren
2018-03-27  7:38               ` Arnd Bergmann
2018-03-28  3:49                 ` Guo Ren
2018-03-28  7:40                   ` Arnd Bergmann
2018-03-28  8:04                     ` Guo Ren
2018-03-18 19:51 ` [PATCH 16/19] csky: Device tree Guo Ren
2018-03-19 15:28   ` Arnd Bergmann
2018-03-20 13:55     ` Guo Ren
2018-03-18 19:51 ` [PATCH 17/19] csky: defconfig Guo Ren
2018-03-26 13:16   ` Arnd Bergmann
2018-03-27  2:21     ` Guo Ren
2018-03-27  7:48       ` Arnd Bergmann
2018-03-28  3:59         ` Guo Ren
2018-03-18 19:51 ` [PATCH 18/19] clocksource: add timer-nationalchip.c Guo Ren
2018-03-18 22:07   ` Daniel Lezcano
2018-03-19  6:59     ` Guo Ren
2018-03-19  4:15   ` Mark Rutland
2018-03-19  7:03     ` Guo Ren
2018-03-18 19:51 ` [PATCH 19/19] irqchip: add irq-nationalchip.c and irq-csky.c Guo Ren
2018-03-19  4:26   ` Mark Rutland
2018-03-19  7:08     ` Guo Ren
2018-03-19 13:30   ` Thomas Gleixner
2018-03-20 14:23     ` Guo Ren [this message]
2018-03-18 20:25 ` [PATCH 00/19] C-SKY(csky) Linux Kernel Port Joe Perches
2018-03-19  7:11   ` Guo Ren
2018-03-26 13:30 ` Arnd Bergmann
2018-03-26 15:06   ` [gnu-csky] " Sandra Loosemore
2018-03-26 15:06     ` Sandra Loosemore
2018-03-26 15:11     ` Arnd Bergmann
2018-03-27  1:58   ` Guo Ren

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=20180320142350.GA13892@guoren \
    --to=ren_guo@c-sky.com \
    --cc=arnd@arndb.de \
    --cc=c-sky_gcc_upstream@c-sky.com \
    --cc=daniel.lezcano@linaro.org \
    --cc=gnu-csky@mentor.com \
    --cc=jason@lakedaemon.net \
    --cc=linux-arch@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=tglx@linutronix.de \
    --cc=thomas.petazzoni@bootlin.com \
    --cc=wbx@uclibc-ng.org \
    /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.