From: Balaji Rao <balajirrao@openmoko.org>
To: Alessandro Zummo <alessandro.zummo@towertech.it>
Cc: linux-kernel@vger.kernel.org, Andy Green <andy@openmoko.com>,
rtc-linux@googlegroups.com
Subject: Re: [PATCH 4/7] rtc: PCF50633 rtc driver
Date: Mon, 15 Dec 2008 03:34:30 +0530 [thread overview]
Message-ID: <20081214220428.GA2741@cff.thadambail> (raw)
In-Reply-To: <20081214202956.1f97b906@i1501.lan.towertech.it>
On Sun, Dec 14, 2008 at 08:29:56PM +0100, Alessandro Zummo wrote:
> On Sun, 14 Dec 2008 16:33:05 +0530
> Balaji Rao <balajirrao@openmoko.org> wrote:
>
> Hello,
>
> first review below. Please always add the rtc-linux mailing
> list in cc so that patchwork[1] can track your submission.
>
> [1]
> http://patchwork.ozlabs.org/project/rtc-linux/list/?state=*
>
OK, noted,
> > +#include <linux/bcd.h>
> > +
> > +#include <linux/mfd/pcf50633/core.h>
>
> > +#include <linux/mfd/pcf50633/rtc.h>
>
> this file should be included with the patch.
>
Hmm. This patch is included in [PATCH 1/7] of the series - which
implements the core driver. This core driver needs this file to compile
and not including there is going to break the bisectability of the
series. Isn't this what I'm supposed to do ? Please correct me if I'm
wrong.
> > +static void rtc2pcf_time(struct pcf50633_time *pcf, struct rtc_time *rtc)
> > +{
> > + pcf->time[PCF50633_TI_SEC] = bin2bcd(rtc->tm_sec);
> > + pcf->time[PCF50633_TI_MIN] = bin2bcd(rtc->tm_min);
> > + pcf->time[PCF50633_TI_HOUR] = bin2bcd(rtc->tm_hour);
> > + pcf->time[PCF50633_TI_WKDAY] = bin2bcd(rtc->tm_wday);
> > + pcf->time[PCF50633_TI_DAY] = bin2bcd(rtc->tm_mday);
> > + pcf->time[PCF50633_TI_MONTH] = bin2bcd(rtc->tm_mon);
> > + pcf->time[PCF50633_TI_YEAR] = bin2bcd(rtc->tm_year - 100);
>
> you should add a check in the caller for tm_year < 100
>
OK.
> > + case RTC_PIE_OFF:
> > + pcf->rtc.second_enabled = 0;
> > + pcf50633_irq_mask(pcf, PCF50633_IRQ_SECOND);
> > + return 0;
> > + case RTC_PIE_ON:
> > + pcf->rtc.second_enabled = 1;
> > + pcf50633_irq_unmask(pcf, PCF50633_IRQ_SECOND);
> > + return 0;
> > + }
>
> we have recently improved the API for interrupts handling.
> the patch is now in -mm and you can check it here:
> http://patchwork.ozlabs.org/patch/10039/
>
> that involves AIE and UIE.
>
> the API for PIE was always there and it's implemented by ops->irq_set_state
> and ops->irq_set_freq
>
> Is your PIE a real PIE or an UIE?
>
OK.
Oh.. yes, it's actually an UIE! Sorry about that - will change.
> > + pcf = dev_get_drvdata(dev);
> > +
> > + ret = pcf50633_read_block(pcf, PCF50633_REG_RTCSC,
> > + PCF50633_TI_EXTENT,
> > + &pcf_tm.time[0]);
> > + if (ret != PCF50633_TI_EXTENT)
> > + dev_err(dev, "Failed to read time\n");
>
> so return -EIO or something to that effect.
>
OK.
> > + dev_dbg(dev, "PCF_TIME: %02x.%02x.%02x %02x:%02x:%02x\n",
> > + pcf_tm.time[PCF50633_TI_DAY],
> > + pcf_tm.time[PCF50633_TI_MONTH],
> > + pcf_tm.time[PCF50633_TI_YEAR],
> > + pcf_tm.time[PCF50633_TI_HOUR],
> > + pcf_tm.time[PCF50633_TI_MIN],
> > + pcf_tm.time[PCF50633_TI_SEC]);
> > +
> > + pcf2rtc_time(tm, &pcf_tm);
> > +
> > + dev_dbg(dev, "RTC_TIME: %u.%u.%u %u:%u:%u\n",
> > + tm->tm_mday, tm->tm_mon, tm->tm_year,
> > + tm->tm_hour, tm->tm_min, tm->tm_sec);
> > +
> > + return 0;
>
> nope. always return rtc_valid_tm(tm);
>
OK.
> > +
> > + ret = pcf50633_write_block(pcf, PCF50633_REG_RTCSC,
> > + PCF50633_TI_EXTENT,
> > + &pcf_tm.time[0]);
> > + if (ret)
> > + dev_err(dev, "Failed to set time %d\n", ret);
> > +
> > + if (!second_masked)
> > + pcf50633_irq_unmask(pcf, PCF50633_IRQ_SECOND);
> > + if (!alarm_masked)
> > + pcf50633_irq_unmask(pcf, PCF50633_IRQ_ALARM);
> > +
> > + return ret;
>
> is this ret an appropriate error code?
>
Oops! No, it's wrong. Will fix.
> > + ret = pcf50633_read_block(pcf, PCF50633_REG_RTCSCA,
> > + PCF50633_TI_EXTENT, &pcf_tm.time[0]);
> > +
> > + if (ret != PCF50633_TI_EXTENT)
> > + dev_err(dev, "Failed to read Alarm time %d\n", ret);
> > +
> > + pcf2rtc_time(&alrm->time, &pcf_tm);
> > +
> > + return ret;
>
> probably wrong, ret must be 0 on success.
>
Right. Will fix.
> > + struct rtc_device *rtc;
> > + struct pcf50633 *pcf;
> > +
> > + rtc = rtc_device_register("pcf50633-rtc", &pdev->dev,
> > + &pcf50633_rtc_ops, THIS_MODULE);
> > + if (IS_ERR(rtc))
> > + return -ENODEV;
>
> nope. if IS_ERR means that the rtc pointer has a valid error
> code that you should return to the caller.
>
Fine. Will change.
> > + pcf = platform_get_drvdata(pdev);
>
> uh? where did you set up the pointer?
>
>
> > + /* Set up IRQ handlers */
> > + pcf->irq_handler[PCF50633_IRQ_ALARM].handler = pcf50633_rtc_irq;
> > + pcf->irq_handler[PCF50633_IRQ_SECOND].handler = pcf50633_rtc_irq;
> > +
> > + pcf->rtc.rtc_dev = rtc;
>
> ??
>
It's done in the core driver - [PATCH 1/7] of this series.
> > + .probe = pcf50633_rtc_probe,
> > + .remove = __devexit_p(pcf50633_rtc_remove),
>
> you marked __devexit_p but forgot to mark the function
> itself.
>
Oh! will fix.
> > +{
> > + return platform_driver_register(&pcf50633_rtc_driver);
>
> can't you use platform_driver_probe ?
>
Yes, I probably can. Will change.
Thank you for the review. Will send again after resolving the issues.
- Balaji
next prev parent reply other threads:[~2008-12-14 22:05 UTC|newest]
Thread overview: 21+ messages / expand[flat|nested] mbox.gz Atom feed top
2008-12-14 11:01 [PATCH 0/7] PCF50633 support Balaji Rao
2008-12-14 11:02 ` [PATCH 1/7] mfd: PCF50633 core driver Balaji Rao
2008-12-14 11:02 ` [PATCH 2/7] mfd: PCF50633 adc driver Balaji Rao
2008-12-14 11:02 ` [PATCH 3/7] mfd: PCF50633 gpio support Balaji Rao
2008-12-14 11:03 ` [PATCH 4/7] rtc: PCF50633 rtc driver Balaji Rao
2008-12-14 19:29 ` Alessandro Zummo
2008-12-14 22:04 ` Balaji Rao [this message]
2008-12-14 22:21 ` [rtc-linux] " Alessandro Zummo
2008-12-14 23:29 ` Balaji Rao
2008-12-14 23:39 ` Alessandro Zummo
2008-12-14 11:03 ` [PATCH 5/7] power_supply: PCF50633 battery charger driver Balaji Rao
2008-12-14 22:10 ` Balaji Rao
2008-12-15 22:38 ` Anton Vorontsov
2008-12-16 15:24 ` Balaji Rao
2008-12-14 11:03 ` [PATCH 6/7] input: PCF50633 input driver Balaji Rao
2008-12-15 7:35 ` Dmitry Torokhov
2008-12-16 15:18 ` Balaji Rao
2008-12-14 11:04 ` [PATCH 7/7] regulator: PCF50633 pmic driver Balaji Rao
2008-12-15 11:35 ` Mark Brown
2008-12-15 14:04 ` Balaji Rao
2008-12-16 10:27 ` Mark Brown
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20081214220428.GA2741@cff.thadambail \
--to=balajirrao@openmoko.org \
--cc=alessandro.zummo@towertech.it \
--cc=andy@openmoko.com \
--cc=linux-kernel@vger.kernel.org \
--cc=rtc-linux@googlegroups.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox