[PATCH v2 1/6] rtc: omap: kicker mechanism support
Sergei Shtylyov
sshtylyov at mvista.com
Wed Jul 25 21:15:29 EST 2012
Hello.
On 25-07-2012 10:12, Afzal Mohammed wrote:
> OMAP RTC IP can have kicker feature. This prevents spurious
> writes to register. To write to registers kicker lock has to
> be released. Procedure to do it as follows,
> 1. write to kick0 register, 0x83e70b13
> 2. write to kick1 register, 0x95a4f1e0
> Writing value other than 0x83e70b13 to kick0 enables write
> locking, more details about kicker mechanism can be found in
> section 20.3.3.5.3 of AM335X TRM @www.ti.com/am335x
> Here id table information is added and is used to distinguish
> those that require kicker handling and the ones that doesn't
> need it. There are more features in the newer IP's compared
> to legacy ones other than kicker, which driver currently
> doesn't handle, supporting additional features would be
> easier with the addition of id table.
> Older IP (of OMAP1) doesn't have revision register as per
> TRM, so revision register can't be relied always to find
> features, hence id table is being used.
> Signed-off-by: Afzal Mohammed <afzal at ti.com>
> ---
> v2:
> Use device name da830-rtc instead of am1808-rtc
> Newly added register name made similar to that existing in the driver
> Better commit message description
> drivers/rtc/rtc-omap.c | 39 ++++++++++++++++++++++++++++++++++++++-
> 1 files changed, 38 insertions(+), 1 deletions(-)
> diff --git a/drivers/rtc/rtc-omap.c b/drivers/rtc/rtc-omap.c
> index 0b614e3..8afbc2e 100644
> --- a/drivers/rtc/rtc-omap.c
> +++ b/drivers/rtc/rtc-omap.c
> @@ -38,6 +38,8 @@
> * the SoC). See the BOARD-SPECIFIC CUSTOMIZATION comment.
> */
>
> +#define DRIVER_NAME "omap_rtc"
> +
> #define OMAP_RTC_BASE 0xfffb4800
>
> /* RTC registers */
> @@ -64,6 +66,9 @@
> #define OMAP_RTC_COMP_MSB_REG 0x50
> #define OMAP_RTC_OSC_REG 0x54
>
> +#define OMAP_RTC_KICK0_REG 0x6c
> +#define OMAP_RTC_KICK1_REG 0x70
> +
> /* OMAP_RTC_CTRL_REG bit fields: */
> #define OMAP_RTC_CTRL_SPLIT (1<<7)
> #define OMAP_RTC_CTRL_DISABLE (1<<6)
> @@ -88,11 +93,19 @@
> #define OMAP_RTC_INTERRUPTS_IT_ALARM (1<<3)
> #define OMAP_RTC_INTERRUPTS_IT_TIMER (1<<2)
>
> +/* OMAP_RTC_KICKER values */
> +#define KICK0_VALUE (0x83e70b13)
> +#define KICK1_VALUE (0x95a4f1e0)
Parens not needed around simple literals.
> static void __iomem *rtc_base;
>
> #define rtc_read(addr) __raw_readb(rtc_base + (addr))
> #define rtc_write(val, addr) __raw_writeb(val, rtc_base + (addr))
>
> +#define rtc_writel(val, addr) writel(val, rtc_base + (addr))
> +
Why not __raw_writel() like the above functions?
WBR, Sergei
More information about the devicetree-discuss
mailing list