lkml.org 
[lkml]   [2014]   [Oct]   [10]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    Date
    From
    SubjectRe: [PATCH 07/12] rtc: omap: silence bogus power-up reset message at probe
    On Thu, Oct 09, 2014 at 09:06:29PM +0200, Johan Hovold wrote:
    > Some legacy RTC IP revisions has a power-up reset flag in the status
    > register that later revisions lack.
    >
    > As this flag is always read back as set on later revisions (or is
    > overloaded with a different flag), make sure to only clear the flag and
    > print the info message on legacy platforms.
    >
    > Signed-off-by: Johan Hovold <johan@kernel.org>

    Reviewed-by: Felipe Balbi <balbi@ti.com>

    > ---
    > drivers/rtc/rtc-omap.c | 23 +++++++++++++++++------
    > 1 file changed, 17 insertions(+), 6 deletions(-)
    >
    > diff --git a/drivers/rtc/rtc-omap.c b/drivers/rtc/rtc-omap.c
    > index 1c58920b0c88..0ef016553a97 100644
    > --- a/drivers/rtc/rtc-omap.c
    > +++ b/drivers/rtc/rtc-omap.c
    > @@ -118,6 +118,12 @@
    > */
    > #define OMAP_RTC_HAS_32KCLK_EN BIT(2)
    >
    > +/*
    > + * Some legacy RTC IP revisions has a power-up reset flag which later
    > + * revisions lack.
    > + */
    > +#define OMAP_RTC_HAS_POWER_UP_RESET BIT(3)
    > +
    > static void __iomem *rtc_base;
    >
    > #define rtc_read(addr) readb(rtc_base + (addr))
    > @@ -347,6 +353,7 @@ static int omap_rtc_timer;
    > static struct platform_device_id omap_rtc_devtype[] = {
    > {
    > .name = DRIVER_NAME,
    > + .driver_data = OMAP_RTC_HAS_POWER_UP_RESET,
    > },
    > [OMAP_RTC_DATA_AM3352_IDX] = {
    > .name = "am3352-rtc",
    > @@ -376,7 +383,7 @@ static int __init omap_rtc_probe(struct platform_device *pdev)
    > {
    > struct resource *res;
    > struct rtc_device *rtc;
    > - u8 reg, new_ctrl;
    > + u8 reg, mask, new_ctrl;
    > const struct platform_device_id *id_entry;
    > const struct of_device_id *of_id;
    >
    > @@ -429,12 +436,16 @@ static int __init omap_rtc_probe(struct platform_device *pdev)
    >
    > /* clear old status */
    > reg = rtc_read(OMAP_RTC_STATUS_REG);
    > - if (reg & (u8) OMAP_RTC_STATUS_POWER_UP) {
    > - dev_info(&pdev->dev, "RTC power up reset detected\n");
    > - rtc_write(OMAP_RTC_STATUS_POWER_UP, OMAP_RTC_STATUS_REG);
    > +
    > + mask = OMAP_RTC_STATUS_ALARM;
    > + if (id_entry->driver_data & OMAP_RTC_HAS_POWER_UP_RESET) {
    > + mask |= OMAP_RTC_STATUS_POWER_UP;
    > + if (reg & OMAP_RTC_STATUS_POWER_UP)
    > + dev_info(&pdev->dev, "RTC power up reset detected\n");
    > }
    > - if (reg & (u8) OMAP_RTC_STATUS_ALARM)
    > - rtc_write(OMAP_RTC_STATUS_ALARM, OMAP_RTC_STATUS_REG);
    > +
    > + if (reg & mask)
    > + rtc_write(reg & mask, OMAP_RTC_STATUS_REG);
    >
    > /* handle periodic and alarm irqs */
    > if (devm_request_irq(&pdev->dev, omap_rtc_timer, rtc_irq, 0,
    > --
    > 2.0.4
    >

    --
    balbi
    [unhandled content-type:application/pgp-signature]
    \
     
     \ /
      Last update: 2014-10-10 20:41    [W:4.032 / U:0.556 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site