From: Sasha Levin <sashal@kernel.org>
To: linux-kernel@vger.kernel.org, stable@vger.kernel.org
Cc: Lubomir Rintel <lkundrak@v3.sk>, Olof Johansson <olof@lixom.net>,
Sasha Levin <sashal@kernel.org>
Subject: [PATCH AUTOSEL 4.4 26/80] ARM: mmp/mmp2: dt: enable the clock
Date: Mon, 28 Jan 2019 11:23:07 -0500 [thread overview]
Message-ID: <20190128162401.58841-26-sashal@kernel.org> (raw)
In-Reply-To: <20190128162401.58841-1-sashal@kernel.org>
From: Lubomir Rintel <lkundrak@v3.sk>
[ Upstream commit f36797ee43802b367e59f0f9a9805304a4ff0c98 ]
The device-tree booted MMP2 needs to enable the timer clock, otherwise
it would stop ticking when the boot finishes.
It can also use the clock rate from the clk, the non-DT boards need to
keep using the hardcoded rates.
Signed-off-by: Lubomir Rintel <lkundrak@v3.sk>
Acked-by: Pavel Machek <pavel@ucw.cz>
Signed-off-by: Olof Johansson <olof@lixom.net>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
arch/arm/mach-mmp/common.h | 2 +-
arch/arm/mach-mmp/mmp2.c | 2 +-
arch/arm/mach-mmp/pxa168.c | 2 +-
arch/arm/mach-mmp/time.c | 32 ++++++++++++++++++++------------
4 files changed, 23 insertions(+), 15 deletions(-)
diff --git a/arch/arm/mach-mmp/common.h b/arch/arm/mach-mmp/common.h
index cf445bae6d77..69c7eec6d1e0 100644
--- a/arch/arm/mach-mmp/common.h
+++ b/arch/arm/mach-mmp/common.h
@@ -1,7 +1,7 @@
#include <linux/reboot.h>
#define ARRAY_AND_SIZE(x) (x), ARRAY_SIZE(x)
-extern void timer_init(int irq);
+extern void timer_init(int irq, unsigned long rate);
extern void __init mmp_map_io(void);
extern void mmp_restart(enum reboot_mode, const char *);
diff --git a/arch/arm/mach-mmp/mmp2.c b/arch/arm/mach-mmp/mmp2.c
index a70b5530bd42..90a0d8114af2 100644
--- a/arch/arm/mach-mmp/mmp2.c
+++ b/arch/arm/mach-mmp/mmp2.c
@@ -133,7 +133,7 @@ void __init mmp2_timer_init(void)
clk_rst = APBC_APBCLK | APBC_FNCLK | APBC_FNCLKSEL(1);
__raw_writel(clk_rst, APBC_TIMERS);
- timer_init(IRQ_MMP2_TIMER1);
+ timer_init(IRQ_MMP2_TIMER1, 6500000);
}
/* on-chip devices */
diff --git a/arch/arm/mach-mmp/pxa168.c b/arch/arm/mach-mmp/pxa168.c
index 144e997624c0..5a616db7f392 100644
--- a/arch/arm/mach-mmp/pxa168.c
+++ b/arch/arm/mach-mmp/pxa168.c
@@ -78,7 +78,7 @@ void __init pxa168_timer_init(void)
/* 3.25MHz, bus/functional clock enabled, release reset */
__raw_writel(TIMER_CLK_RST, APBC_TIMERS);
- timer_init(IRQ_PXA168_TIMER1);
+ timer_init(IRQ_PXA168_TIMER1, 6500000);
}
void pxa168_clear_keypad_wakeup(void)
diff --git a/arch/arm/mach-mmp/time.c b/arch/arm/mach-mmp/time.c
index dbc697b2fda1..7e7520a9eddb 100644
--- a/arch/arm/mach-mmp/time.c
+++ b/arch/arm/mach-mmp/time.c
@@ -22,6 +22,7 @@
#include <linux/kernel.h>
#include <linux/interrupt.h>
#include <linux/clockchips.h>
+#include <linux/clk.h>
#include <linux/io.h>
#include <linux/irq.h>
@@ -39,12 +40,6 @@
#include "clock.h"
-#ifdef CONFIG_CPU_MMP2
-#define MMP_CLOCK_FREQ 6500000
-#else
-#define MMP_CLOCK_FREQ 3250000
-#endif
-
#define TIMERS_VIRT_BASE TIMERS1_VIRT_BASE
#define MAX_DELTA (0xfffffffe)
@@ -190,19 +185,18 @@ static struct irqaction timer_irq = {
.dev_id = &ckevt,
};
-void __init timer_init(int irq)
+void __init timer_init(int irq, unsigned long rate)
{
timer_config();
- sched_clock_register(mmp_read_sched_clock, 32, MMP_CLOCK_FREQ);
+ sched_clock_register(mmp_read_sched_clock, 32, rate);
ckevt.cpumask = cpumask_of(0);
setup_irq(irq, &timer_irq);
- clocksource_register_hz(&cksrc, MMP_CLOCK_FREQ);
- clockevents_config_and_register(&ckevt, MMP_CLOCK_FREQ,
- MIN_DELTA, MAX_DELTA);
+ clocksource_register_hz(&cksrc, rate);
+ clockevents_config_and_register(&ckevt, rate, MIN_DELTA, MAX_DELTA);
}
#ifdef CONFIG_OF
@@ -214,7 +208,9 @@ static const struct of_device_id mmp_timer_dt_ids[] = {
void __init mmp_dt_init_timer(void)
{
struct device_node *np;
+ struct clk *clk;
int irq, ret;
+ unsigned long rate;
np = of_find_matching_node(NULL, mmp_timer_dt_ids);
if (!np) {
@@ -222,6 +218,18 @@ void __init mmp_dt_init_timer(void)
goto out;
}
+ clk = of_clk_get(np, 0);
+ if (!IS_ERR(clk)) {
+ ret = clk_prepare_enable(clk);
+ if (ret)
+ goto out;
+ rate = clk_get_rate(clk) / 2;
+ } else if (cpu_is_pj4()) {
+ rate = 6500000;
+ } else {
+ rate = 3250000;
+ }
+
irq = irq_of_parse_and_map(np, 0);
if (!irq) {
ret = -EINVAL;
@@ -232,7 +240,7 @@ void __init mmp_dt_init_timer(void)
ret = -ENOMEM;
goto out;
}
- timer_init(irq);
+ timer_init(irq, rate);
return;
out:
pr_err("Failed to get timer from device tree with error:%d\n", ret);
--
2.19.1
next prev parent reply other threads:[~2019-01-28 16:24 UTC|newest]
Thread overview: 97+ messages / expand[flat|nested] mbox.gz Atom feed top
2019-01-28 16:22 [PATCH AUTOSEL 4.4 01/80] drm/bufs: Fix Spectre v1 vulnerability Sasha Levin
2019-01-28 16:22 ` Sasha Levin
2019-01-28 16:22 ` [PATCH AUTOSEL 4.4 02/80] staging: iio: adc: ad7280a: handle error from __ad7280_read32() Sasha Levin
2019-01-28 16:22 ` [PATCH AUTOSEL 4.4 03/80] ASoC: Intel: mrfld: fix uninitialized variable access Sasha Levin
2019-01-28 16:22 ` [PATCH AUTOSEL 4.4 04/80] ath9k: dynack: use authentication messages for 'late' ack Sasha Levin
2019-01-28 16:22 ` [PATCH AUTOSEL 4.4 05/80] scsi: lpfc: Correct LCB RJT handling Sasha Levin
2019-01-28 16:22 ` [PATCH AUTOSEL 4.4 06/80] platform/x86: asus-nb-wmi: Map 0x35 to KEY_SCREENLOCK Sasha Levin
2019-01-28 16:22 ` [PATCH AUTOSEL 4.4 07/80] ARM: 8808/1: kexec:offline panic_smp_self_stop CPU Sasha Levin
2019-01-28 16:22 ` [Cluster-devel] [PATCH AUTOSEL 4.4 08/80] dlm: Don't swamp the CPU with callbacks queued during recovery Sasha Levin
2019-01-28 16:22 ` Sasha Levin
2019-01-28 16:22 ` [PATCH AUTOSEL 4.4 09/80] x86/PCI: Fix Broadcom CNB20LE unintended sign extension (redux) Sasha Levin
2019-01-28 16:22 ` [PATCH AUTOSEL 4.4 10/80] powerpc/pseries: add of_node_put() in dlpar_detach_node() Sasha Levin
2019-01-28 16:22 ` Sasha Levin
2019-01-28 16:22 ` [PATCH AUTOSEL 4.4 11/80] serial: fsl_lpuart: clear parity enable bit when disable parity Sasha Levin
2019-01-28 16:22 ` [PATCH AUTOSEL 4.4 12/80] serial: core: Allow processing sysrq at port unlock time Sasha Levin
2019-01-28 16:22 ` [PATCH AUTOSEL 4.4 13/80] ptp: check gettime64 return code in PTP_SYS_OFFSET ioctl Sasha Levin
2019-01-28 16:22 ` [PATCH AUTOSEL 4.4 14/80] staging:iio:ad2s90: Make probe handle spi_setup failure Sasha Levin
2019-01-28 16:22 ` [PATCH AUTOSEL 4.4 15/80] staging: iio: ad7780: update voltage on read Sasha Levin
2019-01-28 16:22 ` [PATCH AUTOSEL 4.4 16/80] ARM: OMAP2+: hwmod: Fix some section annotations Sasha Levin
2019-01-28 16:22 ` [PATCH AUTOSEL 4.4 17/80] modpost: validate symbol names also in find_elf_symbol Sasha Levin
2019-01-28 16:22 ` [PATCH AUTOSEL 4.4 18/80] perf tools: Add Hygon Dhyana support Sasha Levin
2019-01-28 16:23 ` [PATCH AUTOSEL 4.4 19/80] soc/tegra: Don't leak device tree node reference Sasha Levin
2019-01-28 16:23 ` [PATCH AUTOSEL 4.4 20/80] f2fs: move dir data flush to write checkpoint process Sasha Levin
2019-01-28 16:23 ` Sasha Levin
2019-01-28 16:23 ` [PATCH AUTOSEL 4.4 21/80] f2fs: fix wrong return value of f2fs_acl_create Sasha Levin
2019-01-28 16:23 ` Sasha Levin
2019-01-28 16:23 ` [PATCH AUTOSEL 4.4 22/80] sunvdc: Do not spin in an infinite loop when vio_ldc_send() returns EAGAIN Sasha Levin
2019-01-28 16:23 ` [PATCH AUTOSEL 4.4 23/80] nfsd4: fix crash on writing v4_end_grace before nfsd startup Sasha Levin
2019-01-28 16:23 ` [PATCH AUTOSEL 4.4 24/80] arm64: ftrace: don't adjust the LR value Sasha Levin
2019-01-28 16:23 ` [PATCH AUTOSEL 4.4 25/80] ARM: dts: mmp2: fix TWSI2 Sasha Levin
2019-01-28 16:23 ` Sasha Levin [this message]
2019-01-28 16:23 ` [PATCH AUTOSEL 4.4 27/80] x86/fpu: Add might_fault() to user_insn() Sasha Levin
2019-01-28 16:23 ` [PATCH AUTOSEL 4.4 28/80] media: DaVinci-VPBE: fix error handling in vpbe_initialize() Sasha Levin
2019-01-28 16:23 ` [PATCH AUTOSEL 4.4 29/80] smack: fix access permissions for keyring Sasha Levin
2019-01-28 16:23 ` [PATCH AUTOSEL 4.4 30/80] usb: hub: delay hub autosuspend if USB3 port is still link training Sasha Levin
2019-01-28 16:23 ` [PATCH AUTOSEL 4.4 31/80] timekeeping: Use proper seqcount initializer Sasha Levin
2019-01-28 16:23 ` [PATCH AUTOSEL 4.4 32/80] ARM: dts: Fix OMAP4430 SDP Ethernet startup Sasha Levin
2019-01-28 16:23 ` [PATCH AUTOSEL 4.4 33/80] mips: bpf: fix encoding bug for mm_srlv32_op Sasha Levin
2019-01-28 16:23 ` [PATCH AUTOSEL 4.4 34/80] tracing: Have trace_stack nr_entries compare not be so subtle Sasha Levin
[not found] ` <20190128162401.58841-1-sashal-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org>
2019-01-28 16:23 ` [PATCH AUTOSEL 4.4 35/80] iommu/arm-smmu-v3: Use explicit mb() when moving cons pointer Sasha Levin
2019-01-28 16:23 ` Sasha Levin
2019-01-28 16:23 ` [PATCH AUTOSEL 4.4 36/80] sata_rcar: fix deferred probing Sasha Levin
2019-01-28 16:23 ` [PATCH AUTOSEL 4.4 37/80] clk: imx6sl: ensure MMDC CH0 handshake is bypassed Sasha Levin
2019-01-28 16:23 ` [PATCH AUTOSEL 4.4 38/80] cpuidle: big.LITTLE: fix refcount leak Sasha Levin
2019-01-28 16:23 ` Sasha Levin
2019-01-28 16:23 ` Sasha Levin
2019-01-28 16:23 ` [PATCH AUTOSEL 4.4 39/80] i2c-axxia: check for error conditions first Sasha Levin
2019-01-28 16:23 ` [PATCH AUTOSEL 4.4 40/80] udf: Fix BUG on corrupted inode Sasha Levin
2019-01-28 16:23 ` [PATCH AUTOSEL 4.4 41/80] ARM: pxa: avoid section mismatch warning Sasha Levin
2019-01-28 16:23 ` [PATCH AUTOSEL 4.4 42/80] ASoC: fsl: Fix SND_SOC_EUKREA_TLV320 build error on i.MX8M Sasha Levin
2019-01-28 16:23 ` [PATCH AUTOSEL 4.4 43/80] ARM: mmp: fix timer_init calls Sasha Levin
2019-01-28 16:23 ` [PATCH AUTOSEL 4.4 44/80] memstick: Prevent memstick host from getting runtime suspended during card detection Sasha Levin
2019-01-28 16:23 ` [PATCH AUTOSEL 4.4 45/80] tty: serial: samsung: Properly set flags in autoCTS mode Sasha Levin
2019-01-28 16:23 ` [PATCH AUTOSEL 4.4 46/80] KVM: s390: unregister debug feature on failing arch init Sasha Levin
2019-01-28 16:23 ` [PATCH AUTOSEL 4.4 47/80] arm64: KVM: Skip MMIO insn after emulation Sasha Levin
2019-01-28 16:23 ` Sasha Levin
2019-01-28 16:23 ` [PATCH AUTOSEL 4.4 48/80] powerpc/uaccess: fix warning/error with access_ok() Sasha Levin
2019-01-28 16:23 ` Sasha Levin
2019-01-28 16:23 ` [PATCH AUTOSEL 4.4 49/80] mac80211: fix radiotap vendor presence bitmap handling Sasha Levin
2019-01-28 16:23 ` [PATCH AUTOSEL 4.4 50/80] xfrm6_tunnel: Fix spi check in __xfrm6_tunnel_alloc_spi Sasha Levin
2019-01-28 16:23 ` [PATCH AUTOSEL 4.4 51/80] Bluetooth: Fix unnecessary error message for HCI request completion Sasha Levin
2019-01-28 16:23 ` [PATCH AUTOSEL 4.4 52/80] cw1200: Fix concurrency use-after-free bugs in cw1200_hw_scan() Sasha Levin
2019-01-28 16:23 ` [PATCH AUTOSEL 4.4 53/80] drbd: narrow rcu_read_lock in drbd_sync_handshake Sasha Levin
2019-01-28 16:23 ` [PATCH AUTOSEL 4.4 54/80] drbd: disconnect, if the wrong UUIDs are attached on a connected peer Sasha Levin
2019-01-28 16:23 ` [PATCH AUTOSEL 4.4 55/80] drbd: skip spurious timeout (ping-timeo) when failing promote Sasha Levin
2019-01-28 16:23 ` [PATCH AUTOSEL 4.4 56/80] drbd: Avoid Clang warning about pointless switch statment Sasha Levin
2019-01-28 16:23 ` [PATCH AUTOSEL 4.4 57/80] video: clps711x-fb: release disp device node in probe() Sasha Levin
2019-01-28 16:23 ` Sasha Levin
2019-01-28 16:23 ` [PATCH AUTOSEL 4.4 58/80] fbdev: fbmem: behave better with small rotated displays and many CPUs Sasha Levin
2019-01-28 16:23 ` Sasha Levin
2019-01-28 16:23 ` Sasha Levin
2019-01-28 16:23 ` [PATCH AUTOSEL 4.4 59/80] igb: Fix an issue that PME is not enabled during runtime suspend Sasha Levin
2019-01-28 16:23 ` [PATCH AUTOSEL 4.4 60/80] fbdev: fbcon: Fix unregister crash when more than one framebuffer Sasha Levin
2019-01-28 16:23 ` Sasha Levin
2019-01-28 16:23 ` Sasha Levin
2019-01-28 16:23 ` [PATCH AUTOSEL 4.4 61/80] KVM: x86: svm: report MSR_IA32_MCG_EXT_CTL as unsupported Sasha Levin
2019-01-28 16:23 ` [PATCH AUTOSEL 4.4 62/80] NFS: nfs_compare_mount_options always compare auth flavors Sasha Levin
2019-01-28 16:23 ` [PATCH AUTOSEL 4.4 63/80] hwmon: (lm80) fix a missing check of the status of SMBus read Sasha Levin
2019-01-28 16:23 ` [PATCH AUTOSEL 4.4 64/80] hwmon: (lm80) fix a missing check of bus read in lm80 probe Sasha Levin
2019-01-28 16:23 ` [PATCH AUTOSEL 4.4 65/80] seq_buf: Make seq_buf_puts() null-terminate the buffer Sasha Levin
2019-01-28 16:23 ` [PATCH AUTOSEL 4.4 66/80] crypto: ux500 - Use proper enum in cryp_set_dma_transfer Sasha Levin
2019-01-28 16:23 ` [PATCH AUTOSEL 4.4 67/80] crypto: ux500 - Use proper enum in hash_set_dma_transfer Sasha Levin
2019-01-28 16:23 ` [PATCH AUTOSEL 4.4 68/80] cifs: check ntwrk_buf_start for NULL before dereferencing it Sasha Levin
2019-01-28 16:23 ` [PATCH AUTOSEL 4.4 69/80] um: Avoid marking pages with "changed protection" Sasha Levin
2019-01-28 16:23 ` Sasha Levin
2019-01-28 16:23 ` [PATCH AUTOSEL 4.4 70/80] niu: fix missing checks of niu_pci_eeprom_read Sasha Levin
2019-01-28 16:23 ` [PATCH AUTOSEL 4.4 71/80] scripts/decode_stacktrace: only strip base path when a prefix of the path Sasha Levin
2019-01-28 16:23 ` [PATCH AUTOSEL 4.4 72/80] mm/page_owner: clamp read count to PAGE_SIZE Sasha Levin
2019-01-28 16:23 ` [PATCH AUTOSEL 4.4 73/80] ocfs2: don't clear bh uptodate for block read Sasha Levin
2019-01-28 16:23 ` [PATCH AUTOSEL 4.4 74/80] isdn: hisax: hfc_pci: Fix a possible concurrency use-after-free bug in HFCPCI_l1hw() Sasha Levin
2019-01-28 16:23 ` [PATCH AUTOSEL 4.4 75/80] gdrom: fix a memory leak bug Sasha Levin
2019-01-28 16:23 ` [PATCH AUTOSEL 4.4 76/80] block/swim3: Fix -EBUSY error when re-opening device after unmount Sasha Levin
2019-01-28 16:23 ` Sasha Levin
2019-01-28 16:23 ` [PATCH AUTOSEL 4.4 77/80] HID: lenovo: Add checks to fix of_led_classdev_register Sasha Levin
2019-01-28 16:23 ` [PATCH AUTOSEL 4.4 78/80] kernel/hung_task.c: break RCU locks based on jiffies Sasha Levin
2019-01-28 16:24 ` [PATCH AUTOSEL 4.4 79/80] fs/epoll: drop ovflist branch prediction Sasha Levin
2019-01-28 16:24 ` [PATCH AUTOSEL 4.4 80/80] exec: load_script: don't blindly truncate shebang string Sasha Levin
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=20190128162401.58841-26-sashal@kernel.org \
--to=sashal@kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=lkundrak@v3.sk \
--cc=olof@lixom.net \
--cc=stable@vger.kernel.org \
/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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.