Looks good to me, however...After having a deeper look on ops_lock, it seems this one is sufficient, so I'll remove all spinlock uses in this driver.
On 05/01/2017 at 14:43:24 +0100, Amelie Delaunay wrote :
+struct stm32_rtc {
+ struct rtc_device *rtc_dev;
+ void __iomem *base;
+ struct clk *ck_rtc;
+ spinlock_t lock; /* Protects registers accesses */
This spinlock seems to be useless, the rtc ops_lock is already
protecting everywhere it is taken.
You're right. I'll remove all rtc_valid_tm calls.+ int irq_alarm;
+};
+
[...]
+static int stm32_rtc_set_alarm(struct device *dev, struct rtc_wkalrm *alrm)
+{
+ struct stm32_rtc *rtc = dev_get_drvdata(dev);
+ struct rtc_time *tm = &alrm->time;
+ unsigned long irqflags;
+ unsigned int cr, isr, alrmar;
+ int ret = 0;
+
+ if (rtc_valid_tm(tm)) {
+ dev_err(dev, "Alarm time not valid.\n");
+ return -EINVAL;
This will never happen, tm is already checked multiple times (up to
three) in the core before this function can be called.
Thanks for reviewing. I send a v4 for this patch right now.+ }
+
You don't need to resend the whole series, just this patch. I'll take
2/8 and 3/8, the other ones can go through the stm32 tree.