linux-serial.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Carlo Caione <carlo@caione.org>
To: Matthias Brugger <matthias.bgg@gmail.com>
Cc: linux-arm-kernel@lists.infradead.org, devicetree@vger.kernel.org,
	linux-serial@vger.kernel.org, linux@arm.linux.org.uk,
	robh+dt@kernel.org, mark.rutland@arm.com,
	ijc+devicetree@hellion.org.uk, daniel.lezcano@linaro.org,
	tglx@linutronix.de, gregkh@linuxfoundation.org, jslaby@suse.cz,
	grant.likely@linaro.org, b.galvani@gmail.com
Subject: Re: [PATCH 3/7] ARM: meson6: clocksource: add Meson6 timer support
Date: Mon, 18 Aug 2014 16:11:04 +0200	[thread overview]
Message-ID: <20140818141104.GD28819@carlo-MacBookPro> (raw)
In-Reply-To: <53F1EAAA.8020904@gmail.com>

On Mon, Aug 18, 2014 at 01:59:38PM +0200, Matthias Brugger wrote:
> On 17/08/14 12:49, Carlo Caione wrote:
> >+enum {
> >+	A = 0,
> >+	B,
> >+	C,
> >+	D,
> >+};
> 
> You are just using timer A, so this enum is unnecessary. Please use
> a define instead. Also it would be better, if the define would be
> explenatory then just the letter 'A'.

In the meson6 SoCs there are 4 timers (TIMERA, TIMERB, TIMERC and
TIMERD). From the source code released by Amlogic it seems that they
have exactly the same characteristics and any of them can be used for
the clockevents. So either I fix the usage of only the TIMERA in the
driver or use the DTS to specify which one to use.

> >+
> >+#define TIMER_ISA_MUX		0
> >+#define TIMER_ISA_E_VAL		0x14
> >+#define TIMER_ISA_t_VAL(t)	((t + 1) << 2)
> >+
> >+#define TIMER_t_INPUT_BIT(t)	(2 * t)
> 
> Please put braces around 't'.

Ok

> >+#define TIMER_E_INPUT_BIT	8
> 
> From the enum above, missing timer E would be 4 so you can use the
> TIMER_t_INPUT_BIT(t) macro, right?

Right. It was to be consistent since the mask for TIMERE is different.
But I'll fix it.

> >+#define TIMER_t_INPUT_MASK(t)	(3UL << TIMER_t_INPUT_BIT(t))
> >+#define TIMER_E_INPUT_MASK	(7UL << TIMER_E_INPUT_BIT)
> >+#define TIMER_t_ENABLE_BIT(t)	(16 + t)
> >+#define TIMER_E_ENABLE_BIT	20
> >+#define TIMER_t_PERIODIC_BIT(t)	(12 + t)
> 
> Please put braces around 't'.

I'll do

> >+
> >+#define TIMER_UNIT_1us		0
> >+#define TIMER_E_UNIT_1us	1
> 
> Please don't use lower case characters in defines.

Ok

<cut>

> >+static void __init meson6_timer_init(struct device_node *node)
> >+{
> >+	u32 val;
> >+	int ret, irq;
> >+
> >+	timer_base = of_iomap(node, 0);
> 
> Please use of_io_request_and_map instead.

Agree. Fix in v2.

> >+	if (!timer_base)
> >+		panic("Can't map registers");
> >+
> >+	irq = irq_of_parse_and_map(node, 0);
> >+	if (irq <= 0)
> >+		panic("Can't parse IRQ");
> >+
> >+	/* Set 1us for timer E */
> >+	val = readl(timer_base + TIMER_ISA_MUX);
> >+	val &= ~TIMER_E_INPUT_MASK;
> >+	val |= TIMER_E_UNIT_1us << TIMER_E_INPUT_BIT;
> >+	writel(val, timer_base + TIMER_ISA_MUX);
> >+
> >+	sched_clock_register(meson6_timer_sched_read, 32, USEC_PER_SEC);
> >+	clocksource_register_khz(&clocksource_timer_e, 1000);
> 
> Why don't you use clocksource_mmio_init?

No real reason, I just missed that one.

> >+
> >+	/* Timer A base 1us */
> >+	val &= ~TIMER_t_INPUT_MASK(A);
> >+	val |= TIMER_UNIT_1us << TIMER_t_INPUT_BIT(A);
> >+	writel(val, timer_base + TIMER_ISA_MUX);
> 
> Is this dependant on any clocking of the timer?

No. At least this is what I can infer from the messy source code released by
Amlogic. I wish I had any documentation for these SoCs.

Thank you for your review,
 
-- 
Carlo Caione

  reply	other threads:[~2014-08-18 14:11 UTC|newest]

Thread overview: 33+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-08-17 10:49 [PATCH 0/7] ARM: meson: add preliminary support for MesonX/Meson6 SoCs Carlo Caione
2014-08-17 10:49 ` [PATCH 1/7] ARM: meson: debug: add debug UART for earlyprintk support Carlo Caione
2014-08-17 10:49 ` [PATCH 2/7] ARM: meson: serial: add MesonX SoC on-chip uart driver Carlo Caione
2014-08-28  7:51   ` Carlo Caione
2014-09-06 18:28   ` Carlo Caione
2014-09-06 18:38     ` Greg KH
2014-09-06 18:51       ` Carlo Caione
2014-08-17 10:49 ` [PATCH 3/7] ARM: meson6: clocksource: add Meson6 timer support Carlo Caione
2014-08-18 11:59   ` Matthias Brugger
2014-08-18 14:11     ` Carlo Caione [this message]
2014-08-18 16:27   ` Mark Rutland
2014-08-19 16:01     ` Carlo Caione
2014-08-17 10:49 ` [PATCH 4/7] ARM: meson: add basic support for MesonX SoCs Carlo Caione
2014-08-17 14:21   ` Maxime Ripard
2014-08-18 13:27     ` Carlo Caione
2014-08-18 15:10       ` Matthias Brugger
2014-08-18 19:11       ` Maxime Ripard
2014-08-17 10:49 ` [PATCH 5/7] ARM: meson: dts: add basic Meson/Meson6/Meson6-atv1200 DTSI/DTS Carlo Caione
2014-08-17 14:42   ` Beniamino Galvani
2014-08-17 15:21     ` Carlo Caione
2014-08-18 16:15       ` Mark Rutland
2014-08-18 16:17   ` Mark Rutland
2014-08-19 16:16     ` Carlo Caione
2014-08-23 11:27   ` Andreas Färber
2014-08-17 10:49 ` [PATCH 6/7] ARM: meson: update defconfigs Carlo Caione
2014-08-18 10:31   ` Matthias Brugger
2014-08-18 13:31     ` Carlo Caione
     [not found] ` <1408272594-10814-1-git-send-email-carlo-KA+7E9HrN00dnm+yROfE0A@public.gmane.org>
2014-08-17 10:49   ` [PATCH 7/7] ARM: meson: update documentation (uart, timer and vendors) Carlo Caione
2014-08-18 10:36     ` Matthias Brugger
2014-08-18 13:33       ` Carlo Caione
2014-08-23 12:24     ` Andreas Färber
2014-08-17 14:29 ` [PATCH 0/7] ARM: meson: add preliminary support for MesonX/Meson6 SoCs Beniamino Galvani
2014-08-17 15:25   ` Carlo Caione

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=20140818141104.GD28819@carlo-MacBookPro \
    --to=carlo@caione.org \
    --cc=b.galvani@gmail.com \
    --cc=daniel.lezcano@linaro.org \
    --cc=devicetree@vger.kernel.org \
    --cc=grant.likely@linaro.org \
    --cc=gregkh@linuxfoundation.org \
    --cc=ijc+devicetree@hellion.org.uk \
    --cc=jslaby@suse.cz \
    --cc=linux-arm-kernel@lists.infradead.org \
    --cc=linux-serial@vger.kernel.org \
    --cc=linux@arm.linux.org.uk \
    --cc=mark.rutland@arm.com \
    --cc=matthias.bgg@gmail.com \
    --cc=robh+dt@kernel.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).