[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