From a46a1ad097419aeea7350987dd95230f50d90392 Mon Sep 17 00:00:00 2001
From: hc <hc@nodka.com>
Date: Fri, 15 Nov 2024 08:53:41 +0000
Subject: [PATCH] 固定GMAC1 网卡名为 eth3
---
kernel/drivers/clocksource/timer-ti-dm-systimer.c | 29 ++++++++++++++---------------
1 files changed, 14 insertions(+), 15 deletions(-)
diff --git a/kernel/drivers/clocksource/timer-ti-dm-systimer.c b/kernel/drivers/clocksource/timer-ti-dm-systimer.c
index 2737407..345569d 100644
--- a/kernel/drivers/clocksource/timer-ti-dm-systimer.c
+++ b/kernel/drivers/clocksource/timer-ti-dm-systimer.c
@@ -57,7 +57,7 @@
};
struct dmtimer_clocksource {
- struct clocksource dev;
+ struct clocksource_user_mmio mmio;
struct dmtimer_systimer t;
unsigned int loadval;
};
@@ -437,7 +437,7 @@
struct dmtimer_systimer *t = &clkevt->t;
writel_relaxed(OMAP_TIMER_INT_OVERFLOW, t->base + t->irq_stat);
- clkevt->dev.event_handler(&clkevt->dev);
+ clockevents_handle_event(&clkevt->dev);
return IRQ_HANDLED;
}
@@ -548,7 +548,7 @@
* We mostly use cpuidle_coupled with ARM local timers for runtime,
* so there's probably no use for CLOCK_EVT_FEAT_DYNIRQ here.
*/
- dev->features = features;
+ dev->features = features | CLOCK_EVT_FEAT_PIPELINE;
dev->rating = rating;
dev->set_next_event = dmtimer_set_next_event;
dev->set_state_shutdown = dmtimer_clockevent_shutdown;
@@ -706,15 +706,7 @@
static struct dmtimer_clocksource *
to_dmtimer_clocksource(struct clocksource *cs)
{
- return container_of(cs, struct dmtimer_clocksource, dev);
-}
-
-static u64 dmtimer_clocksource_read_cycles(struct clocksource *cs)
-{
- struct dmtimer_clocksource *clksrc = to_dmtimer_clocksource(cs);
- struct dmtimer_systimer *t = &clksrc->t;
-
- return (u64)readl_relaxed(t->base + t->counter);
+ return container_of(cs, struct dmtimer_clocksource, mmio.mmio.clksrc);
}
static void __iomem *dmtimer_sched_clock_counter;
@@ -753,6 +745,7 @@
static int __init dmtimer_clocksource_init(struct device_node *np)
{
struct dmtimer_clocksource *clksrc;
+ struct clocksource_mmio_regs mmr;
struct dmtimer_systimer *t;
struct clocksource *dev;
int error;
@@ -761,7 +754,7 @@
if (!clksrc)
return -ENOMEM;
- dev = &clksrc->dev;
+ dev = &clksrc->mmio.mmio.clksrc;
t = &clksrc->t;
error = dmtimer_systimer_setup(np, t);
@@ -770,7 +763,7 @@
dev->name = "dmtimer";
dev->rating = 300;
- dev->read = dmtimer_clocksource_read_cycles;
+ dev->read = clocksource_mmio_readl_up,
dev->mask = CLOCKSOURCE_MASK(32);
dev->flags = CLOCK_SOURCE_IS_CONTINUOUS;
@@ -793,7 +786,13 @@
sched_clock_register(dmtimer_read_sched_clock, 32, t->rate);
}
- if (clocksource_register_hz(dev, t->rate))
+ mmr.reg_lower = t->base + t->counter;
+ mmr.bits_lower = 32;
+ mmr.reg_upper = 0;
+ mmr.bits_upper = 0;
+ mmr.revmap = NULL;
+
+ if (clocksource_user_mmio_init(&clksrc->mmio, &mmr, t->rate))
pr_err("Could not register clocksource %pOF\n", np);
return 0;
--
Gitblit v1.6.2