[PATCH 1/3] clocksource: add ARM AMBA SP804 support
Sascha Hauer
s.hauer at pengutronix.de
Mon Feb 11 04:46:54 EST 2013
On Sun, Feb 10, 2013 at 05:02:35PM +0100, Jean-Christophe PLAGNIOL-VILLARD wrote:
> Signed-off-by: Jean-Christophe PLAGNIOL-VILLARD <plagnioj at jcrosoft.com>
> ---
> drivers/clocksource/Kconfig | 4 ++
> drivers/clocksource/Makefile | 1 +
> drivers/clocksource/amba-sp804.c | 89 ++++++++++++++++++++++++++++++++++++++
> 3 files changed, 94 insertions(+)
> create mode 100644 drivers/clocksource/amba-sp804.c
>
> diff --git a/drivers/clocksource/Kconfig b/drivers/clocksource/Kconfig
> index 09acdd7..3f27cf2 100644
> --- a/drivers/clocksource/Kconfig
> +++ b/drivers/clocksource/Kconfig
> @@ -1,3 +1,7 @@
> +config AMBA_SP804
> + bool
> + depends on ARM_AMBA
> +
> config ARM_SMP_TWD
> bool
> depends on ARM && CPU_V7
> diff --git a/drivers/clocksource/Makefile b/drivers/clocksource/Makefile
> index 92d7c13..b0bc8bd 100644
> --- a/drivers/clocksource/Makefile
> +++ b/drivers/clocksource/Makefile
> @@ -1,3 +1,4 @@
> +obj-$(CONFIG_AMBA_SP804) += amba-sp804.o
> obj-$(CONFIG_ARM_SMP_TWD) += arm_smp_twd.o
> obj-$(CONFIG_CLOCKSOURCE_BCM2835) += bcm2835.o
> obj-$(CONFIG_CLOCKSOURCE_NOMADIK) += nomadik.o
> diff --git a/drivers/clocksource/amba-sp804.c b/drivers/clocksource/amba-sp804.c
> new file mode 100644
> index 0000000..bb6facc
> --- /dev/null
> +++ b/drivers/clocksource/amba-sp804.c
> @@ -0,0 +1,89 @@
> +/*
> + * Copyright (C) 2012 Jean-Christophe PLAGNIOL-VILLARD <plagnio at jcrosoft.com>
> + *
> + * Under GPL v2
> + */
> +#include <common.h>
> +#include <init.h>
> +#include <clock.h>
> +#include <io.h>
> +#include <driver.h>
> +#include <errno.h>
> +#include <linux/amba/bus.h>
> +#include <linux/clk.h>
> +#include <linux/err.h>
> +
> +#include <asm/hardware/arm_timer.h>
> +
> +static __iomem void *sp804_base;
> +static struct clk *sp804_clk;
> +
> +static uint64_t sp804_read(void)
> +{
> + return ~readl(sp804_base + TIMER_VALUE);
> +}
> +
> +static struct clocksource sp804_clksrc = {
> + .read = sp804_read,
> + .shift = 20,
> + .mask = CLOCKSOURCE_MASK(32),
> +};
> +
> +static int sp804_probe(struct amba_device *dev, const struct amba_id *id)
> +{
> + u32 tick_rate;
> + int ret;
> +
Since this is a single instance driver please protect this driver from
being probed twice:
if (sp804_base)
return -EBUSY;
Sascha
--
Pengutronix e.K. | |
Industrial Linux Solutions | http://www.pengutronix.de/ |
Peiner Str. 6-8, 31137 Hildesheim, Germany | Phone: +49-5121-206917-0 |
Amtsgericht Hildesheim, HRA 2686 | Fax: +49-5121-206917-5555 |
More information about the barebox
mailing list