Skip to content

Commit f5f5933

Browse files
committed
Merge tag 'timers-core-2020-10-12' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip
Pull timekeeping updates from Thomas Gleixner: "Updates for timekeeping, timers and related drivers: Core: - Early boot support for the NMI safe timekeeper by utilizing local_clock() up to the point where timekeeping is initialized. This allows printk() to store multiple timestamps in the ringbuffer which is useful for coordinating dmesg information across a fleet of machines. - Provide a multi-timestamp accessor for printk() - Make timer init more robust by checking for invalid timer flags. - Comma vs semicolon fixes Drivers: - Support for new platforms in existing drivers (SP804 and Renesas CMT) - Comma vs semicolon fixes * tag 'timers-core-2020-10-12' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip: clocksource/drivers/armada-370-xp: Use semicolons rather than commas to separate statements clocksource/drivers/mps2-timer: Use semicolons rather than commas to separate statements timers: Mask invalid flags in do_init_timer() clocksource/drivers/sp804: Enable Hisilicon sp804 timer 64bit mode clocksource/drivers/sp804: Add support for Hisilicon sp804 timer clocksource/drivers/sp804: Support non-standard register offset clocksource/drivers/sp804: Prepare for support non-standard register offset clocksource/drivers/sp804: Remove a mismatched comment clocksource/drivers/sp804: Delete the leading "__" of some functions clocksource/drivers/sp804: Remove unused sp804_timer_disable() and timer-sp804.h clocksource/drivers/sp804: Cleanup clk_get_sys() dt-bindings: timer: renesas,cmt: Document r8a774e1 CMT support dt-bindings: timer: renesas,cmt: Document r8a7742 CMT support alarmtimer: Convert comma to semicolon timekeeping: Provide multi-timestamp accessor to NMI safe timekeeper timekeeping: Utilize local_clock() for NMI safe timekeeper during early boot
2 parents 20d49bf + 1b80043 commit f5f5933

11 files changed

Lines changed: 299 additions & 119 deletions

File tree

Documentation/devicetree/bindings/timer/renesas,cmt.yaml

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,7 @@ properties:
3939
- items:
4040
- enum:
4141
- renesas,r8a73a4-cmt0 # 32-bit CMT0 on R-Mobile APE6
42+
- renesas,r8a7742-cmt0 # 32-bit CMT0 on RZ/G1H
4243
- renesas,r8a7743-cmt0 # 32-bit CMT0 on RZ/G1M
4344
- renesas,r8a7744-cmt0 # 32-bit CMT0 on RZ/G1N
4445
- renesas,r8a7745-cmt0 # 32-bit CMT0 on RZ/G1E
@@ -53,6 +54,7 @@ properties:
5354
- items:
5455
- enum:
5556
- renesas,r8a73a4-cmt1 # 48-bit CMT1 on R-Mobile APE6
57+
- renesas,r8a7742-cmt1 # 48-bit CMT1 on RZ/G1H
5658
- renesas,r8a7743-cmt1 # 48-bit CMT1 on RZ/G1M
5759
- renesas,r8a7744-cmt1 # 48-bit CMT1 on RZ/G1N
5860
- renesas,r8a7745-cmt1 # 48-bit CMT1 on RZ/G1E
@@ -69,6 +71,7 @@ properties:
6971
- renesas,r8a774a1-cmt0 # 32-bit CMT0 on RZ/G2M
7072
- renesas,r8a774b1-cmt0 # 32-bit CMT0 on RZ/G2N
7173
- renesas,r8a774c0-cmt0 # 32-bit CMT0 on RZ/G2E
74+
- renesas,r8a774e1-cmt0 # 32-bit CMT0 on RZ/G2H
7275
- renesas,r8a7795-cmt0 # 32-bit CMT0 on R-Car H3
7376
- renesas,r8a7796-cmt0 # 32-bit CMT0 on R-Car M3-W
7477
- renesas,r8a77965-cmt0 # 32-bit CMT0 on R-Car M3-N
@@ -83,6 +86,7 @@ properties:
8386
- renesas,r8a774a1-cmt1 # 48-bit CMT on RZ/G2M
8487
- renesas,r8a774b1-cmt1 # 48-bit CMT on RZ/G2N
8588
- renesas,r8a774c0-cmt1 # 48-bit CMT on RZ/G2E
89+
- renesas,r8a774e1-cmt1 # 48-bit CMT on RZ/G2H
8690
- renesas,r8a7795-cmt1 # 48-bit CMT on R-Car H3
8791
- renesas,r8a7796-cmt1 # 48-bit CMT on R-Car M3-W
8892
- renesas,r8a77965-cmt1 # 48-bit CMT on R-Car M3-N

drivers/clocksource/mps2-timer.c

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -149,9 +149,9 @@ static int __init mps2_clockevent_init(struct device_node *np)
149149
ce->clkevt.rating = 200;
150150
ce->clkevt.features = CLOCK_EVT_FEAT_PERIODIC | CLOCK_EVT_FEAT_ONESHOT;
151151
ce->clkevt.cpumask = cpu_possible_mask;
152-
ce->clkevt.set_state_shutdown = mps2_timer_shutdown,
153-
ce->clkevt.set_state_periodic = mps2_timer_set_periodic,
154-
ce->clkevt.set_state_oneshot = mps2_timer_shutdown,
152+
ce->clkevt.set_state_shutdown = mps2_timer_shutdown;
153+
ce->clkevt.set_state_periodic = mps2_timer_set_periodic;
154+
ce->clkevt.set_state_oneshot = mps2_timer_shutdown;
155155
ce->clkevt.set_next_event = mps2_timer_set_next_event;
156156

157157
/* Ensure timer is disabled */

drivers/clocksource/timer-armada-370-xp.c

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -181,12 +181,12 @@ static int armada_370_xp_timer_starting_cpu(unsigned int cpu)
181181
clr = TIMER0_25MHZ;
182182
local_timer_ctrl_clrset(clr, set);
183183

184-
evt->name = "armada_370_xp_per_cpu_tick",
184+
evt->name = "armada_370_xp_per_cpu_tick";
185185
evt->features = CLOCK_EVT_FEAT_ONESHOT |
186186
CLOCK_EVT_FEAT_PERIODIC;
187-
evt->shift = 32,
188-
evt->rating = 300,
189-
evt->set_next_event = armada_370_xp_clkevt_next_event,
187+
evt->shift = 32;
188+
evt->rating = 300;
189+
evt->set_next_event = armada_370_xp_clkevt_next_event;
190190
evt->set_state_shutdown = armada_370_xp_clkevt_shutdown;
191191
evt->set_state_periodic = armada_370_xp_clkevt_set_periodic;
192192
evt->set_state_oneshot = armada_370_xp_clkevt_shutdown;

drivers/clocksource/timer-sp.h

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@
1010
*
1111
* Every SP804 contains two identical timers.
1212
*/
13+
#define NR_TIMERS 2
1314
#define TIMER_1_BASE 0x00
1415
#define TIMER_2_BASE 0x20
1516

@@ -29,3 +30,34 @@
2930
#define TIMER_RIS 0x10 /* CVR ro */
3031
#define TIMER_MIS 0x14 /* CVR ro */
3132
#define TIMER_BGLOAD 0x18 /* CVR rw */
33+
34+
struct sp804_timer {
35+
int load;
36+
int load_h;
37+
int value;
38+
int value_h;
39+
int ctrl;
40+
int intclr;
41+
int ris;
42+
int mis;
43+
int bgload;
44+
int bgload_h;
45+
int timer_base[NR_TIMERS];
46+
int width;
47+
};
48+
49+
struct sp804_clkevt {
50+
void __iomem *base;
51+
void __iomem *load;
52+
void __iomem *load_h;
53+
void __iomem *value;
54+
void __iomem *value_h;
55+
void __iomem *ctrl;
56+
void __iomem *intclr;
57+
void __iomem *ris;
58+
void __iomem *mis;
59+
void __iomem *bgload;
60+
void __iomem *bgload_h;
61+
unsigned long reload;
62+
int width;
63+
};

0 commit comments

Comments
 (0)