From: Ralf Baechle <ralf@linux-mips.org>
To: Aleksandar Markovic <aleksandar.markovic@rt-rk.com>
Cc: linux-mips@linux-mips.org,
Miodrag Dinic <miodrag.dinic@imgtec.com>,
Goran Ferenc <goran.ferenc@imgtec.com>,
Aleksandar Markovic <aleksandar.markovic@imgtec.com>,
Bo Hu <bohu@google.com>, Douglas Leung <douglas.leung@imgtec.com>,
James Hogan <james.hogan@imgtec.com>,
Jin Qian <jinqian@google.com>,
Paul Burton <paul.burton@imgtec.com>,
Petar Jovanovic <petar.jovanovic@imgtec.com>,
Raghu Gandham <raghu.gandham@imgtec.com>
Subject: Re: [PATCH v4 5/8] MIPS: ranchu: Add Ranchu as a new generic-based board
Date: Sat, 26 Aug 2017 12:46:42 +0200 [thread overview]
Message-ID: <20170826104642.GE7433@linux-mips.org> (raw)
In-Reply-To: <1503061833-26563-6-git-send-email-aleksandar.markovic@rt-rk.com>
On Fri, Aug 18, 2017 at 03:08:57PM +0200, Aleksandar Markovic wrote:
(trimmed the cc list a bit by a number of people who probably couldn't
care less.)
> Provide amendments to the Mips generic platform framework so that
^^^^
"MIPS" to keep the trademark lawyers happy.
> +CONFIG_STAGING=y
Sure you want to enable Greg's haunted house?
I haven't checked if it's actually needed but as a general rule leave it
disabled unless you have to.
> diff --git a/arch/mips/generic/Makefile b/arch/mips/generic/Makefile
> index 56b3ea5..14931f2 100644
> --- a/arch/mips/generic/Makefile
> +++ b/arch/mips/generic/Makefile
> @@ -14,4 +14,5 @@ obj-y += proc.o
>
> obj-$(CONFIG_YAMON_DT_SHIM) += yamon-dt.o
> obj-$(CONFIG_LEGACY_BOARD_SEAD3) += board-sead3.o
> +obj-$(CONFIG_VIRT_BOARD_RANCHU) += board-ranchu.o
> obj-$(CONFIG_KEXEC) += kexec.o
> diff --git a/arch/mips/generic/board-ranchu.c b/arch/mips/generic/board-ranchu.c
> new file mode 100644
> index 0000000..500874d
> --- /dev/null
> +++ b/arch/mips/generic/board-ranchu.c
> @@ -0,0 +1,78 @@
> +/*
> + * Copyright (C) 2017 Imagination Technologies Ltd.
> + * Author: Miodrag Dinic <miodrag.dinic@imgtec.com>
> + *
> + * This program is free software; you can redistribute it and/or modify it
> + * under the terms of the GNU General Public License as published by the
> + * Free Software Foundation; either version 2 of the License, or (at your
> + * option) any later version.
> + */
> +
> +#include <linux/of_address.h>
> +
> +#include <asm/machine.h>
> +#include <asm/time.h>
You're using u64 / uint64_t below, so you need to #include <linux/types.h>
rather than playing the include lottery.
> +#define GOLDFISH_TIMER_LOW 0x00
> +#define GOLDFISH_TIMER_HIGH 0x04
> +
> +static __init uint64_t read_rtc_time(void __iomem *base)
The remainder of this file is using u64. While the ISO C types are
acceptable these days, please try to be consistent in use of types.
> +{
> + u64 time_low;
> + u64 time_high;
> +
> + time_low = readl(base + GOLDFISH_TIMER_LOW);
> + time_high = readl(base + GOLDFISH_TIMER_HIGH);
> +
> + return (time_high << 32) | time_low;
> +}
GCC used to generate pretty bad code from source like this. I haven't
checked if it has improved but generally you want to avoid extending
data to 64 bit types for as long as possible, something like:
{
u32 high, low;
low = readl(base + GOLDFISH_TIMER_LOW);
high = readl(base + GOLDFISH_TIMER_HIGH);
return ((u64)high << 32) | low;
}
> +static __init unsigned int ranchu_measure_hpt_freq(void)
> +{
> + u64 rtc_start, rtc_current, rtc_delta;
> + unsigned int start, count;
> + struct device_node *np;
> + void __iomem *rtc_base;
> +
> + np = of_find_compatible_node(NULL, NULL, "google,goldfish-rtc");
> + if (!np)
> + panic("%s(): Failed to find 'google,goldfish-rtc' dt node!",
> + __func__);
> +
> + rtc_base = of_iomap(np, 0);
> + if (!rtc_base)
> + panic("%s(): Failed to ioremap Goldfish RTC base!", __func__);
> +
> + /*
> + * poll the nanosecond resolution RTC for 1 second
> + * to calibrate the CPU frequency
> + */
> + rtc_start = read_rtc_time(rtc_base);
> + start = read_c0_count();
> +
> + do {
> + rtc_current = read_rtc_time(rtc_base);
> + rtc_delta = rtc_current - rtc_start;
> + } while (rtc_delta < NSEC_PER_SEC);
> +
> + count = read_c0_count() - start;
> +
> + count += 5000; /* round */
> + count -= count % 10000;
> +
> + return count;
> +}
> +
> +static const struct of_device_id ranchu_of_match[];
> +
> +MIPS_MACHINE(ranchu) = {
> + .matches = ranchu_of_match,
> + .measure_hpt_freq = ranchu_measure_hpt_freq,
> +};
> +
> +static const struct of_device_id ranchu_of_match[] = {
> + {
> + .compatible = "mti,ranchu",
> + .data = &__mips_mach_ranchu,
> + },
> +};
> --
> 2.7.4
>
next prev parent reply other threads:[~2017-08-26 10:46 UTC|newest]
Thread overview: 21+ messages / expand[flat|nested] mbox.gz Atom feed top
2017-08-18 13:08 [PATCH v4 0/8] MIPS: Add virtual Ranchu board as a generic-based board Aleksandar Markovic
2017-08-18 13:08 ` [PATCH v4 1/8] Documentation: Add device tree binding for Goldfish RTC driver Aleksandar Markovic
2017-08-18 13:08 ` Aleksandar Markovic
2017-08-25 8:34 ` Alexandre Belloni
2017-08-25 8:34 ` Alexandre Belloni
2017-08-18 13:08 ` [PATCH v4 2/8] rtc: goldfish: Add RTC driver for Android emulator Aleksandar Markovic
2017-08-25 8:34 ` Alexandre Belloni
2017-08-18 13:08 ` [PATCH v4 3/8] Documentation: Add device tree binding for Goldfish PIC driver Aleksandar Markovic
2017-08-18 13:08 ` Aleksandar Markovic
2017-08-18 13:08 ` [PATCH v4 4/8] irqchip/irq-goldfish-pic: Add " Aleksandar Markovic
2017-08-18 13:53 ` Marc Zyngier
2017-08-18 13:08 ` [PATCH v4 5/8] MIPS: ranchu: Add Ranchu as a new generic-based board Aleksandar Markovic
2017-08-26 10:46 ` Ralf Baechle [this message]
2017-08-18 13:08 ` [PATCH v4 6/8] Documentation: Add device tree binding for Goldfish FB driver Aleksandar Markovic
2017-08-18 16:04 ` Sergei Shtylyov
2017-08-18 13:08 ` [PATCH v4 7/8] video: goldfishfb: Add support for device tree bindings Aleksandar Markovic
2017-08-18 13:08 ` Aleksandar Markovic
2017-08-18 13:09 ` [PATCH v4 8/8] MIPS: Unselect ARCH_MIGHT_HAVE_PC_SERIO if MIPS_GENERIC Aleksandar Markovic
2017-08-26 10:52 ` Ralf Baechle
2017-08-28 9:33 ` Miodrag Dinic
2017-08-29 4:55 ` Florian Fainelli
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=20170826104642.GE7433@linux-mips.org \
--to=ralf@linux-mips.org \
--cc=aleksandar.markovic@imgtec.com \
--cc=aleksandar.markovic@rt-rk.com \
--cc=bohu@google.com \
--cc=douglas.leung@imgtec.com \
--cc=goran.ferenc@imgtec.com \
--cc=james.hogan@imgtec.com \
--cc=jinqian@google.com \
--cc=linux-mips@linux-mips.org \
--cc=miodrag.dinic@imgtec.com \
--cc=paul.burton@imgtec.com \
--cc=petar.jovanovic@imgtec.com \
--cc=raghu.gandham@imgtec.com \
/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.