Merge tag 'rtc-4.17' of git://git.kernel.org/pub/scm/linux/kernel/git/abelloni/linux

Pull RTC updates from Alexandre Belloni:
 "This contains a few series that have been in preparation for a while
  and that will help systems with RTCs that will fail in 2038, 2069 or
  2100.

  Subsystem:
   - Add tracepoints
   - Rework of the RTC/nvmem API to allow drivers to discard struct
     nvmem_config after registration
   - New range API, drivers can now expose the useful range of the RTC
   - New offset API the core is now able to add an offset to the RTC
     time, modifying the supported range.
   - Multiple rtc_time64_to_tm fixes
   - Handle time_t overflow on 32 bit platforms in the core instead of
     letting drivers do crazy things.
   - remove rtc_control API

  New driver:
   - Intersil ISL12026

  Drivers:
   - Drivers exposing the RTC non volatile memory have been converted to
     use nvmem
   - Removed useless time and date validation
   - Removed an indirection pattern that was a cargo cult from ancient
     drivers
   - Removed VLA usage
   - Fixed a possible race condition in probe functions
   - AB8540 support is dropped from ab8500
   - pcf85363 now has alarm support"

* tag 'rtc-4.17' of git://git.kernel.org/pub/scm/linux/kernel/git/abelloni/linux: (128 commits)
  rtc: snvs: Fix usage of snvs_rtc_enable
  rtc: mt7622: fix module autoloading for OF platform drivers
  rtc: isl12022: use true and false for boolean values
  rtc: ab8500: Drop AB8540 support
  rtc: remove a warning during scripts/kernel-doc step
  rtc: 88pm860x: remove artificial limitation
  rtc: 88pm80x: remove artificial limitation
  rtc: st-lpc: remove artificial limitation
  rtc: mrst: remove artificial limitation
  rtc: mv: remove artificial limitation
  rtc: hctosys: Ensure system time doesn't overflow time_t
  parisc: time: stop validating rtc_time in .read_time
  rtc: pcf85063: fix clearing bits in pcf85063_start_clock
  rtc: at91sam9: Set name of regmap_config
  rtc: s5m: Remove VLA usage
  rtc: s5m: Move enum from rtc.h to rtc-s5m.c
  rtc: remove VLA usage
  rtc: Add useful timestamp definitions
  rtc: Add one offset seconds to expand RTC range
  rtc: Factor out the RTC range validation into rtc_valid_range()
  ...
This commit is contained in:
Linus Torvalds
2018-04-10 10:22:27 -07:00
123 changed files with 1812 additions and 1086 deletions
+206
View File
@@ -0,0 +1,206 @@
#undef TRACE_SYSTEM
#define TRACE_SYSTEM rtc
#if !defined(_TRACE_RTC_H) || defined(TRACE_HEADER_MULTI_READ)
#define _TRACE_RTC_H
#include <linux/rtc.h>
#include <linux/tracepoint.h>
DECLARE_EVENT_CLASS(rtc_time_alarm_class,
TP_PROTO(time64_t secs, int err),
TP_ARGS(secs, err),
TP_STRUCT__entry(
__field(time64_t, secs)
__field(int, err)
),
TP_fast_assign(
__entry->secs = secs;
__entry->err = err;
),
TP_printk("UTC (%lld) (%d)",
__entry->secs, __entry->err
)
);
DEFINE_EVENT(rtc_time_alarm_class, rtc_set_time,
TP_PROTO(time64_t secs, int err),
TP_ARGS(secs, err)
);
DEFINE_EVENT(rtc_time_alarm_class, rtc_read_time,
TP_PROTO(time64_t secs, int err),
TP_ARGS(secs, err)
);
DEFINE_EVENT(rtc_time_alarm_class, rtc_set_alarm,
TP_PROTO(time64_t secs, int err),
TP_ARGS(secs, err)
);
DEFINE_EVENT(rtc_time_alarm_class, rtc_read_alarm,
TP_PROTO(time64_t secs, int err),
TP_ARGS(secs, err)
);
TRACE_EVENT(rtc_irq_set_freq,
TP_PROTO(int freq, int err),
TP_ARGS(freq, err),
TP_STRUCT__entry(
__field(int, freq)
__field(int, err)
),
TP_fast_assign(
__entry->freq = freq;
__entry->err = err;
),
TP_printk("set RTC periodic IRQ frequency:%u (%d)",
__entry->freq, __entry->err
)
);
TRACE_EVENT(rtc_irq_set_state,
TP_PROTO(int enabled, int err),
TP_ARGS(enabled, err),
TP_STRUCT__entry(
__field(int, enabled)
__field(int, err)
),
TP_fast_assign(
__entry->enabled = enabled;
__entry->err = err;
),
TP_printk("%s RTC 2^N Hz periodic IRQs (%d)",
__entry->enabled ? "enable" : "disable",
__entry->err
)
);
TRACE_EVENT(rtc_alarm_irq_enable,
TP_PROTO(unsigned int enabled, int err),
TP_ARGS(enabled, err),
TP_STRUCT__entry(
__field(unsigned int, enabled)
__field(int, err)
),
TP_fast_assign(
__entry->enabled = enabled;
__entry->err = err;
),
TP_printk("%s RTC alarm IRQ (%d)",
__entry->enabled ? "enable" : "disable",
__entry->err
)
);
DECLARE_EVENT_CLASS(rtc_offset_class,
TP_PROTO(long offset, int err),
TP_ARGS(offset, err),
TP_STRUCT__entry(
__field(long, offset)
__field(int, err)
),
TP_fast_assign(
__entry->offset = offset;
__entry->err = err;
),
TP_printk("RTC offset: %ld (%d)",
__entry->offset, __entry->err
)
);
DEFINE_EVENT(rtc_offset_class, rtc_set_offset,
TP_PROTO(long offset, int err),
TP_ARGS(offset, err)
);
DEFINE_EVENT(rtc_offset_class, rtc_read_offset,
TP_PROTO(long offset, int err),
TP_ARGS(offset, err)
);
DECLARE_EVENT_CLASS(rtc_timer_class,
TP_PROTO(struct rtc_timer *timer),
TP_ARGS(timer),
TP_STRUCT__entry(
__field(struct rtc_timer *, timer)
__field(ktime_t, expires)
__field(ktime_t, period)
),
TP_fast_assign(
__entry->timer = timer;
__entry->expires = timer->node.expires;
__entry->period = timer->period;
),
TP_printk("RTC timer:(%p) expires:%lld period:%lld",
__entry->timer, __entry->expires, __entry->period
)
);
DEFINE_EVENT(rtc_timer_class, rtc_timer_enqueue,
TP_PROTO(struct rtc_timer *timer),
TP_ARGS(timer)
);
DEFINE_EVENT(rtc_timer_class, rtc_timer_dequeue,
TP_PROTO(struct rtc_timer *timer),
TP_ARGS(timer)
);
DEFINE_EVENT(rtc_timer_class, rtc_timer_fired,
TP_PROTO(struct rtc_timer *timer),
TP_ARGS(timer)
);
#endif /* _TRACE_RTC_H */
/* This part must be outside protection */
#include <trace/define_trace.h>