diff options
author | Jean-Christophe PLAGNIOL-VILLARD <plagnioj@jcrosoft.com> | 2013-02-12 14:03:26 +0100 |
---|---|---|
committer | Sascha Hauer <s.hauer@pengutronix.de> | 2013-02-12 20:35:52 +0100 |
commit | ed4da3f2de93bf445f10b762aeb1fc75967b5660 (patch) | |
tree | 073f2b2cc43a7a569c5fa501a45d5c5331c84997 | |
parent | a59a5acf68e6a46aee285f3f2d95d64854cbf115 (diff) | |
download | barebox-ed4da3f2de93bf445f10b762aeb1fc75967b5660.tar.gz barebox-ed4da3f2de93bf445f10b762aeb1fc75967b5660.tar.xz |
sp804: introduce amba_is_arm_sp804 to detect if the sp804 is present at the address
Signed-off-by: Jean-Christophe PLAGNIOL-VILLARD <plagnioj@jcrosoft.com>
Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
-rw-r--r-- | drivers/clocksource/amba-sp804.c | 6 | ||||
-rw-r--r-- | include/linux/amba/sp804.h | 30 |
2 files changed, 33 insertions, 3 deletions
diff --git a/drivers/clocksource/amba-sp804.c b/drivers/clocksource/amba-sp804.c index d9a30c228..fedcb6483 100644 --- a/drivers/clocksource/amba-sp804.c +++ b/drivers/clocksource/amba-sp804.c @@ -9,7 +9,7 @@ #include <io.h> #include <driver.h> #include <errno.h> -#include <linux/amba/bus.h> +#include <linux/amba/sp804.h> #include <linux/clk.h> #include <linux/err.h> @@ -73,8 +73,8 @@ static int sp804_probe(struct amba_device *dev, const struct amba_id *id) static struct amba_id sp804_ids[] = { { - .id = 0x00141804, - .mask = 0x00ffffff, + .id = AMBA_ARM_SP804_ID, + .mask = AMBA_ARM_SP804_ID_MASK, }, { 0, 0 }, }; diff --git a/include/linux/amba/sp804.h b/include/linux/amba/sp804.h new file mode 100644 index 000000000..aba550c37 --- /dev/null +++ b/include/linux/amba/sp804.h @@ -0,0 +1,30 @@ +/* + * Copyright (C) 2013 Jean-Christophe PLAGNIOL-VILLARD <plagnio@jcrosoft.com> + * + * GPLv2 only + */ + +#ifndef __AMBA_SP804_H__ +#define __AMBA_SP804_H__ + +#include <linux/amba/bus.h> +#include <sizes.h> + +#define AMBA_ARM_SP804_ID 0x00141804 +#define AMBA_ARM_SP804_ID_MASK 0x00ffffff + +static inline bool amba_is_arm_sp804(void __iomem *base) +{ + u32 pid, cid; + u32 size = SZ_4K; + + cid = amba_device_get_cid(base, size); + + if (cid != AMBA_CID) + return false; + + pid = amba_device_get_pid(base, size); + + return (pid & AMBA_ARM_SP804_ID_MASK) == AMBA_ARM_SP804_ID; +} +#endif /* __AMBA_SP804_H__ */ |